当前位置: 首页 > 面试题库 >

将分类数据传递到Sklearn决策树

易飞文
2023-03-14
问题内容

关于如何将分类数据编码到Sklearn决策树中,有几篇文章,但是从Sklearn文档中,我们得到了这些。

决策树的一些优点是:

(…)

能够处理数字和分类数据。其他技术通常专用于分析仅具有一种类型的变量的数据集。有关更多信息,请参见算法。

但是运行以下脚本

import pandas as pd 
from sklearn.tree import DecisionTreeClassifier

data = pd.DataFrame()
data['A'] = ['a','a','b','a']
data['B'] = ['b','b','a','b']
data['C'] = [0, 0, 1, 0]
data['Class'] = ['n','n','y','n']

tree = DecisionTreeClassifier()
tree.fit(data[['A','B','C']], data['Class'])

输出以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/sklearn/tree/tree.py", line 154, in fit
    X = check_array(X, dtype=DTYPE, accept_sparse="csc")
  File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 377, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: could not convert string to float: b

我知道在R中可以通过Sklearn传递分类数据,这可能吗?


问题答案:

与接受的答案相反,我更愿意使用Scikit-
Learn提供的工具来实现此目的。这样做的主要原因是可以轻松地将它们集成到管道中。

Scikit-Learn本身提供了很好的类来处理分类数据。你不想编写自定义函数,你应该使用LabelEncoder
专门为此设计的

请参考文档中的以下代码:

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(["paris", "paris", "tokyo", "amsterdam"])
le.transform(["tokyo", "tokyo", "paris"])

这会自动将它们编码为数字,以供您的机器学习算法使用。现在,这也支持从整数返回字符串。您可以通过简单地inverse_transform如下调用来做到这一点:

list(le.inverse_transform([2, 2, 1]))

这将返回['tokyo', 'tokyo', 'paris']

还要注意,对于其他许多分类器,除了决策树(例如逻辑回归或SVM)之外,您还想使用One-
Hot编码
对分类变量进行编码。Scikit-
learn也通过OneHotEncoder该类对此提供支持。

希望这可以帮助!



 类似资料:
  • 主要内容:决策树算法应用,决策树实现步骤,决策树算法应用本节基于 Python Sklearn 机器学习算法库,对决策树这类算法做相关介绍,并对该算法的使用步骤做简单的总结,最后通过应用案例对决策树算法的代码实现进行演示。 决策树算法应用 在 sklearn 库中与决策树相关的算法都存放在 模块里,该模块提供了 4 个决策树算法,下面对这些算法做简单的介绍: 1) .DecisionTreeClassifier() 这是一个经典的决策树分类算法,它提供

  • 我想给@TestConfiguration类中的@Bean发送一个参数,根据参数中的字符串返回不同的AnimalType。有没有可能从一个测试类中进行,或者我需要为每个类设置不同的配置? 这也可以通过构造函数注入实现,但也不可能使用参数调用@TestConfig构造函数,该参数不是bean;

  • 问题内容: 我正在尝试使用Django和D3.js编写非常基本的条形图。我有一个名为play的对象,其中datetime字段称为date。我想做的是显示按月分组的播放次数。基本上我有两个问题: 我如何按月份将这些分组,并计算当月的播放次数 将这些信息从Django转换为D3可用的最佳方法是什么。 现在,我在这里查看了其他答案,并尝试了 这接近于我想要的信息,但是当我尝试将其输出到模板中时,它在月末

  • 问题内容: 我知道如何使用jinja模板将数据从python传递到javascript,但是我想将javascript变量传递到python。我想这样做而无需重新加载页面。那可能吗? 问题答案: 是的,就像monkut所说的那样-我相信您想使用JSON和Javascript / jQuery。 这将允许从客户端到服务器的通讯,然后再返回。 我发现的最适用的示例是在Flask片段/模式中:http

  • 我尝试将学生名字从main类传递到students类,但在运行时出错。 主类是 学生的班级是 此外,我如何使我的程序检查用户是否输入字符串? 谢谢大家

  • 问题内容: 我的图像是我试图将数据(变量)从一个阶段传递到另一阶段,但是当我尝试在第二阶段访问它们时,它们为空。mainWindow的代码。前往window1 // window1类: 如果我想访问以前收到的标题,则为null 初始化显示应该为“ Window1”时显示为null} 问题答案: 在加载FXML文件的过程中,将调用该方法-换句话说,在调用时将调用该方法。 显然,这是 在 调用 之前