数据特征工程(二)

数据分析第二天

数据标准化

1、将数据的取值缩放到一定范围内
2、减少不同属性间因不同量级造成的权重问题
3、数据量级过大会导致收敛的速度下降

from  sklearn.preprocessing import StandardScaler,MinMaxScaler,RobustScaler
#z-score标准化(均值为 0,方差为1)
zscore = StandardScaler()
df_zscore = zscore.fit_transform(df)
#min-max标准化(取值为[0,1])
minMax = MinMaxScaler()
df_minMax= minMax.fit_transform(df)
#在算法预测时,采用训练集得到的参数进行test 即先fit,transform

数据正则化

数据正则化是将样本的某个范数缩放到单位1。(该方法主要应用于文本分类和聚类中)
在这里插入图片描述
区别:正则化的过程是针对单个样本(行数据),
标准化是针对单个属性的(属性上的所有样本)列数据

from  sklearn.preprocessing import normalize
X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
X_normalized = normalize(X, norm='l2')
#训练集和测试集上用normalize.fit(X), normalizer.transform(X)

特征选择

选择出relevant_feature
处理高维数据的两大主流技术:特征选择与降维

特征选择原理

方法:
1、产生一个候选子集,评价出它的好坏。
2、基于评价结果产生下一个候选子集,再评价其好坏。
3、持续进行,直至无法找到更好的后续子集为止

子集搜索
   向前搜索:给定集合中每一个元素作为起始子集,选出最好的,增加一个元素,选出最好的,且比一个元素的好,持续进行,直到在增加比远来的不好停止
   向后搜索:如果从完整的特征集合开始,去掉一个无关特征
子集评价

信息增益
常见的特征选择方法大致可分为三类:过滤式filter、包裹式wrapper、嵌入式embedding

filter

Filter方法是通过特征(列)和标签(列)的相关性来衡量特征所携带的信息。常用的评价相关性的标准有:Pearson相关系数,Gini-index(基尼指数),IG(信息增益)等。

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
X, y = load_iris(return_X_y=True)
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
wrapper

直接针对特定学习器进行优化

from sklearn.feature_selection import RFE,RFECV
 #RFE
iris=load_iris()
X=iris.data
Y=iris.target
estimator=LinearSVC() selector=RFE(estimator=estimator,n_features_to_select=2)
print("Before transform,X=",X)
selector.fit(X,Y)
selector.transform(X)
print("After transform,X=",X)
print("Ranking %s"%selector.ranking_)

#RFECV
 iris=load_iris()
X=iris.data
Y=iris.target
estimator=LinearSVC()
selector=RFECV(estimator=estimator,cv=3)
selector.fit(X,Y)
 print("Grid Scores %s"%selector.grid_scores_)
embedding

嵌入式特征选择:是指特征选择与学习器训练过程放在一起
常见的有
在Lasso中, 参数控制了稀疏性:
如果 λ越小,则稀疏性越小,则被选择的特征越多。
如果 λ越大,则稀疏性越大,则被选择的特征越少。
在SVM和logistic-regression中,参数C控制了稀疏性
如果C越小,则稀疏性越大,则被选择的特征越少。
如果C越大,则稀疏性越小,则被选择的特征越多。

from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel
X, y = load_iris(return_X_y=True)
print(X.shape) #(150, 4)
lsvc = LinearSVC(C=0.01, penalty="l1",dual=False).fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)
print(X_new.shape) ##(150, 3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值