python - 如何使用虚拟变量表示 python scikit-learn 随机森林中的分类数据

标签 python scikit-learn scikits dummy-data

我正在为 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 特征应该可行。如果即使您的森林中有大量决策树,预测准确性也很差,这可能是因为您的数据过于嘈杂,以至于学习算法无法拾取任何有趣的想法。

您是否尝试过将线性模型(例如逻辑回归)拟合为该数据的基线?

编辑:在实践中,对分类变量使用整数编码往往适用于许多随机决策树模型(例如 scikit-learn 中的 RandomForest 和 ExtraTrees)。

关于python - 如何使用虚拟变量表示 python scikit-learn 随机森林中的分类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821751/

相关文章:

python - 如何在 Python 中使用 line.rstrip()?

python - 乘以来自Python中两个单独列表的 float

Python:将带有参数的函数传递给函数

python - 苹果电脑 : Error importing scikits while it has been installed

python - 在Python中使用套接字的剪刀石头布游戏

java - 将 python sklearn 模型导出到生产环境 (java/c++)

python - 如何在python中返回通过sklearn的函数KernelDensity估计的分布的平均值(或期望值)?

python - (Python) 使用 scikits bootstrap 估计回归参数置信区间

python - 使用 Sci-Kit 的 Count Vectorizer 转换输入以仅匹配词汇表中的精确单词

python - 如果 Python 生成器不再使用但尚未达到 StopIteration,它会被垃圾收集吗?