机器学习杂谈

0?wx_fmt=jpeg

本文随便谈谈机器学习中应该注意的问题。

1. 特征预处理

机器学习中的输入数据必须是数值类型的,但是现实问题中不免会有一些类别类型的数据,比如性别,颜色,婚姻状况等等,这些类别的数据是无法直接用于机器学习的。那么如何将这类数据转变成数值类型的数据呢?通常可以利用one hot 编码或者标签编码将这类数据变换成数值类型的数据。

比如性别,性别可以分为男,女,这种数据可以利用标签编码来将其变换成数值类型的特征,比如男变换成0,女变换成1。如果性别中还包含未知,或者保密,此时可以将数据通过one hot 编码将其变成四个变量,性别_男,性别_女,性别_未知,性别_保密,这四个变量的取值都是0,1取值的,某个用户的性别属性属于哪种,哪个变量取值就是1,其余变量取值为0。比如某个用户性别为男,那么对应的特征为[性别_男,性别_女,性别_未知,性别_保密]=[1,0,0,0]。

容易看出,如果利用one hot 编码会使得特征个数增加,如果利用标签编码,不会使得特征个数增加,这是因为利用标签编码变换特征时,只是将原来的特征变换为0或者1。

2. 时间序列数据的交叉验证

针对时间序列类型的数据集,交叉验证不能用一般的k折交叉验证或者留一法来验证。这是因为,时间序列类型的数据比较特殊,在某个时间段的特征在另一个时间段不一定具有相同的特征。另外,如果采用采样的方法,有可能导致验证时会在先于训练集中时间点的数据上验证,这种测试是不合理的。

对于时间序列类型的数据,可以利用前向链式策略来验证,比如k折交叉验证:

fold 1 : training [1], test [2]

fold 2 : training [1 2], test [3]

......

fold k : training [1 2 ... k], test [k+1]

其中下标表示时间序列的单位,比如日,月,年等。

3. 缺失值

给定一个数据集,如果其中某个特征中缺失值的比例比较高,处理的方法可以参考以下几种做法。

第一种,将缺失值设为一种特殊类别的数据,将其作为一种特殊情形。

第二种,将相应的特征直接剔除掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值