热线电话:13121318867

登录
2020-08-02 阅读量: 793
python 统计 主成分分析

规范化处理,缓解特征共线性问题

from sklearn.preprocessing import *

#数据规范化处理
raw=data.iloc[:,4:10]
zraw1=StandardScaler(copy=True,with_mean=True, with_std=True).fit_transform(raw)#z变换,with_std=False对中处理
zraw2=MinMaxScaler(feature_range=(0,100)).fit_transform(raw)#归一化及任意区间的线性变换,逻辑回归
zraw3=RobustScaler(quantile_range=(25.0, 75.0),with_centering=True,with_scaling=True).fit_transform(raw)#稳健变换,右偏数据
zraw4=Binarizer(threshold=0).transform(zraw1)#二值变换,大于threshold值的赋值1,其他为0,图像数据
zraw5=normalize(raw,norm='l1',axis=1)#特征归一化,l1表示L1范数(曼哈顿聚类,L2是欧式距离),axis=1表示行的绝对值和为1;
zraw6=np.log(raw)#另外见PowerTransformer()


主成因分析

#============主成分分析===============
from sklearn.decomposition import PCA
pca=PCA(n_components=2)
pca.fit(zraw1)
pca.explained_variance_ #主成分特征值
pca.explained_variance_ratio_#主成分的解释方差百分比
pca.components_#特征向量

#-----保存主成分------
pca1 = PCA(n_components=2).fit_transform(zraw1)#累计贡献率
raw[["z1","z2"]]=pd.DataFrame(pca1)
raw
#-----主成分回归------
x=pd.concat([data.iloc[:,[2,3]],raw[["z1","z2"]]],axis=1)
y=pd.DataFrame(data.iloc[:,10])
from sklearn.linear_model import SGDClassifier
sgdLog_clf=SGDClassifier(loss='log',random_state=123)
sgdLog_clf.fit(x,y)#拟合训练集数据
sgdLog_clf.score(x,y)#非监督模型是transform


主成分判断标准
主成分分析优劣的判定标准:
第一,尽量将更多变量压缩在第一主成分和第二主成分之内;
第二,第一主成分解释的信息能够超过 50%;
第三,第一主成分和第二主成分解释的信息总和超过 70%;
第四,第一主成分除以第二主成分的比值大于 3;
第五,用更少的主成分代表更多的变量。

29.3240
2
关注作者
收藏
评论(0)

发表评论

暂无数据