数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析_pca数据示例(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2. 计算标准化样本查的协方差矩阵:

1、2步骤可以合成一步:

4. 计算主成分共享率以及累计贡献率:

5. 写出主成分:

6. 根据系数分析主成分代表的意义:

对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大。

部分说明

一组数据是否可以用主成分分析,必须做适合性检验。可以用球形检验和KMO统计量检验。

1)球形检验(Bartlett)

球形检验的假设:

H0:相关系数矩阵为单位阵(即变量不相关)

H1:相关系数矩阵不是单位阵(即变量间有相关关系)

2)KMO(Kaiser-Meyer-Olkin)统计量

KMO统计量比较样本相关系数与样本偏相关系数,它用于检验样本是否适于作主成分分析。

KMO的值在0,1之间,该值越大,则样本数据越适合作主成分分析和因子分析。一般要求该值大于0.5,方可作主成分分析或者相关分析。

Kaiser在1974年给出了经验原则:

0.9以上       适合性很好

0.8~0.9        适合性良好

0.7~0.8        适合性中等

0.6~0.7        适合性一般

0.5~0.6        适合性不好

0.5以下       不能接受的

4.实验过程

4.1数据探索

加载葡萄酒数据集

使用shape属性查看数据共有多少行多少列

原数据有178行,13列

使用info()查看基本信息

从结果中可以看出数据集没有缺失值且都为浮点数类型。

4.2 PCA主成分分析

**1.**巴特利球形检验

检验总体变量的相关矩阵是否是单位阵(相关系数矩阵对角线的所有元素均为1,所有非对角线上的元素均为零);即检验各个变量是否各自独立。

从结果中看出P值远小于0.05,拒绝原假设,说明变量之间有相关关系,可以做主成分分析。

**2.**求相关矩阵

①标准化

②求相关系数矩阵

③求特征值和特征向量

**3.**对特征值进行排序并输出

**4.**绘制散点图和折线图

从图中得出主成分分析的K值应为4比较好。

**5.**求特征值的贡献度

**6.**求特征值的累计贡献度

**7.**选出主成分

**8.**选出主成分对应的特征向量矩阵

**9.**求主成分得分

**10.**绘制热力图

4.3 构建模型

在构建模型之前,先进行特征选择,选出建模需要的数据(这里先使用经过主成分分析后的数据),再拆分数据集为训练集和测试集。

构建随机森林模型

可以看出经过主成分分析后的模型准确率为0.972。

接着我们使用原始数据,也就是没有经过主成分分析处理的数据来构建模型看看效果。

从结果看出没有经过主成分分析处理的数据最后构建的模型准确率为0.944,明显看出经过主成分分析处理的模型准确率提高了不少。

5.总结

本次实验对葡萄酒数据进行了主成分分析,将13维的数据降到了4维,最后通过构建逻辑回归分类模型得出的模型准确率为0.97,相比于没有经过主成分分析处理的数据构建的模型而言,经过处理后的数据构建的模型准确率提高了3%,说明本次主成分分析是有效果的,最后构建的模型效果也很不错。

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

源代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_wine
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示|
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示
# 导入数据集
wine = load_wine()
# 将原数据集转为DataFrame类型
data = pd.DataFrame(wine['data'],columns=wine['feature_names'])
data.head()
data.shape
data.info()
# Bartlett's球状检验
from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity
 
chi_square_value, p_value = calculate_bartlett_sphericity(data)
print(chi_square_value, p_value)
# KMO检验
# 检查变量间的相关性和偏相关性,取值在0-1之间;KOM统计量越接近1,变量间的相关性越强,偏相关性越弱,因子分析的效果越好。
# 通常取值从0.6开始进行因子分析
from factor_analyzer.factor_analyzer import calculate_kmo
 
kmo_all, kmo_model = calculate_kmo(data)
print(kmo_all)
from sklearn.preprocessing import scale
data_scale = scale(data)  # 数据标准化
data_scale
covX = np.around(np.corrcoef(data.T),decimals=3) # 求相关系数矩阵
covX
featValue, featVec=  np.linalg.eig(covX.T)  #求解系数相关矩阵的特征值和特征向量
featValue, featVec
featValue = sorted(featValue,reverse=True) # 对特征值进行排序并输出
featValue
# 同样的数据绘制散点图和折线图
plt.scatter(range(1, data.shape[1] + 1), featValue)
plt.plot(range(1, data.shape[1] + 1), featValue)
# 显示图的标题和xy轴的名字
plt.title("Scree Plot")  
plt.xlabel("Factors")
plt.ylabel("Eigenvalue")
plt.hlines(y=1,xmin=0,xmax=13)   # 横线绘制
plt.grid()  # 显示网格
plt.show()  # 显示图形
gx = featValue/np.sum(featValue)
gx
lg = np.cumsum(gx)
lg
#选出主成分
k=[i for i in range(len(lg)) if lg[i]<0.80]
k = list(k)
print(k)
selectVec = np.matrix(featVec.T[k]).T
selectVe=selectVec*(-1)
selectVec
finalData = np.dot(data_scale,selectVec)
finalData
# 绘图
plt.figure(figsize = (14,14))


![img](https://img-blog.csdnimg.cn/img_convert/2f03b4029f0ad976e6f6ee8faf16b299.png)
![img](https://img-blog.csdnimg.cn/img_convert/31a87f836c9bb58df68cc8033e64feed.png)
![img](https://img-blog.csdnimg.cn/img_convert/989f0ec4807f93077d4b7c04637c481a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

[外链图片转存中...(img-jhdnRdik-1715463400929)]
[外链图片转存中...(img-XMEouqUR-1715463400930)]
[外链图片转存中...(img-ZOVAKhce-1715463400930)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据仓库与数据挖掘》课程论文 基于Wine数据集数据分析报告 专业:计算机科学与技术 二〇一五年五月二十五日 基于wine数据集数据分析报告 摘 要:数据挖掘一般是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性的信息的 过程。在大数据时代,如何从海量数据中挖掘有用信息成为了信息产业的热门话题。作 为数据挖掘课程内容的回顾与应用,本文对wine数据集进行数据探索性分析,并将数 据挖掘的决策树、支持向量机、聚类等常用方法应用于具体的数据挖掘任务,并取得了 较好的效果。 关 键 词:wine数据集、决策树、支持向量机、聚类 引言 数据挖掘(Data mining),又译为资料探勘、数据挖掘、数据采矿。数据挖掘一般是指从大量的数据中 自动搜索隐藏于其中的有着特殊关系性(属于Association rule learning)的信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处 理、情报检索、机器学习、专家系统和模式识别等诸多方法来实现上述目标。在大数据 时代,如何从海量数据中挖掘有用信息成为了信息产业的热门话题。本文作为数据挖掘 课程内容的回顾与应用,将数据挖掘的理论与方法运用于具体的数据挖掘任务中,并取 得较好的效果。 本次实验选择的数据集wine数据集。本文首先对其进行数据探索性分析,包括: 数据概括、变量分布、离群点、缺失值、相关性等,并运用了适当的图形进行描述,然 后在探索性分析的基础上,采用了决策树、支持向量机、聚类等方法进行了分类预测, 并比较了不同方法的分类效果。 数据探索性分析 1 数据概况 本次实验选用的数据集为UCI的Wine Quality数据集中white wine的4898条数据,每条数据有12种属性,分别为:fixed acidity, volatile acidity, citric acid, residual sugar, chlorides, free sulfur dioxide, total sulfur dioxide, density, pH, sulphates, alcohol, quality. 其中,quality为输出,以0到10之间的数字来表示酒的品质。 实验使用RStudio软件将数据集读入,并使用summary命令概括数据集概况。如图一所 示,summary概括了数据集中各个变量的平均值、中位数、最大值、最小值等信息。 图1 数据概括 2 变量分布 使用hist()绘制各变量的直方图。如图二所示,直方图直观的展示了变量的分布情况 。 图2 变量直方图 直方图只能对变量进行直观的描述,而变量是否满足正态分布则需要正态性验证。使 用shapiro test对各变量进行正态验证,通过查看结果中的p- value值就可以得到变量是否符合正态分布。如果p- value值大于0.05即符合正态分布,而对所有变量进行shapiro test得到p- value均不大于0.05,所以wine数据集各特征均不是正态分布。 3 离群点分析 箱形图(Box- plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计 图。主要包含六个数据节点,将一组数据从大到小排列,分别计算出他的上边缘,上四 分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值。箱形图的异常值就可以 可视化的展示数据集中的离群点。图3展示了各变量的离群点分布情况,可以看出离群点 较多,可能对预测产生影响。 图3 变量箱形图 4 缺失值分析 Wine数据集不含有缺失值。 5 相关性分析 数据集中各变量间的相关性关系可由cor()函数计算出的协方差矩阵来表示,如表4所 示。 表1 协方差矩阵表 "ROW "1 "2 " " "正确率 "MAE "正确率 "MAE " "决策树 "0.83 "0.2 "0.57 "0.51 " "支持向量 "0.61 "0.44 "0.57 "0.48 " "机 " " " " " 通过表二可以看出,两种模型的分类精度都比较低。再回顾数据探索性分析中关于离 群点部分的内容可知,数据集中含有大量离群点。而决策树与支持向量机属于对离群点 非常敏感的模型,这可能就是分类精度较低的原因。所以需要选用一种能够克服离群点 影响的模型来对wine数据集进行预测,因此我们选用了class包中的1- 近邻模型来进行分类预测,结果如表3所示,可以看出分类效果有提高。 表3 直接分类预测结果 "模型 "训练集 "测试集 " " "正确率 "MAE "正确率 "MAE " "决策树 "0.83 "0.2 "0.57 "0.51 " "支持向量 "0.61 "0.44 "0.57 "0.48 " "机 " " " " " "1-近邻 "  "  "0.61 "0.45

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值