Advertisement

数据挖掘建模---3.特征工程

阅读量:

数据挖掘建模—3.特征工程

3.1数值型特征-数值变换、非线性变换、编码
3.2 无监督降维PCA
3.3计算型变换
3.4特征筛选
3.4 索引恢复

3.1数值型特征-数值变换、非线性变换、编码

数值变换

1.log变换:
由于数值型字段会有较大跨度,如最小值1最大值9999,不利于统计,需要对数值型特征进行指数变化即log变化,可以让特征和目标变量之间关系更接近线性,提供预测效果
import numpy
log_age = df_train[‘Age’].apply(lamda x:np.log(x))
df_train.loc[:,‘log_age’] = log_age
2.最大最小归一化MinMaxScaler
[ X-min(x)]/[max(x)-min(x)],最大最小值受异常点影响,鲁棒性差,比较适合传统精确数据场景
from sklearn.preprocessing import MinMaxScaler
mm_scaler = MinMaxScaler()
fare_trans = mm_scaler.fit_transform(df_train[[‘Fare’]])
注意:概率模型不需要归一化,只与变量分布和变量直接的条件概率相关,与变量值无关,如决策树、随机森林rf。另:树模型不能用梯度下降,树模型是寻找最优分裂点完成。
3.标准化StandardScaler
( x-μ)/σ x原始特征值,μ样本均值,σ样本标准差,对现有样本进行估计,对样本足够多的情况下比较稳定,有一定鲁棒性,可以适应嘈杂大数据场景
from sklearn.preprocessing import StandardScaler
std_scaler = StandardScaler()
fare_std_trans = std_scaler.fit_transform(df_train[[‘Fare’]])
4.统计值 最大、最小值、分位数
max_age = df_train[‘Age’].max()
min_age = df_train[‘Age’].min()
age_quarter_1 = df_train[‘Age’].quantile(0.25) #1/4分位数
age_quarter_3 = df_train[‘Age’].quantile(0.75) #3/4分位数

非线性变换

5.多项式特征变换
A.目标是将特征两两组合起来,使得特征和目标变量直接的关系更接近线性,提供预测效果
df_train.loc[:,‘famili_size’] = df_train[‘SibSp’]+df_train[‘Parch’]+1
B.高次特征与交叉特征PolynomialFeatures
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
ploy_fea = poly.fit_transform(df_train[[‘SibSp’,‘Parch’]])
C.Peason相关系数
当Pearson相关系数低于0.4,则表明变量之间存在弱相关关系;当Pearson相关系数在0.4~0.6之间,则说明变量之间存在中度相关关系;当相关系数在0.6以上时,则反映变量之间存在强相关关系
import matplotlib.pyplot as plt
import seaborn as sns
data_cor = data.corr() #peason相关系数
sns.heatmap(data_cor,annot = True) # 相关性热力图annot显示为数字
6.离散化即类别化
减少噪声干扰,类别化特征值,如年龄段而不是年龄对应的属性pandas cut
df_train.loc[:,‘fare_cut’] = pd.cut(df_train[‘Fare’],5) #将Fare特征切分成4个区间
df_train[‘far_cut’].unique() #查看区间值

编码

1、独热编码 OneHot encoding
用二进制位表示某个定性特征出现与否,无序特征,(labelEncoder为有序型)
2、连续数值编码OrdinalEncoder/labelEncoder

3、哑变量 pandas get_dummies
embarked_oht = pd.get_dummies(df_train[[‘Embarked’]])
loans = pd.concat([loans,embarked_oht],axis=1)#将哑变量连接原数据

3.2 无监督降维

1、PCA
点到原点距离已定,所以如果点到线的距离越短的话,垂足和垂足之间距离可以最大分散化
2、NNF

3.3计算型变换

1、距离变换
2、相似度变换
3、核函数变换

3.4特征筛选

1、低方差移除
2、单变量特征筛选
3、特征重要度筛选
异常数据如果不筛选出将影响后面模型,导致偏差,筛选异常特征样本方法有两个常用方法聚类和异常点检测。
聚类:用KMeans聚类将训练样本分层若干簇,如果一个簇里的样本数很少且簇质心和其他簇距离很远,那么这个簇里很有可能存在异常特征样本。
异常点检测:用IForest或one class SVM使用异常点坚持的机器学习算法过滤异常点
筛查出的异常点需要进一步结合业务场景最终确认是否异常。

3.4 索引恢复

for i in [train_x,test_x]:
i.index = range(i.shape[0])
train_x.head()

全部评论 (0)

还没有任何评论哟~