【发布时间】:2015-01-12 09:02:39
【问题描述】:
我正在尝试找出在 scikit-learn 中预测分类特征的最佳通用方法,并希望得到一些建议。特别是,我可以只做一个决策树,它可以很好地处理分类数据,但我想尝试一些其他的多分类模型。我可以使用 one-hot 方法将分类特征转化为大量的二元特征。
训练集示例:
Age| Color | City | Freq
35 |'Orange'|'Seattle' | '<30'
55 |'Black' |'Portland'| '>30'
75 |'Red' |'Seattle' | 'Never'
可以很容易地改成:
Age| Color |City | Freq
35 | 1 0 0 | 1 0 | 1 0 0
55 | 0 1 0 | 0 1 | 0 1 0
75 | 0 0 1 | 1 0 | 0 0 1
我可以将其拆分为数据目标对:
X= Age| Color |City
35 | 1 0 0 | 1 0
55 | 0 1 0 | 0 1
75 | 0 0 1 | 1 0
y= Freq
1 0 0
0 1 0
0 0 1
然后我可以使用各种 SK-Learn 分类模型来处理这个问题,但我不清楚这三个“频率”特征是否被理解为相互排斥。因此我的问题是:
除了决策树之外,是否可以使用广义分类例程来预测分类特征?
如何确保一组二元特征保持互斥?
此外,是否有可能以智能连接三个二元特征的度量来呈现结果?
感谢您的帮助!
【问题讨论】:
-
分类输出变量等价于分类问题。你可以只是一个普通的分类器。这是你的情况吗?或者我理解错了
-
所以你是说虽然训练数据不需要是分类数据,但训练目标不需要?文档提到 - 4.2.4。对分类特征进行编码:“将分类特征转换为可与 scikit-learn 估计器一起使用的特征的一种可能性是使用 OneHotEncoder 中实现的 one-of-K 或 one-hot 编码。该估计器将每个分类特征转换为m 个可能的值转换为 m 个二进制特征,只有一个处于活动状态。”,所以我认为目标也必须转换。
-
只要你明确地使用分类算法比输出变量不是问题。可能你必须用数字替换字符串
y=(a,a,b,c,a,c) -> y=(1,1,2,3,1,3)
标签: machine-learning scikit-learn classification categorical-data