数据挖掘小结:预处理

数据挖掘小结:预处理

受这篇博文的启发:https://blog.csdn.net/leeafay/article/details/80273529
结合最近做的几个实战项目做了一些总结
这是第一版,后面还可能做改进。

文件读入

1.对于数据集的一些预处理(合并、拆分…)
2.文件编码,这点在中文文本处理上非常常见,TXT文档的编码方式一般是ANSI,但是python一般会用utf-8来处理。这点我实测过了,在打开文件的时候注明encoding=ansi就可以了,没必要去给文件转码。

缺失值处理

直接忽略、手动填充、全局填充(全填unknown或无穷)、用整体中心值填充(同一特征的整均值、中值等)、用同一分类文本中的mean或median填充、用概率最大的值填充(最流行的方法)

其实缺失值处理在NLP上用的不多,毕竟某句子某词袋位的缺失都是直接补0

噪声和离群点

处理噪声可以使用分箱和回归
分箱可以采用等深分箱法、等宽分箱和聚类分箱(即聚类)。等深分箱即每个箱子有同样多的,等宽分箱即每个箱子的取值区间间隔相同。分箱后的数据可以使用均值平滑、中值平滑和边界平滑去噪,其中边界平滑是数据靠近哪个边界就取哪个边界的值。
在这里插入图片描述
也可以使用zscore方法 ,即正态标准化,一般认为[-3,3]范围之外的点为离群点。

可以画散点图然后看特征数据分布,比如:

#散点图绘制:
def drawPic(data,length):
    obj=collections.Counter(data)
    x=list(obj.keys())
    y0=list(obj.values())
    y=[]
    for elem in y0:
        if elem==0: y.append(0)
        else: y.append(elem/length)
    plt.scatter(x,y)
    plt.show()

在这里插入图片描述
其中x轴是key,y轴式该单词出现的概率,理想情况下对于满足正态分布的数据,由于σ与概率会有直接的关系,绝大多数数据(大于0.9)集中在在[-3σ,3σ]这个区间内(概率论),所以我们有理由认为在这个区间外的数据是离群点(与大部分数据偏差较大且出现概率极低)。
剔除离群点是因为离群点的存在会影响后续建模的质量(极端数据)。

离群点检测的另一个重要方法就是聚类。

数据集成

合并来自多个存储的数据,解决冗余和不一致问题等等。
比如两个数据库中的两个表,对于同一个属性会有不同的名字,举个例子:在student表中的cs_id代表选修课程id,而在课程表course中,id代表课程id。可以用X方和协方差系数进行相关性检验。
pearson相关系数可以度量两个特征的相关程度,值为[-1,1]1代表正相关,-1代表负相关,0代表不相关。需要注意的是,相关性并不代表因果。
https://blog.csdn.net/leeafay/article/details/80690122
这里一般整理好的数据集不会出现这个问题。
百度百科将这一步归入数据采集中,他强调的是把数据集合起来。
而后面的数据规约强调的是降维。

数据归约

缩小数据集,但不损坏数据集的特性,保持其功能。

降维

1.PCA(主成分分析),这篇文章讲的很好:
https://www.baidu.com/link?url=9TFOBS-PzQbEhlV53PI2xU6f9SPDf4Qh99FQw64ueyklnX_hcdKGx4nemc1qtOPe0tXm-JlhvCU-ywTEaIaOb_&wd=&eqid=90a01319000ad0d7000000035d479b8f
就是先求矩阵的协方差矩阵,然后求他的特征值和特征向量,再把特征向量按对应特征值的大小按行排列(就是转置),然后取前n行作为降维矩阵。
2.LDA(线性判别法)
LDA同样是投影,但LDA投影后的点会按簇分布

还有小波变换DWT和傅里叶DFT变换

特征筛选

特征筛选有过滤式、包裹式和嵌入式三种

过滤式:

过滤式方法先对数据集进行特征选择,然后再训练学习器。
1.pearson相关系数:
在这里插入图片描述
可以分别计算每个特征与输出值之间的相关系数,设定一个阈值,选择相关系数大于阈值的特征。
2.互信息:
在这里插入图片描述
道理同上。

3.卡方检验(先假设后验证):
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
卡方检验比较特殊,它是用来检验某特征和结果有没有关系的,没关系就可以去掉了。

4.可以移除方差较低的特征(没有区分度)

包裹式:

包裹式从初始特征集合中不断的选择特征子集,训练学习器,根据学习器的性能来对子集进行评价,直到选择出最佳的子集。包裹式特征选择直接针对给定学习器进行优化。从最终学习器的性能来看,包裹式比过滤式更好;但由于特征选择过程中需要多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择要大得多。LVW是一种典型的方法,还有SVM。

嵌入式:

嵌入式本身的特征选择过程被作为算法的一部分嵌入到了分类器的学习中,分为基于罚项(Lasso/Ridge,核心思想是将部分特征的系数降为0,即不在模型中参与计算或少参与计算,起到降低模型复杂度的作用 ) 和基于树模型(比如决策树)

数据变形

标准化、正则化、归一化和二值化
1.常用的线性归一化即对某一特征的取值使用函数 y=(x-min)/(max-min)进行变换,把数据变为(0,1)之间的小数。归一化是为了消除不同数据之间的量纲, 把有量纲表达式变换为无量纲表达式,成为纯量。经过归一化处理的数据,处于同一数量级,可以消除指标之间的量纲和量纲单位的影响,提高不同数据指标之间的可比性,方便分类器对不同特征统一处理。
2.常用的零-均值标准化: y=(x-μ)/σ。可以使原本分布不均的数据变为正态分布,方便后续处理。
3.正则化而是利用先验知识,在处理过程中引入正则化因子(regulator),增加引导约束的作用,比如在逻辑回归中使用正则化,可有效降低过拟合的现象。
原博:https://blog.csdn.net/zyf89531/article/details/45922151

后面会结合具体的项目再做更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值