我正在为 scikit-learn 的随机森林分类器生成特征向量。特征向量表示9个蛋白质氨基酸残基的名称。有 20 个可能的残基名称。因此,我使用 20 个虚拟变量来表示一个残基名称,对于 9 个残基,我有 180 个虚拟变量。
例如,如果滑动窗口中的 9 个残基是: ARNDCQEGH(每个字母代表一个蛋白质残基的名称),我的特征向量将是:
"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)
在训练和测试 Scikit 的随机森林分类器模型后,我发现它完全不起作用。但是 Scikit 的随机森林可以与我的其他数值数据一起使用。
Scikit 的随机森林可以处理分类变量或虚拟变量吗?如果是这样,您能否提供一个示例来说明它是如何工作的。
这是我设置随机森林的方法:
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 的 bool 特征应该可以工作。如果即使您的森林中有大量决策树,预测准确性也很差,则可能是您的数据过于嘈杂,无法让学习算法不提取任何有趣的想法。
您是否尝试过拟合线性模型(例如 Logistic 回归)作为此数据的基线?
编辑 :实际上,对分类变量使用整数编码对于许多随机决策树模型(例如 scikit-learn 中的 RandomForest 和 ExtraTrees)往往效果很好。
关于python - python scikit-learn随机森林中如何使用虚拟变量表示分类数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15821751/