我将两列pandas数据帧转换为numpy数组,以用作机器学习问题的功能和标签。
代码:
train_index, test_index = next(iter(ShuffleSplit(len(labels), train_size=0.2, test_size=0.80, random_state=42)))
features_train, features_test, = X[train_index], X[test_index]
labels_train, labels_test = labels[train_index], labels[test_index]
clf = DecisionTreeClassifier()
clf.fit(features_train, labels_train)
pred = clf.predict(features)
print pred
功能目前是一个频率计数数组(我之前使用了CountVectorizer来拟合和转换我原来的pandas数据帧列)。我有完整的标签列表存储为pred,但我希望每个标签都有相应的功能,这样我就可以将标签列表返回给我的pandas数据帧。
答案 0 :(得分:2)
预测的排序与传递的数据相同(并且正如@Ulf指出的那样 - 你在这里错误地使用术语“特征”,特征是矩阵的一列,你使用countvectorizer计算的特定对象;行是观察,样本,数据点 - 这就是您目前所称的功能)。因此,为了查看样本标签对,您可以简单地将它们拼接在一起:
pred = clf.predict(features)
for sample, label in zip(features, pred):
print sample, label
如果您确实希望恢复每个列的含义,那么您的CountVectorizer就是您的家伙。代码中的某个地方你创建了它
vectorizer = CountVectorizer( ... )
后来用它
... = vectorizer.fit_transform( ... )
现在您可以使用它来重新转换样品
pred = clf.predict(features)
for sample, label in zip(features, pred):
print vectorizer.inverse_transform(np.array([sample])), label