scikit-learn第一篇:关于使用sklearn建模中数据处理的思考

2017/07/13 scikit-learn

关于使用sklearn建模中数据处理的思考

学习感受和体会

sklearn作为目前数据挖掘和机器学习非常流行的库,使用者越来越多。 我也是最近两年开始学习使用的,涉及到模型方面也主力用sklearn。

sklearn虽然非常强大,而且文档齐全,但是sklearn模块化非常明显,不同模块间功能上并没有固定的联系,所以一开始学习的时候,经常熟悉了这个模块,却不知道该用在哪里,什么时候用。

这种困惑在数据预处理时感受尤为明显,可能经常搞不清楚哪个特征该用哪种处理方法,是先处理缺失值还是先选择特征?,当然这和自身实践操作经验缺乏也有关系,所谓孰能生巧,做多了自然也就OK了。

为了能更深入的理解sklearn这个库,当时傻了吧唧的用了一周时间做了一张能当壁纸用的思维导图,很长很长的那种,感觉自己好蠢,哈哈。不过就是这个图我看着它,把它放大缩小好多次以后,自己才对机器学习有了感觉。

后来读到一位大神关于单机特征工程的文章,瞬间有种醍醐灌顶的感觉。个人理解就是模型建立时思路要站在高处看全局,明白目标是什么,然后构建自己的处理流程(类似spss只不过它比较自动化):数据准备、数据处理、建模、调参、预测、评估。

其实时间大部分消耗在数据处理上了,不同的特征它的处理方式都不同,比如缺失值的填补,连续型的一般填补均值,而离散型的则是填补众数,如果你上来一竿子整体处理,可能就会出现特征是性别0或1,结果缺失值填充上0.5的笑话。自己总结一下关于sklearn在数据处理方面的内容,没事看看给自己洗洗脑子挺好。

可能遇到的问题

  1. 算法一般不支持使用定性特征包括类别Y也是,通常支持定量特征输入
  2. 存在缺失值,算法是不允许缺失值存在,无法建模
  3. 数据量纲不同,规格差异太大
  4. 连续型变量,可能只需要考虑几个值作为标准
  5. 数据分布不均匀或者模型存在非线性关系

充分利用sklearn进行数据处理对建模非常重要! 一般分为三步:预处理、特征选择、和降维 下面是我总结的思维导图:

第一步:数据预处理

yuchuli

第二步:特征选择

xuanze

第三步:降维

jiangwei

声明:未经本人同意,严禁转载,违者必究

Show Disqus Comments

Search

    欢迎关注我的微信公众号

    闷骚的程序员

    Table of Contents