我怎样才能获得相应的功能?

时间:2016-04-02 07:42:33

标签: python arrays numpy pandas machine-learning

我将两列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数据帧。

1 个答案:

答案 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