[关闭]
@BruceWang 2018-01-30T09:13:05.000000Z 字数 2415 阅读 2515

机器学习中特征工程,如何进行数据分析嘞?

CSDN价值两万的AI课程


如果你做过数据挖掘,或者还是小白,你就会发现当你拿到数据之后根本不能用好吗?
或者当你直接拿到别人的数据之后,
一大团糟, 那么你拿到这些数据怎么办?

可能你知道可以:

一、 通过新增加一个或几个feature,如果cv分数上去了,就增加这个feature,如果cv分数没有上去,就舍弃这个feature
弊端:如果你舍弃的两个feature联合之后才有作用呢? 那岂不是丢失不少东西?

二、 数值型特征加减乘除、这样就可以挖掘出新特征咯!具体问题具体对待。

三、 对于其他特征可以聚类、PCA降维等,后续会讲到相关处理方法。

还有么?有! 这文章就是为你而生的、 Let's do do do do ... it!

1. 数据探索

有助于选择适合的预处理和建模方法

1. 数据质量分析

1. 缺失值(Xgboost可以自动处理) 以及冷处理(就是不管它~~哈哈)

列角度:每个特征的确实数量,删除缺失值太多的特征列(具体问题具体对待)确实比例。
行角度:就是每一个样本, 删除缺失值的样本(比如你是黑户)

对缺失值进行插补(csikit-learn中Imputer)

  1. 均值:mean 均值对噪声敏感
  2. 中位数:median
  3. 众数:most_frequent

2. 异常值(Outlier)不合群呗~

2. 特征分布特性分析

  1. 统计量
    处理方法:(小提琴法)

核密度估计

order = [low, medium, high]
season.violinplot(x='interest_level', y='price', data=train, order=order 
  1. 直方图
    histogram,每个区域出现的次数
    也可看作概率密度函数的估计(可以使用season.distplot(train.price.values, bins=5, kde=True))

3.特征之间的相关性

相关性可以通过散点图来发现的,相关性系数的计算就是一个公式。
特征和标签之间相关。
特征与特征之间强相关意味着信息有问题(如果系数大于0.5就意味着很强了)

2. 数据预处理

from sklearn.preprocessing import ...

1. 数据取值范围缩放

2.特征编码

1. 二值化(Binarier)

设置一个阈值

2. 多项式编码(PolynomialFeatures)

对于数值型变量,加乘、开方、等。

3. 标签编码(LabelEncoder)

给每个类一个独一无二的数字化ID, 对于非线性的基于树模型的算法很有用

4. 独热编码(OneHotEncoder)

对类别型数据转换为数值型

5. 均值编码(大概举个例子、看看?)

将特征的每个可能的取值k编码位它对应标签取c值的概率(即p(y=c|x=k))
对于分类问题,设标签取值共有C类,纳米编码特征就是C - 1维

具体详细过程大家可以看这里

3.特征处理方式

1.数值型特征

  1. 做对数log变换(我们认为x与y不是线性变换的时候,降低大值的影响,比如价格型变量)可以改善数据的线性度

    train.SalePrice = np.loglp(train.SalePrice)

  2. 多项式扩展数值特征(认为x与y是不是线性关系,比如我们认为)
    其实就是多项式编码

2. 类别型特征

  1. 二值化 使用0或者1代表
  2. 标签编码 LabelEncoder:用有序数据对不连续的数字文本编号。
    • 数字表示房屋的质量,分别是数字1,2,3 表示质量多好。
    • 存储量小
  3. 独热编码 如果不希望数据有序数关系

    • 数据 有多少类就设置成多少维
    • 输入是数值型特征先使用标签编码,然后再使用独热编码
    • 缺点是存储要求高,通常一般有K<10
  4. 对高基数(也称高势集)类别的特征(就是K很大):有成百上千不同的取值(邮政编码、街道名称

    • 或采用均值编码,在贝叶斯架构下,利用标签变量,确定适合的特定编码方式。
    • 采用聚类,然后可以使用独热编码,再则就是使用PCA降维。

数据特征离散化

  1. 将数值属性转换为类别表示更有意义

    • 比如预测用户是否拥有某款衣服可以讲年龄划分为1-10,11-18,19-25...
    • 房屋的离街道的距离:远、中、近。
  2. 了解数据领域的背景知识。

  3. 可以采用聚类技术实现分组,
    注意:如果数据的准确率很重要,离散化不合适。

小结:
1. 知道数据的物理意义(领域专家), 设计更多的特征
- 房屋租赁中
- HIggsBoson任务有几维特征是由物理学家设计
2. 不是领域专家,使用通用规则,就是刚刚讲的那些咯

3. 特征选择

日期时间型特征
- 看作连续值(持续时间)或者离散值(星期几)
- 日期特征:年月日
- 时间特征:小时等。
- 星期、工作日
- 特定节假日:双十一 等

处理方式:简单加减,比如房屋建了多久。

文本型特征
- 先进行特征提取
- 使用scikit-learn 还有NLP处理
- 词向量(词频 CountVectorizer
- n-gram模型:扩展为词组特征(数值爆炸)
- 可用词云可视化(有意思)

1

地理位置特征
- 简单的聚类就ok啦

转载和疑问声明

如果你有什么疑问或者想要转载,没有允许是不能转载的哈
赞赏一下能不能转?哈哈,联系我啊,我告诉你呢 ~~
欢迎联系我哈,我会给大家慢慢解答啦~~~怎么联系我? 笨啊~ ~~ 你留言也行
你关注微信公众号1.听朕给你说:2.tzgns666,3.或者扫那个二维码,后台联系我也行啦!
tzgns666

终于写完了,赞赏一下下嘛!

码字不易啊,如果你觉得本文有帮助,三毛也是爱哦!

(爱心.gif) 么么哒~么么哒~么么哒
爱心从我做起,贫困山区捐衣服,为开源社区做贡献!

真的就三毛,呜呜。。。

我祝各位帅哥,和美女,你们永远十八岁,嗨嘿嘿~~~

weiChat
Alibaba

我祝各位帅哥,和美女,你们永远十八岁,嗨嘿嘿~~~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注