@BruceWang
2018-01-30T17:13:05.000000Z
字数 2415
阅读 2603
CSDN价值两万的AI课程
如果你做过数据挖掘,或者还是小白,你就会发现当你拿到数据之后根本不能用好吗?
或者当你直接拿到别人的数据之后,
一大团糟, 那么你拿到这些数据怎么办?
可能你知道可以:
一、 通过新增加一个或几个feature,如果cv分数上去了,就增加这个feature,如果cv分数没有上去,就舍弃这个feature
弊端:如果你舍弃的两个feature联合之后才有作用呢? 那岂不是丢失不少东西?
二、 数值型特征加减乘除、这样就可以挖掘出新特征咯!具体问题具体对待。
三、 对于其他特征可以聚类、PCA降维等,后续会讲到相关处理方法。
还有么?有! 这文章就是为你而生的、 Let's do do do do ... it!
有助于选择适合的预处理和建模方法
列角度:每个特征的确实数量,删除缺失值太多的特征列(具体问题具体对待)确实比例。
行角度:就是每一个样本, 删除缺失值的样本(比如你是黑户)
核密度估计
order = [low, medium, high]
season.violinplot(x='interest_level', y='price', data=train, order=order
season.distplot(train.price.values, bins=5, kde=True
))相关性可以通过散点图来发现的,相关性系数的计算就是一个公式。
特征和标签之间相关。
特征与特征之间强相关意味着信息有问题(如果系数大于0.5就意味着很强了)
from sklearn.preprocessing import ...
设置一个阈值
对于数值型变量,加乘、开方、等。
给每个类一个独一无二的数字化ID, 对于非线性的基于树模型的算法很有用
对类别型数据转换为数值型
将特征的每个可能的取值k编码位它对应标签取c值的概率(即p(y=c|x=k))
对于分类问题,设标签取值共有C类,纳米编码特征就是C - 1维
做对数log变换(我们认为x与y不是线性变换的时候,降低大值的影响,比如价格型变量)可以改善数据的线性度
train.SalePrice = np.loglp(train.SalePrice)
独热编码 如果不希望数据有序数关系
对高基数(也称高势集)类别的特征(就是K很大):有成百上千不同的取值(邮政编码、街道名称)
将数值属性转换为类别表示更有意义
了解数据领域的背景知识。
小结:
1. 知道数据的物理意义(领域专家), 设计更多的特征
- 房屋租赁中
- HIggsBoson任务有几维特征是由物理学家设计
2. 不是领域专家,使用通用规则,就是刚刚讲的那些咯
日期时间型特征
- 看作连续值(持续时间)或者离散值(星期几)
- 日期特征:年月日
- 时间特征:小时等。
- 星期、工作日
- 特定节假日:双十一 等
处理方式:简单加减,比如房屋建了多久。
文本型特征
- 先进行特征提取
- 使用scikit-learn 还有NLP处理
- 词向量(词频 CountVectorizer
)
- n-gram模型:扩展为词组特征(数值爆炸)
- 可用词云可视化(有意思)
地理位置特征
- 简单的聚类就ok啦
如果你有什么疑问或者想要转载,没有允许是不能转载的哈
赞赏一下能不能转?哈哈,联系我啊,我告诉你呢 ~~
欢迎联系我哈,我会给大家慢慢解答啦~~~怎么联系我? 笨啊~ ~~ 你留言也行
你关注微信公众号1.听朕给你说:2.tzgns666,3.或者扫那个二维码,后台联系我也行啦!
(爱心.gif) 么么哒~么么哒~么么哒
爱心从我做起,贫困山区捐衣服,为开源社区做贡献!真的就三毛,呜呜。。。