python - 将预测映射回 ID - Python Scikit Learn DecisionTreeClassifier

标签 python scikit-learn classification decision-tree valueerror

我有一个具有唯一标识符和其他特征的数据集。看起来像这样

ID      LenA TypeA LenB TypeB Diff Score Response
123-456  51   M     101  L     50   0.2   0
234-567  46   S     49   S     3    0.9   1
345-678  87   M     70   M     17   0.7   0

我将其分为训练数据和测试数据。我正在尝试从训练数据训练的分类器中将测试数据分为两类。我想要训练和测试数据集中的标识符,以便我可以将预测映射回 ID
有没有一种方法可以将标识符列分配为 ID 或非预测器就像我们可以在 Azure ML Studio 或 SAS 中做的那样?

我正在使用 Scikit-Learn 的 DecisionTreeClassifier。这是我的分类器代码。

from sklearn import tree

clf = tree.DecisionTreeClassifier()
clf = clf.fit(traindata, trainlabels)

如果我只是将 ID 包含到 traindata 中,代码会抛出错误:

ValueError: invalid literal for float(): 123-456

最佳答案

不知道您是如何拆分的,我建议您确保 ID 列不包含在您的训练数据中。也许是这样的:

X_train, X_test, y_train, y_test = test_train_split(df.ix[:, ~df.columns.isin(['ID', 'Response'])].values, df.Response)

这将只拆分 DataFrame 中不在 IDResponse 中的值作为 X 值,并拆分 Response 用于 y 值。

但是您仍然无法将 DecisionTreeClassifier 用于此数据,因为它包含字符串。您需要将任何包含分类数据的列(即 TypeATypeB)转换为数字表示形式。我认为 sklearn 最好的方法是使用 LabelEncoder .使用它会将分类字符串标签 ['M', 'S'] 转换为 [1, 2] ,这可以通过 DecisionTreeClassifier 实现>。如果您需要示例,请查看 Passing categorical data to sklearn decision tree .

更新

根据您的评论,我现在了解到您需要映射回 ID。在这种情况下,您可以利用 Pandas 来发挥自己的优势。将 ID 设置为数据的索引,然后进行拆分,这样您将保留所有训练和测试数据的 ID 值。假设您的数据已经在 pandas 数据框中。

df = df.set_index('ID')
X_train, X_test, y_train, y_test = test_train_split(df.ix[:, ~df.columns.isin(['Response'])], df.Response)
print(X_train)
         LenA TypeA  LenB TypeB  Diff  Score
ID
345-678    87     M    70     M    17    0.7
234-567    46     S    49     S     3    0.9

关于python - 将预测映射回 ID - Python Scikit Learn DecisionTreeClassifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43549034/

相关文章:

python - SimpleHTTPServer:其他设备无法连接到服务器

python - 哪一种效率更高?

python - 显示图形而不使用 pydot 保存

image-processing - 用于分类的词袋 - 特征与像素

python - 如何使用 subprocesses.call 并将一个输出通过管道传输到 txt 文件?

python-3.x - 如何在 scikit-learn 管道的步骤之间传递值?

python - scikit-learn 中每个数据拆分的交叉验证指标

machine-learning - 如何从惩罚逻辑回归的拟合管道中提取系数?

computer-vision - Weka - 探索者和实验者结果之间的差异

machine-learning - scikit 多标签分类 : ValueError: bad input shape