当前位置: 首页 > 知识库问答 >
问题:

将预测映射回IDs-Python Scikit学习DecisionTreeClassifier

柴瀚
2023-03-14

我有一个具有唯一标识符和其他功能的数据集。看起来是这样的

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
有没有一种方法可以像在Azure ML Studio或SAS中那样,将标识符列指定为ID或非预测器

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

from sklearn import tree

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

如果我只是将ID包括在列车数据中,则代码会抛出一个错误:

ValueError:float()的文本无效:123-456

共有1个答案

江阳冰
2023-03-14

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

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

对于X值,将仅拆分IDResponse中不存在的数据帧中的值,对于y值,将拆分Response

但是您仍然无法将DecisionTreeClassifier用于此数据,因为它包含字符串。您需要将任何包含分类数据的列,即TypeATypeB转换为数字表示。在我看来,sklearn实现这一点的最佳方法是使用LabelEncoder。使用此选项将分类字符串标签['M','S']转换为[1,2],可使用DecisionTreeClassifier实现。如果您需要一个示例,请看一下将分类数据传递给sklearn决策树。

最新消息

根据您的评论,我现在理解您需要映射回ID。在这种情况下,您可以利用熊猫为您带来优势。将ID设置为数据索引,然后进行拆分,这样您将保留所有列车和测试数据的ID值。假设您的数据已经在一个数据帧中。

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
 类似资料:
  • 本文向大家介绍Docker学习笔记之Docker端口映射,包括了Docker学习笔记之Docker端口映射的使用技巧和注意事项,需要的朋友参考一下 最近在学习docker,今天了解了Docker端口映射,给自己留个小笔记,也分享给大家 为什么要端口映射? 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令:doc

  • 本文向大家介绍hibernate一对多关联映射学习小结,包括了hibernate一对多关联映射学习小结的使用技巧和注意事项,需要的朋友参考一下 一对多关联映射  映射原理        一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端。关联关系都是由多端维护,只是在写映射时发生了变化。  多对一和一对多的区别   多对一和一对多的区别在于维护的关系不同:

  • 本文向大家介绍Python中字典映射类型的学习教程,包括了Python中字典映射类型的学习教程的使用技巧和注意事项,需要的朋友参考一下 字典是python语言中唯一的映射类型,用花括号{}表示,一个字典条目就是一个键值对,方法keys()返回字典的键列表,values()返回字典的值列表,items()返回字典的键值对列表。字典中的值没有任何限制,它们可以是任意python对象,但字典中的键是有类

  • 我对机器学习很陌生。对不起,如果我的英语有任何错误。 我使用weka J48分类来预测是真是假。我有将近999K的训练套件,我用来训练模型。我使用了3倍的交叉验证方法来训练模型,使我的准确率达到了约84%。 现在在存储模型之后。我试着在50k数据集上测试它。结果非常糟糕,其中50%是不匹配的。我有11个属性,包括名词和数字字段。 我不知道为什么会这样。 我有两个问题。 我怎样训练才能在测试集中表现

  • 我们有一些ML模型在Azure ML Studio平台上运行(初始拖动) 好消息/坏消息是我们要训练的数据非常小(数据库中有几百条记录)。这是非常不完美的数据,做出了非常不完美的回归预测,所以误差是可以预料的。那很好。对于这个问题,这很好。因为问题是,当我测试这些模型时,预测太完美了。我不明白我做错了什么,但我显然做错了什么。 (在我看来)明显值得怀疑的事情是,要么我在测试数据上进行训练,要么通过

  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 我想询问一个人,并得到以下回应: 但在需要时,我还想包含字段,并获得如下内容: 但是,我得到的只是手机ID,就像这样: 这是两个有问题的领域:

  • 在你的代码合并,压缩或编译后,保持客户端代码可读性和可调试性。使用Source Maps(源码映射)将源代码映射到已编译的代码。 TL;DR 使用Source Maps(源码映射)将压缩代码映射到源代码。然后,您可以在其原始源代码中读取和调试编译的代码。 仅使用能够生成Source Maps(源码映射)的预处理器。 验证您的web 服务器是否可以为Source Maps(源码映射)提供服务。 开始