python - 如何为 DNNClassifier 将 pd.DataFrame 转换为 tf.data.Dataset(或使用 insted pd.DataFrame)
问题描述
我有这个警告。
更新说明:要构建输入管道,请使用tf.data
模块。
我进行了一些搜索,但无法弄清楚 tf.data.Dataset 背后的逻辑,因此无法将 pd.DataFrame 转换为 tf.data.Dataset。
我还需要代码末尾的预测帮助,我想不出将预测(高概率输出)与标签进行比较的正确方法。
注意:数据没有列名,所以我在列中添加了 a1 到 a784 的名称,这样我就可以将它们分配给 feature_columns。
谢谢是提前。
这是代码:
import numpy as np
import pandas as pd
import seaborn as sns
import tensorflow as tf
from sklearn import metrics
from tensorflow.python.data import Dataset
mnist_df = pd.read_csv("https://download.mlcc.google.com/mledu-datasets/mnist_train_small.csv",header=None)
mnist_df.describe()
mnist_df.columns
hand_df = mnist_df[0]
matrix_df = mnist_df.drop([0],axis=1)
matrix_df.head()
hand_df.head()
#creating cols array and append a1 to a784 in order to name columns
cols=[]
for i in range(785):
if i!=0:
a = '{}{}'.format('a',i)
cols.append(a)
matrix_df.columns = cols
mnist_df = mnist_df.head(10000)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(matrix_df, hand_df, test_size=0.3, random_state=101)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
matrix_df = pd.DataFrame(data=scaler.fit_transform(matrix_df),
columns=matrix_df.columns,
index=matrix_df.index)
#naming columns so I will not get error while assigning feature_columns
for i in range(len(cols)):
a=i+1
b='{}{}'.format('a',a)
cols[i] = tf.feature_column.numeric_column(str(b))
matrix_df.head()
input_func = tf.estimator.inputs.pandas_input_fn(x=X_train,y=y_train,
batch_size=10,num_epochs=1000,
shuffle=True)
my_optimizer = tf.train.AdagradOptimizer(learning_rate=0.03)
my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)
model = tf.estimator.DNNClassifier(feature_columns=cols,
hidden_units=[32,64],
n_classes=10,
optimizer=my_optimizer,
config=tf.estimator.RunConfig(keep_checkpoint_max=1))
model.train(input_fn=input_func,steps=1000)
predict_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test,
batch_size=50,
num_epochs=1,
shuffle=False)
pred_gen = model.predict(predict_input_func)
predictions = list(pred_gen)
predictions[0]
解决方案
推荐阅读
- jackson2 - JacksonFactory 的 gradle 依赖是什么?
- java - 如何在hadoop中组合两个独立映射器的结果?
- angular - Angular Bootstrap ng-select 对齐
- sql - 如果今天没有数据,则查询上一行数据
- python - 如何将表格输出到从 PDF 文件中提取的 csv 文件中?
- java - 在目标文件中更改位置后,Tycho 无法解析间接引用的依赖项
- python - Python:从输入的日期和时间中减去 6 小时?
- sql - 在 Eclipse 链接中记录更改
- java - JavaFx 自定义控件和 Spring DI
- here-api - Here API RouteMatch - 在单个请求中处理超过 150 个航点