fuli2020

2020-08-02   阅读量: 675

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;
第五,用更少的主成分代表更多的变量。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
29.3240 3 2 关注作者 收藏

评论(0)


暂无数据

推荐课程