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)