数据分析python PCA主成分分析

简介: 数据分析python PCA主成分分析

在有许多变量的情况下,主成分分析可以使得我们最大程度的保留住重要信息来训练模型,运行环境是anconda 3.8,jupter notebook

1初始准备

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import matplotlib.pyplot as pl
from sklearn.datasets import load_wine
from sklearn.pipeline import make_pipeline

pl.rcParams['font.sans-serif']='SimHei' #画图正常显示中文
pl.rcParams['axes.unicode_minus']=False #决绝保存图像是负号‘-’显示方块的问题
%matplotlib inline

2 读出数据与分组

features,target=load_wine(return_X_y=True)#三分类的酒数据集
features.shape,target.shape

RANDOM_STATE=42 #随机,类似随机种子seed
#将数据切分成7:3分制成训练集和测试集
X_train,X_test,y_train,y_test=train_test_split(features,target,test_size=0.30,random_state=RANDOM_STATE)

3 对不使用PCA,使用PCA不做标准化,使用PCA标准化三种情况进行分组

#不使用PCA
raw_clf=make_pipeline(StandardScaler(),LogisticRegression())
raw_clf.fit(X_train,y_train)
pred_test_raw=raw_clf.predict(X_test)
#使用PCA但不做数据处理
unscaled_clf=make_pipeline(PCA(n_components=2),LogisticRegression())
unscaled_clf.fit(X_train,y_train)
pred_test=unscaled_clf.predict(X_test)
#使用PCA,同时做数据处理
std_clf=make_pipeline(StandardScaler(),PCA(n_components=2),LogisticRegression())
std_clf.fit(X_train,y_train)
pred_test_std=std_clf.predict(X_test)
#查看各种情况下的分类准确率
print(u'\n不使用PCA,预测准确率','{:.2%}'.format(metrics.accuracy_score(y_test,pred_test_raw)))
print(u'\n使用PCA,未标准化预测准确率','{:.2%}'.format(metrics.accuracy_score(y_test,pred_test)))
print(u'\n使用PCA,标准化预测准确率','{:.2%}'.format(metrics.accuracy_score(y_test,pred_test_std)))

对三种情况进行正确率比较

在这里插入图片描述

4 将抽取出来的主成分进行展示

#将pca信息抽取出来
pca=unscaled_clf.named_steps['pca']
pca_std=std_clf.named_steps['pca']
#打印最主要的主成分,注意,它是特征空间中的主成分轴,表达了数据中具有最大方差的方向
print(u'\n未预处理第一主成分:\n',pca.components_[0])
print(u'\n预处理第一主成分:\n',pca_std.components_[0])

在这里插入图片描述

5 将PCA分类结果画图

#对训练集数据进行PCA降维以备绘图
X_train_nostd=pca.transform(X_train)
scaler=std_clf.named_steps['standardscaler']
X_train_std=pca_std.transform(scaler.transform(X_train))

FIG_SIZE=(10,7)

fig,(ax1,ax2)=pl.subplots(ncols=2,figsize=FIG_SIZE)

#不预处理的PCA
for l,c,m in zip(range(0,3),('blue','red','green'),('^','s','o')):
    ax1.scatter(X_train_nostd[y_train==l,0],X_train_nostd[y_train==l,1],
               color=c,
               label='class %s'% l,
               alpha=0.5,
               marker=m)
    
#预处理后的PCA
for l,c,m in zip(range(0,3),('blue','red','green'),('^','s','o')):
    ax2.scatter(X_train_std[y_train==l,0],X_train_std[y_train==l,1],
               color=c,
               label='class %s'% l ,
               alpha=0.5,
               marker=m)
    
ax1.set_title(u'PCA降维后的训练集')
ax2.set_title(u'特征放缩+PCA降维后的训练集')

for ax in (ax1,ax2):
    ax.set_xlabel(u'第一主成分')
    ax.set_ylabel(u'第二主成分')
    ax.legend(loc='upper right')
    ax.grid()
    
pl.tight_layout()

在这里插入图片描述

目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
132 70
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
24 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
8天前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
60 37
Python时间序列分析工具Aeon使用指南
|
4天前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
38 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
152 68
|
3天前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
129 36
|
1月前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
80 15
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
127 18