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-learn-15]:算法-决策树-分类问题代码详解