数据预处理和特征选择

数据预处理:

  1. 无量纲化(标准化):特征值服从正态分布,使其转换成标准正态分布。from sklearn.preprocessing import StandardScaler standatdscaler().fit_transform(iris.data)
  2. 无量纲化(区间缩放):利用边界值将特征值的区间缩放至某个范围:0-1之间。from sklearn.preprocessing import minmaxscler minmaxscaler().fit_transform(iris.data)
  3. 归一化:标准化是基于列处理数据,归一化是基于行处理,其目的在于样本向量在点乘运算或者其他核函数计算相似性时,拥有统一的标准,也就是说转化为单位向量。from sklearn.preprocessing import Normalizer Normalizer().fit_transform(iris.data)
  4. 定量特征二值化:设定阈值,大于阈值的赋值为1,小于的0,from preprocessing import Binarizer Binarizer(threshold=3).fit_transform(iris.data)
  5. 定性特征独热编码:OneHotEncoder().fit_transform(iris.target.reshape((-1,1)))
  6. 数据变换:基于多项式的转换(polynomialfeatures.())基于指数函数(functionransformer(loglp).fit_transform(iris.data))

特征选择(特征选择一般考虑两个方面:特征是否发散和特征与目标值的关联):

1.过滤法 filter:按照发散性或者相关性进行评分并选择超过阈值的特征

  • 方差选择法(计算各个特征的方差,根据阈值进行选择):veriancethreshold(threshold=3).fit_transform(iris.data)
  • 相关系数法(计算各个特征对于目标值的相关系数以及相关系数的p值):SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target) --输出评分和p值,k表示选择的特征个数
  • 卡方检验:经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N中取值,因变量有M中取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距。针对定性的自变量和因变量进行相关性的分析,selectbest(chic,k=2)
  • 互信息法:结合最大信息系数法来选择特征:
from sklearn.feature_selection import SelectBest
from minepy import MINE
#由于MINE的设计不是函数式的,定义mic方法将其为函数式的,返回一个二元组,二元组的第二项设置成固定的P值0.5
def mic(x,y)
  m=MINE()
  m.compute_score(x,y)
  return (m.mic(),0.5)

2.包装法 wrapper:

  • 递归特征消除法:使用一个基模型进行多轮训练,每轮训练后,消除若干权值系数的特征,再给予新的特征集进行下一轮训练。使用feature_selection库的RFE类来选择特征的代码如下:
from sklearn.feature_selection import RFE

from sklearn.linear_model import LogisticRegression

#estimator为基模型

RFE(estimator=LogisticRegression(),n_features_to_select=2).fit_transform(iris.data,iris.target)

 

3.嵌入法embedded:

  • 基于惩罚项的基模型,除了筛选出特征外,同时也进行了降维。

 

数据缺失时,如何选择合适的模型:

https://blog.csdn.net/yh0vlde8vg8ep9vge/article/details/78265671

https://blog.csdn.net/jp_666/article/details/78244530

tips:

  • 树模型对于缺失值的敏感度较低,大部分时候可以在数据缺失时使用。
  • 涉及到距离度量时,缺失数据处理不当就会导致效果差,如K紧邻算法、支持向量机
  • 线性模型的代价函数往往涉及到距离的计算,容易导致缺失值敏感
  • 神经网络的鲁棒性强,对于缺失数据不是非常敏感,但一般没有那么多数据可供使用
  • 贝叶斯模型对于缺失数据也比较稳定,数据量小时可以使用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值