数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析

这篇具有很好参考价值的文章主要介绍了数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.项目简介

2.1分析目标

2.2数据集介绍

2.3技术工具

3.算法理论

4.实验过程

4.1数据探索

4.2 PCA主成分分析

4.3 构建模型

5.总结

源代码


摘要

        葡萄酒作为世界上最早的饮料酒之一,其品质和文化早已被人们所认可。据统计2021年,全球葡萄酒产量260亿升,较2020年下降了近1%,至此已连续3年略低于10年平均水平。由于我国本土葡萄酒长期以来受到进口葡萄酒的冲击及2020年疫情期间节日聚会、家庭餐会均被取消,餐饮业完全停滞,导致葡萄酒的需求短期内大幅下降。2020年我国葡萄酒行业市场规模下滑至498.2亿元,2021年小幅度上涨至510.8亿元。预计2022年我国葡萄酒行业市场规模将进一步上升至587.2亿元。本次实验使用葡萄酒数据集进行主成分分析,最后构建葡萄酒分类模型,用来对葡萄酒的分类。

1.项目背景

        作为世界上最早的饮料酒之一,葡萄酒的发展与西方文明紧密相关。根据酿造历史和生产工艺,葡萄酒生产国被划分为传统酿造工艺为代表的“旧世界”,包括法国、意大利、西班牙、德国等,以及以现代酿造技术为代表的“新世界”,包括美国、澳大利亚、新西兰、智利、阿根廷和南非等。据统计2021年,全球葡萄酒产量260亿升,较2020年下降了近1%,至此已连续3年略低于10年平均水平。受霜冻影响,欧盟的葡萄酒产量153.7亿升,较2020年下降8%。这主要是由于2021年4月份霜冻导致法国葡萄酒产量大幅下降。意大利(50.2亿升,增2%)、法国(37.6亿升,降19%)、西班牙(35.3亿升,降14%)三个国家占全球葡萄酒产量的47%。

        由于我国本土葡萄酒长期以来受到进口葡萄酒的冲击及2020年疫情期间节日聚会、家庭餐会均被取消,餐饮业完全停滞,导致葡萄酒的需求短期内大幅下降。2020年我国葡萄酒行业市场规模下滑至498.2亿元,2021年小幅度上涨至510.8亿元。预计2022年我国葡萄酒行业市场规模将进一步上升至587.2亿元。

        葡萄酒行业产业链上游参与主体为原材料及相关设备,主要包括葡萄、淀粉、酵母、食品添加剂、包装材料和酿造设备等;中游为葡萄酒行业,主要有白葡萄酒、红葡萄酒和桃红葡萄酒三大类;下游为各类消费渠道,最后到达终端消费者。近年来,随着葡萄酒产业链延伸,出现了各类“葡萄酒+”产业的新型模式,如“葡萄酒+旅游”、“葡萄酒+科技”等。

        随着我国全面步入小康社会,人们的生活水平不断提高,消费市场持续升级,为具有一定品牌溢价能力的中高端葡萄酒带来较大发展空间。经过近几年的努力,中国葡萄酒的品质与风味已经赢得广大消费者认可,这也为中国葡萄酒搏击中高端葡萄酒市场奠定了基础。综合看来,中高端葡萄酒将是2022年乃至中国葡萄酒产业更长时间的发展热点。

        近年来,随着民族、文化自信等因素助力国产品牌崛起,中国葡萄酒品质与世界接轨,屡次斩获国际性大奖,越来越多的消费者和经销商关注并选择国产葡萄酒。国产葡萄酒收割存量市场持续加速,“国产”替代“进口”的趋势明显。同时,伴随着进口葡萄酒的持续下滑,国产葡萄酒的替代效应越发明显。预计2022年,我国葡萄酒行业国产替代的速度将进一步加快。

2.项目简介

2.1分析目标

        通过研究葡萄酒数据集做出以下分析:

①使用主成分分析对数据进行降维分析

②构建葡萄酒分类模型

2.2数据集介绍

        wine样本数据集中是double类型的178 * 14矩阵包括了三种酒中13种不同成分的数量。文件中,每行代表一种酒的样本,共有178个样本,一共有14列,其中,第一个属性是类标识符,分别是1/2/3来表示,代表葡萄酒的三个分类。后面的13列为每个样本的对应属性的样本值。剩余的13个属性是,酒精、苹果酸、灰、灰分的碱度、镁、总酚、黄酮类化合物、非黄烷类酚类、原花色素、颜色强度、色调、稀释葡萄酒的OD280/OD315、脯氨酸。其中第1类有59个样本,第2类有71个样本,第3类有48个样本。具体属性描述如下:

属性

属性描述

target

类别

Alcohol

酒精

Malic acid

苹果酸

Ash

Alkalinity of ash

灰分的碱度

Magnesium

Total phenoids

总酚

Flavonoids

黄酮类化合物

Noflavanoid phenols

非黄烷类酚类

Proanthocyanins

原花色素

Color intensity

颜色强度

Hue

色调

0D280/0315ofdiluted wines

稀释葡萄酒的0D280/0315

proline

脯氨酸

2.3技术工具

Python版本:3.9

编译工具:jupyter notebook

3.算法理论

主成分分析简介

   主成分分析是数据降维算法的一种,降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。

        主成分分析是利用降维的思想,在损失很少信息的前提下把多个指标转化为几个综合指标的多元统计方法。通常把转化生成的综合指标称之为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,这就使得主成分比原始变量具有某些更优越的性能。这样在研究复杂问题时就可以只考虑少数几个主成分而不至于损失太多信息,从而更容易抓住主要矛盾,揭示事物内部变量之间的规律性,同时使问题得到简化,提高分析效率。

        主成分分析正是研究如何通过原来变量的少数几个线性组合来解释原来变量绝大多数信息的一种多元统计方法。

主成分分析的思想

假设有 n nn 个样本,p pp 个指标,则可构成大小为 n × p n\times pn×p 的样本矩阵 x xx:

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

主成分分析的计算步骤

假设有 n  个样本,p 个指标,则可构成大小为 n × p的样本矩阵 x :

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

1. 首先对其进行标准化处理:

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

12步骤可以合成一步:

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

5. 写出主成分:

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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数据探索

加载葡萄酒数据集

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

原数据有178行,13列

使用info()查看基本信息

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

4.2 PCA主成分分析

1.巴特利球形检验

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

2.求相关矩阵

①标准化

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

②求相关系数矩阵

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

③求特征值和特征向量

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

 4.绘制散点图和折线图

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

5.求特征值的贡献度

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

7.选出主成分

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

9.求主成分得分

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

10.绘制热力图

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

4.3 构建模型

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

构建随机森林模型

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

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

pca数据示例,数据分析,数据分析,pandas,数据挖掘,python,人工智能

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

5.总结

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

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

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

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

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

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

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

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。文章来源地址https://www.toymoban.com/news/detail-778070.html

源代码

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))
ax = sns.heatmap(selectVec, annot=True, cmap="BuPu")
# 设置y轴字体大小
ax.yaxis.set_tick_params(labelsize=15)
plt.title("主成分分析", fontsize="xx-large")
# 设置y轴标签
plt.ylabel("Sepal Width", fontsize="xx-large")
# 显示图片
plt.show()
X = finalData
y = wine['target']
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42) # 划分数据集
# 逻辑回归模型
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix,accuracy_score,classification_report
lg = LogisticRegression()
lg.fit(x_train,y_train)
y_pred = lg.predict(x_test)
print('模型准确率',accuracy_score(y_test,y_pred))
print('混淆矩阵',confusion_matrix(y_test,y_pred))
print('分类报告',classification_report(y_test,y_pred))
X = data
y = wine['target']
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)
# 逻辑回归模型
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix,accuracy_score,classification_report
lg = LogisticRegression()
lg.fit(x_train,y_train)
y_pred = lg.predict(x_test)
print('模型准确率',accuracy_score(y_test,y_pred))
print('混淆矩阵',confusion_matrix(y_test,y_pred))
print('分类报告',classification_report(y_test,y_pred))

到了这里,关于数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 主成分分析法(PCA)解析与MATLAB实践

    PCA(Principal Components Analysis)即主成分分析,也称主分量分析或主成分回归分析法,是一种无监督的数据降维方法,在机器学习中常用于特征降维提取主要特征以减少计算量。PCA主要原理是将高维原数据通过一个转换矩阵,映射到另一组低维坐标系下,从而实现数据降维。举个简

    2023年04月08日
    浏览(43)
  • 【数据处理方法】主成分分析(PCA)原理分析

            笔者最近在学习的过程需要使用一些数据分析和处理的方法,而PCA就是其中常用的一种手段。但在自学的过程中,由于笔者水平有限,对一些博客中的公式不是能很好理解(数学不好的辛酸Ծ‸Ծ),导致总是对整个方法的原理没有一个透彻的理解。后来在视频用

    2023年04月09日
    浏览(39)
  • Python PCA(主成分分析法)降维的两种实现

            PCA降维,一般是用于数据分析和机器学习。它的作用是把一个高维的数据在保留最大信息量的前提下降低到一个低维的空间,从而使我们能够提取数据的主要特征分量,从而得到对数据影响最大的主成分,便于我们对数据进行分析等后续操作。         例如,

    2023年04月17日
    浏览(44)
  • 【数据挖掘】PCA/LDA/ICA:A成分分析算法比较

            在深入研究和比较算法之前,让我们独立回顾一下它们。请注意,本文的目的不是深入解释每种算法,而是比较它们的目标和结果。 如果您想了解更多关于

    2024年02月15日
    浏览(44)
  • R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

    以上代码生成了100行基因,10列样本的矩阵 前五列命名 wt 开头+ 1-5 ,表示正常基因 后五列命名 ko 开头+ 1-5 ,表示缺少基因的样本(knock-out) 给每行基因都统一命名 gene + 1-100 head() 函数默认查看前6行 现在只是定义了矩阵的shape和name,还没填充数值 这段代码的作用是生成一个

    2024年02月11日
    浏览(46)
  • 怎样计算权重?——层次分析法、熵值法:工具+数据+案例+代码

    1权重系数的计算 计算权重是一种常见的分析方法,在实际研究中,需要结合数据的特征情况进行选择,比如数据之间的波动性是一种信息量,那么可考虑使用CRITIC权重法或信息量权重法;也或者专家打分数据,那么可使用AHP层次法或优序图法。 结合各类方法计算权重的原理

    2024年02月05日
    浏览(93)
  • Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

     本次案例还是适合人文社科领域,金融或者新闻专业。本科生做线性回归和主成分回归就够了,研究生还可以加随机森林回归,其方法足够人文社科领域的硕士毕业论文了。 有八个自变量,[\\\'微博平台可信度\\\',\\\'专业性\\\',\\\'可信赖性\\\',\\\'转发量\\\',\\\'微博内容质量\\\',\\\'时效性\\\',\\\'验证程度

    2023年04月08日
    浏览(75)
  • 聊聊基于Alink库的主成分分析(PCA)

    主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维和特征提取技术,用于将高维数据转换为低维的特征空间。其目标是通过线性变换将原始特征转化为一组新的互相无关的变量,这些新变量称为主成分,它们按照方差递减的顺序排列,以保留尽可能多的原始数据

    2024年02月08日
    浏览(35)
  • 模式识别实验:基于主成分分析(PCA)的人脸识别

    本文使用Python实现了PCA算法,并使用ORL人脸数据集进行了测试并输出特征脸,简单实现了人脸识别的功能。 ORL人脸数据集共包含40个不同人的400张图像,是在1992年4月至1994年4月期间由英国剑桥的Olivetti研究实验室创建。此数据集包含40个类,每个类含10张图片。所有的图像是以

    2024年02月05日
    浏览(45)
  • 【语音识别】基于主成分分析PCA结合最近邻KNN实现声音自动分类附matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月27日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包