【发布时间】:2016-07-22 02:28:24
【问题描述】:
我将 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
Features 当前是一个频率计数数组(我之前使用了一个 CountVectorizer 来适应和转换我原来的 pandas 数据框列)。我有存储为 pred 的完整标签列表,但我想要每个标签的相应功能,以便我可以将标签列表返回到我的 pandas 数据框。
【问题讨论】:
-
在这里,您将获得两组行(训练和测试)并将结果值放入变量 features_*。看起来您正在调用您的示例、功能。这是机器学习中的一大禁忌!特征是数据集的属性,通常是列,因此阅读此代码非常混乱。但是,由于您预测“特征”(我想这是您的(样本,特征)矩阵,那么结果数组 pred 应该正确排序,您可以将其直接放回您的数据框中。
-
嗯。这是有道理的,但我的样本本质上是我的特征,因为除了我希望它们拥有的标签(类似于特征/样本)之外,我没有关于它们的任何其他信息;我正在使用这个 ML 过程来将样本合并到相应的标签中。我可以保持我的代码不变,只使用@lejlot 的答案就可以了吗?
标签: python arrays numpy pandas machine-learning