错误摘要:
我收到以下错误:
TypeError: Expected binary or unicode string, got [
背景:
我有几个功能是用户活动的历史记录。我试图y_train
根据他们不同类型动作的历史来预测给定用户是否会采取动作(在下面的列表中用 0 或 1 表示)。例如,一个特征可能是button_A_click_per_day
,给定用户的历史记录可能是过去 365 天内每天点击按钮 A 的向量。
我的代码的相关片段如下:
import tensorflow as tf
# Build feature columns for classifier
feature_columns = []
for key in X_train:
col = tf.feature_column.numeric_column(
key=key,
shape=max_width,
)
feature_columns.append(col)
# Build classifier
classifier = tf.estimator.DNNClassifier(
feature_columns=my_feature_columns,
hidden_units=[10, 10],
n_classes=2,
)
X_train 的结构如下:
>>> X_train['<feature_name>']
129 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
...
1294 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
860 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...
Name: <feature_name>, Length: 1377, dtype: object
我的火车输入功能如下:
def train_input_fn(features, labels, batch_size):
dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))
dataset = dataset.shuffle(buffer_size=1000).repeat(count=None).batch(batch_size)
return dataset.make_one_shot_iterator().get_next()
最后,当发出以下命令时...
classifier.train(
# input_fn is a fn that takes not arguments and returns an iterator.
input_fn=lambda: train_input_fn(X_train, y_train, batch_size=100),
steps=1000,
)
我得到错误:
~/.pyenv/versions/anaconda3-5.0.1/lib/python3.6/site-packages/tensorflow/python/util/compat.py in as_bytes(bytes_or_text, encoding)
63 else:
64 raise TypeError('Expected binary or unicode string, got %r' %
---> 65 (bytes_or_text,))
66
67
TypeError: Expected binary or unicode string, got [0.0, 0.0, 0...
我的问题:
- 你知道我做错了什么来得到这个错误吗?
- 有没有更好的方法来对历史特征进行建模?