如何在python scikit-learn随机森林中使用伪变量表示分类数据 [英] How to use dummy variable to represent categorical data in python scikit-learn random forest

查看:584
本文介绍了如何在python scikit-learn随机森林中使用伪变量表示分类数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为scikit-learn的随机森林分类器生成特征向量.特征载体代表9个蛋白质氨基酸残基的名称.有20种可能的残基名称.因此,我使用20个虚拟变量代表一个残基名称,对于9个残基,我有180个虚拟变量.

I'm generating feature vector for random forest classifier of scikit-learn . The feature vector represents the name of 9 protein amino acid residues. There are 20 possible residue names. So, I use 20 dummy variables to represent one residue name, for 9 residue, I have 180 dummy variables.

例如,如果滑动窗口中的9个残基为:ARNDCQEGH(每个字母代表一个蛋白质残基的名称),我的特征向量将为:

For example, if the 9 residues in the sliding window are: ARNDCQEGH (every one letter represent a name of a protein residue),my feature vector will be:

"True\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tFalse\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\t
False\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tTrue\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\tFalse\n" 

此外,我尝试使用(1,0)替换(True,False)

Also, I tried to use (1,0) to replace (True,False)

在训练和测试了Scikit的随机森林分类器模型后,我发现它完全不起作用.但是Scikit的随机森林可以与我的其他数值数据一起使用.

After training and testing Scikit's random forest classifier model, I found it totally did not work. But Scikit's random forest can work with my other numerical data.

Scikit的随机森林可以处理分类变量还是虚拟变量?如果是这样,您能否提供一个示例说明其工作原理.

Can Scikit's random forest deal with categorical variable or dummy variable? If so, could you provide an example showing how it works.

这是我设置随机森林的方法:

Here is how I set the random forest:

clf=RandomForestClassifier (n_estimators=800, criterion='gini', n_jobs=12, max_depth=None, compute_importances=True, max_features='auto', min_samples_split=1,  random_state=None)

非常感谢!

推荐答案

使用编码为0和1的布尔型功能应该可以.如果即使在森林中有大量决策树的情况下,预测准确性也很差,则可能是因为您的数据太嘈杂,以至于无法使学习算法没有任何有趣的想法.

Using boolean features encoded as 0 and 1 should work. If the predictive accuracy is bad even with a large number of decision trees in your forest it might be the case that your data is too noisy to get the learning algorithm to not pickup any think interesting.

您是否尝试将线性模型(例如Logistic回归)作为此数据的基线?

Have you tried to fit a linear model (e.g. Logistic Regression) as a baseline on this data?

编辑:实际上,对于许多随机决策树模型(例如scikit-learn中的RandomForest和ExtraTrees),对整数变量使用整数编码往往效果很好.

Edit: in practice using integer coding for categorical variables tends to work very well for many randomized decision trees models (such as RandomForest and ExtraTrees in scikit-learn).

这篇关于如何在python scikit-learn随机森林中使用伪变量表示分类数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆