遇到一个问题,使用spark-mllib做逻辑回归的时候,有些特征属性是地区、婚姻状态之类的,这些特征如何设置为数值变量呢?
比如说地区的变量有:上海、北京、杭州、广州,那在转换成训练数据时应该如何转换?
比如地区是第一列:
label area sex ...
1 上海 男 ...
0 北京 女 ...
性别男女,可以转成0、1的值,那地区应该如何处理呢?
遇到一个问题,使用spark-mllib做逻辑回归的时候,有些特征属性是地区、婚姻状态之类的,这些特征如何设置为数值变量呢?
比如说地区的变量有:上海、北京、杭州、广州,那在转换成训练数据时应该如何转换?
比如地区是第一列:
label area sex ...
1 上海 男 ...
0 北京 女 ...
性别男女,可以转成0、1的值,那地区应该如何处理呢?
把所有维度变量都换成dimension_value的形式, 每个维度假如有N个不同值, 就生成N-1个特征. 这样就区分出来了
性别(有2个不同值, 生成1个特征) => 性别_男 取值1 or 0
城市(假如有10个, 生成9个特征) => 城市_1, 城市_2, ..., 城市_9 取值1 or 0, 所以前9个城市在这9个特征上会有一个值为1, 第10个城市在这9个特征上都为0
1、对这种变量,可以采取one-hot编码。具体怎么用可以百度。
2、one-hot的缺点是忽略了值之间的联系,我们也可以用经纬度的特征来代替中文。
3、更深层次的可以提取该城市的人口、GDP、....等其他信息来补充。