scikit,分类列,决策树

Posted

技术标签:

【中文标题】scikit,分类列,决策树【英文标题】:scikit, catagorical columns, decision tree 【发布时间】:2016-05-31 16:56:46 【问题描述】:

我确实找到了关于 scikit 分类变量的线索。但我找不到一个简单的答案。我确实意识到在构建决策树时,sklearn 会针对分类数据出错,并且有针对 Vectorizer 等的建议。我尝试了所有东西,但我无法创建决策树。我的表有很多带有字符串的列,我尝试了矢量化器、多标签二进制化器等。似乎没什么用。我无法 export_graphviz 并显示树,因为根本没有树。我对此很陌生。 我真诚地请求帮助我了解如何处理这些列。我将数据拆分为 80-20 以进行训练和测试。然后我正在尝试建立一棵树。只是一段快速的代码:

  dtree=DecisionTreeClassifier(random_state=0)
  mlb = preprocessing.MultiLabelBinarizer()
  n_train = mlb.fit_transform(train)
  n_test = mlb.transform(test) 
  dec_tree=dtree.fit(n_train,n_test)

我确实得到了这个答案,但我很困惑:

  DecisionTreeClassifier(class_weight=None, criterion='gini',  
        max_depth=None,
        max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
        min_samples_split=2, min_weight_fraction_leaf=0.0,
        random_state=0, splitter='best')

请告知如何进行。

【问题讨论】:

【参考方案1】:

为了使分类器可以使用您的分类变量,一种可能性是使用来自 scikit-learn 的OneHodEncoder。

您应该注意,没有变量的级别出现次数太少。如果您不想或无法手动检查,请使用VarianceThreshold 变量方差的阈值。


如果您使用 pandas 的其他可能性 DataFrame 作为结构,pandas.get_dummies(DataFrame["variable"]) 将为您构建虚拟变量。

【讨论】:

谢谢@MathieuB,作为快速修复,我将整数值分配给字符串类。我会尝试你的建议,如果我有进一步的疑问,我会尽快通知你。再次感谢! @Arvin 不客气。如果有用,请不要忘记接受答案并点赞;) @Mathieu B 很抱歉,我现在没有足够的声望点来投票:D。【参考方案2】:

尝试this 对您的功能进行编码。您应该使用您的标签(您想要预测的列)作为 dtree.fit() 函数中的第二个参数,但您使用您的测试数据作为第二个参数。 检查this以了解正确使用DecisionTreeClassifier拟合函数的方法

【讨论】:

以上是关于scikit,分类列,决策树的主要内容,如果未能解决你的问题,请参考以下文章

关于决策树和随机森林分类器(scikit)的疑问

scikit-learn决策树算法类库使用小结

[机器学习与scikit-learn-15]:算法-决策树-分类问题代码详解

如何在 Scikit Learn 决策树中根据分类变量拆分节点?

scikit-learn 决策树 分类问题

scikit-learn 默认使用哪种决策树算法?