Python特征工程

1,去除线性共线性,使变量数据稀疏。

共线性检测:

1,VIF(方差膨胀因子),1/(1-R**2)以10为分界点,(0-10)不存在多重共线性问题,>10存在多重共线性问题。 (vif包建议5以上则存在共线性问题)

from statsmodels.stats.outliers_influence import variance_inflation_factor as vif

vif(np.array(DataFrame),索引数) #两个参数第一个必须是包含所有解释变量的数组,第二个即为索引值。

features=data.columns

removefeatures=[]

for i in range(len(features)):

     vifs=vif(np.array(data),i)

     if vifs>10:

         removefeatures.append(features[i])

stayfeatures=list(set(features)-set(removefeatures))

2,PCA共线性问题的解决(主成分分析 降维)#由于不能明确的知道需要几个变量,存在局限性

from sklearn.decomposition  import PCA

pca=PCA(n_componts=,white=是否需要归一化)

pca.fit(x)  #x可以是array,也可以是dataframe

print(pca.explained_variance_ratio_)

 3,针对样本不均衡进行过采样和欠采样

主要运用算法SMOTE

from imblearn.over_sampling   import SMOTE  #不能有str需要时float or int

sm=SMOTE(random_state=?)

over_x,over_y=sm.fit_resample(x,y)

 

posted @ 2019-02-21 12:58  The_Chain  阅读(827)  评论(0编辑  收藏  举报