我正在尝试使用TensorFlow编写一个简单的深入机器学习模型。我使用我在Excel中合成的玩具数据集来使模型工作和接受数据。我的代码如下:
import pandas as pd
import numpy as np
import tensorflow as tf
raw_data = np.genfromtxt('ai/mock-data.csv', delimiter=',', dtype=str)
my_data = np.delete(raw_data, (0), axis=0) #deletes the first row, axis=0 indicates row, axis=1 indicates column
my_data = np.delete(my_data, (0), axis=1) #deletes the first column
policy_state = tf.feature_column.categorical_column_with_vocabulary_list('policy_state', [
'AL', 'CA', 'MI'
])
modern_classic_ind = tf.feature_column.categorical_column_with_vocabulary_list('modern_classic_ind', [
'0', '1'
])
h_plus_ind = tf.feature_column.categorical_column_with_vocabulary_list('h_plus_ind', [
'0', '1'
])
retention_ind = tf.feature_column.categorical_column_with_vocabulary_list('retention_ind', [
'0', '1'
])
feature_columns = [
tf.feature_column.indicator_column(policy_state),
tf.feature_column.indicator_column(modern_classic_ind),
tf.feature_column.indicator_column(h_plus_ind)
]
classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="/tmp/ret_model")
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array(my_data[:, 0:3], dtype=str)},
y=np.array(np.array(my_data[:, 3], dtype=str)),
num_epochs=None,
shuffle=True)
classifier.train(input_fn=train_input_fn, steps=2000)不幸的是,我得到了以下错误。我已经尝试过从csv文件中剪裁标签,而不是离开它们,命名特性列不同的东西,并改变numpy数组的类型。错误仍然存在。
ValueError: Feature h_plus_ind is not in features dictionary.
如果删除h_plus_ind,它只会将错误抛到另一列上。
发布于 2017-12-04 16:06:59
当使用tf.feature_columns时,您在input_fn中输入的数据应该具有与以前创建的功能列相同的键。因此,您的x of train_input_fn应该是一个字典,其中的键以feature_columns命名。
一个模拟的例子:
x = {"policy_state": np.array(['AL','AL','AL','AL','AL']),
"modern_classic_ind": np.array(['0','0','0','0','0']),
"h_plus_ind": np.array(['0','0','0','0','0']),}侧面的 :
开发人员google提供的这个伟大的文章可能是一个很好的读物,因为它引入了一种使用csv API从csv文件直接创建input_fn的新方法。它具有更好的内存管理,避免将所有数据集加载到内存中。
发布于 2018-08-03 09:43:04
我也有同样的问题,但是当我检查我的数据库列的名称时,列的名称出现了一个小错误。看看你专栏的名字。
发布于 2022-02-01 08:34:35
如果使用已存在的数据集,则建议重命名这些列。
https://stackoverflow.com/questions/47635507
复制相似问题