当前位置: 首页 > news >正文

数据分析案例-苹果品质数据可视化分析+建模预测

 

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

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


目录

1.项目背景

2.数据集介绍

3.技术工具

4.导入数据

5.数据可视化

6.特征工程

7.模型构建

8.模型评估


1.项目背景

        在当今社会中,消费者对产品质量和安全性的关注越来越高。苹果作为一种常见的水果,其品质对消费者来说至关重要。因此,对苹果品质数据进行可视化分析并建立预测模型,对于生产者和消费者都具有重要意义。

        苹果品质受多种因素影响,包括但不限于栽培环境、品种、采摘时间、运输条件等。通过对苹果品质数据进行可视化分析,我们可以探索这些因素之间的关系,并了解它们对苹果品质的影响程度。这有助于生产者优化栽培管理、采摘和运输过程,以提高苹果的质量。

        另外,建立预测模型可以帮助生产者预测苹果品质,提前发现可能影响苹果品质的因素,并采取相应的措施,以保证苹果质量的稳定和可靠性。这对于生产者来说是一种重要的管理工具,可以帮助他们更好地管理生产过程,提高苹果的市场竞争力。

        综上所述,通过对苹果品质数据进行可视化分析和建模预测,可以帮助生产者更好地了解苹果品质的形成机制,优化生产管理,并提高产品质量,从而满足消费者对高质量和安全的苹果的需求。

2.数据集介绍

        本数据集来源于Kaggle,原始数据集共有4001条,9个变量,包括苹果的相关品质信息,比如大小、重量、甜度、酸度等等。

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.导入数据

导入第三方库并加载数据集

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.preprocessing import LabelEncoder
import plotly.express as pxdf = pd.read_csv("apple_quality.csv")
df.head()

查看数据大小 

 查看数据基本信息

c

查看数据描述性统计分析

统计缺失值情况

5.数据可视化

# 显示交互式散点图
fig = px.scatter(df, x='Size', y='Weight', color='Quality', hover_data=['Sweetness', 'Crunchiness'],title='Interactive Scatter Plot: Size vs. Weight', labels={'Size': 'Apple Size', 'Weight': 'Apple Weight'})# 展示
fig.show()

scatter_3d_fig = px.scatter_3d(df, x='Sweetness', y='Crunchiness', z='Juiciness', color='Quality',title='3D Scatter Plot: Sweetness vs. Crunchiness vs. Juiciness',labels={'Sweetness': 'Sweetness', 'Crunchiness': 'Crunchiness', 'Juiciness': 'Juiciness'})
scatter_3d_fig.show()

pie_fig = px.pie(df, names='Quality', title='Distribution of Apple Quality')
pie_fig.show()

le = LabelEncoder()
df['Quality'] = le.fit_transform(df['Quality'])# 计算相关矩阵
correlation_matrix = df.corr()
# 热力图
heatmap_fig = px.imshow(correlation_matrix, color_continuous_scale='Viridis',labels=dict(color='Correlation'), title='Correlation Heatmap')
heatmap_fig.show()

parallel_fig = px.parallel_coordinates(df, color='Quality',dimensions=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],labels={'Quality': 'Apple Quality'},title='Parallel Coordinates Plot of Apple Attributes')
parallel_fig.show()

box_fig = px.box(df, x='Quality', y=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],labels={'variable': 'Attribute', 'value': 'Value'},title='Distribution of Attributes by Apple Quality')
box_fig.show()

scatter_matrix_fig = px.scatter_matrix(df, dimensions=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],color='Quality',title='Scatter Matrix: Pairwise Relationships between Attributes')
scatter_matrix_fig.show()

agg_df = df.groupby('Quality').mean().reset_index()
melted_df = pd.melt(agg_df, id_vars=['Quality'], value_vars=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],var_name='Attribute', value_name='Value')
radar_fig = px.line_polar(melted_df, r='Value', theta='Attribute', line_close=True, color='Quality',title='Radar Chart: Profile of Apple Attributes')
radar_fig.show()

line_chart_fig = px.line(df, x='Size', y='Sweetness', color='Quality',title='Line Chart: Trend of Sweetness over Size')
line_chart_fig.show()

6.特征工程

准备建模数据并拆分数据集为训练集和测试集

df = pd.get_dummies(df, columns=['Quality'], drop_first=True)# 准备建模数据
X = df.drop(['A_id', 'Quality_1'], axis=1)
y = df['Quality_1']
# 拆分数据集为训练集和测试集
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)

7.模型构建

构建逻辑回归模型

from sklearn.linear_model import LogisticRegression
# 构建逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

8.模型评估

from sklearn.metrics import accuracy_score, classification_report, confusion_matrix# 评估模型
accuracy = accuracy_score(y_test, y_pred)
classification_report_result = classification_report(y_test, y_pred)
confusion_matrix_result = confusion_matrix(y_test, y_pred)
print("Accuracy:", accuracy)
print("\nClassification Report:\n", classification_report_result)
print("\nConfusion Matrix:\n", confusion_matrix_result)

源代码 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.preprocessing import LabelEncoder
import plotly.express as pxdf = pd.read_csv("apple_quality.csv")
df.head()
df.shape
df.info()
df.describe()
df.isnull().sum()
# 删除具有非数字“Acidity”值的行
df = df[pd.to_numeric(df['Acidity'], errors='coerce').notnull()]
# “Acidity”列转换为浮点数
df['Acidity'] = df['Acidity'].astype(float)
df.info()
# 显示交互式散点图
fig = px.scatter(df, x='Size', y='Weight', color='Quality', hover_data=['Sweetness', 'Crunchiness'],title='Interactive Scatter Plot: Size vs. Weight', labels={'Size': 'Apple Size', 'Weight': 'Apple Weight'})# 展示
fig.show()
scatter_3d_fig = px.scatter_3d(df, x='Sweetness', y='Crunchiness', z='Juiciness', color='Quality',title='3D Scatter Plot: Sweetness vs. Crunchiness vs. Juiciness',labels={'Sweetness': 'Sweetness', 'Crunchiness': 'Crunchiness', 'Juiciness': 'Juiciness'})
scatter_3d_fig.show()
pie_fig = px.pie(df, names='Quality', title='Distribution of Apple Quality')
pie_fig.show()
le = LabelEncoder()
df['Quality'] = le.fit_transform(df['Quality'])# 计算相关矩阵
correlation_matrix = df.corr()
# 热力图
heatmap_fig = px.imshow(correlation_matrix, color_continuous_scale='Viridis',labels=dict(color='Correlation'), title='Correlation Heatmap')
heatmap_fig.show()
parallel_fig = px.parallel_coordinates(df, color='Quality',dimensions=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],labels={'Quality': 'Apple Quality'},title='Parallel Coordinates Plot of Apple Attributes')
parallel_fig.show()
box_fig = px.box(df, x='Quality', y=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],labels={'variable': 'Attribute', 'value': 'Value'},title='Distribution of Attributes by Apple Quality')
box_fig.show()
scatter_matrix_fig = px.scatter_matrix(df, dimensions=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],color='Quality',title='Scatter Matrix: Pairwise Relationships between Attributes')
scatter_matrix_fig.show()
agg_df = df.groupby('Quality').mean().reset_index()
melted_df = pd.melt(agg_df, id_vars=['Quality'], value_vars=['Size', 'Weight', 'Sweetness', 'Crunchiness', 'Juiciness', 'Ripeness'],var_name='Attribute', value_name='Value')
radar_fig = px.line_polar(melted_df, r='Value', theta='Attribute', line_close=True, color='Quality',title='Radar Chart: Profile of Apple Attributes')
radar_fig.show()
line_chart_fig = px.line(df, x='Size', y='Sweetness', color='Quality',title='Line Chart: Trend of Sweetness over Size')
line_chart_fig.show()
df = pd.get_dummies(df, columns=['Quality'], drop_first=True)# 准备建模数据
X = df.drop(['A_id', 'Quality_1'], axis=1)
y = df['Quality_1']
# 拆分数据集为训练集和测试集
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
# 构建逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix# 评估模型
accuracy = accuracy_score(y_test, y_pred)
classification_report_result = classification_report(y_test, y_pred)
confusion_matrix_result = confusion_matrix(y_test, y_pred)
print("Accuracy:", accuracy)
print("\nClassification Report:\n", classification_report_result)
print("\nConfusion Matrix:\n", confusion_matrix_result)

心得与体会:

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

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

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

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

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

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

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

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

相关文章:

数据分析案例-苹果品质数据可视化分析+建模预测

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

沈阳乐晟睿浩科技有限公司抖音小店运营创新

在当今这个数字化迅猛发展的时代,电子商务已经成为推动经济增长的重要引擎。而在电商的广阔舞台上,短视频与直播带货的崛起无疑是最为耀眼的明星之一。作为这一领域的佼佼者,抖音小店凭借其庞大的用户基础和独特的算法优势,吸引了…...

【前端】CSS知识梳理

基础:标签选择器、类选择器、id选择器和通配符选择器 font:font-style(normal) font-weight(400) font-size(16px) /line-height(0) font-family(宋体) 复合: 后代选择器( )、子选择器(>)、并集选择器(…...

【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译

最近学习sylar项目,编译项目时遇到链接库不匹配的问题,记录下自己解决问题过程,虽然过程很艰难,但还是解决了,以下内容供大家参考! undefined reference to 问题分析 项目编译报错 /usr/bin/ld: ../lib/lib…...

IDEA解决 properties 文件乱码问题

博主介绍: 计算机科班人,全栈工程师,掌握C、C#、Java、Python、Android等主流编程语言,同时也熟练掌握mysql、oracle、sqlserver等主流数据库,具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、…...

超越Jira?2024年探索项目管理新工具!

一、Jira 在项目管理中的地位 Jira 作为一款在项目管理领域久负盛名的工具,有着不可忽视的地位。它以强大的问题跟踪和管理功能著称,无论是软件缺陷、新功能需求、任务分配还是技术难题的解决,都能精准把控。其高可定制性更是满足了不同团队…...

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】 问题一:讲一讲计算图中pytorch是什么,TensorFlow是什么?1. PyTorch2. TensorFlow区别总结 问题二:Llama…...

凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级

恒指正处在一种“奇妙”的波动当中。低估反弹,瞬时拉高,极速回调。这些变化集中在一条曲线上,让市场无所适从。 但事实上,所有的趋势一定总是以长期为锚。这个长期的尺度,可能会超过一般人的预估。因为中间需要经历很…...

Oracle视频基础1.2.1练习

1.2.1 需求: 完整格式查看所有用户进程判断oracle启动状态 连接sqlplus不登陆 以sysdba身份登陆,通过登陆信息判断oracle启动状态 启动数据库,查系统全局区动态组件表 使用shell,启动监听然后返回sql ps -ef sqlplus /nolog con…...

15、基于AT89C52的数码电子时钟proteus仿真设计

一、仿真原理图: 二、仿真效果: 三、相关代码: 1、timer0定时中断: void Time0(void ) interrupt 1 using 1 { count++; if(count == 20) { count = 0; second++; if(second >= 60) { second = 0; …...

UML总结

零:学习链接 UML_哔哩哔哩_bilibili 一:UML概述 二:类图 类图(Class Diagram)是统一建模语言(UML)中一种重要的图形表示,用于描述系统中的类及其之间的关系。它是面向对象设计中常…...

网站被浏览器提示不安全怎么办?——附解决方案

当你的网站被浏览器标记为不安全时,这通常意味着有一些问题需要解决。以下是一些解决这个问题的步骤: 检查SSL证书:首先,确保你的网站使用了有效的SSL证书。SSL证书可以加密浏览器和服务器之间的数据传输,保护用户数据…...

“前端兼容——CSS篇”(进阶版)

“前端兼容——CSS篇”(进阶版) 上一篇文章写了css 兼容问题处理的基础篇 点击这里基础篇—传送门,这里想给粉丝分享一下css 更深一点的兼容场景,和处理方案 文章目录 “前端兼容——CSS篇”(进阶版)进阶CS…...

使用Docker Compose简化微服务部署

文章目录 Docker Compose简介安装Docker Compose在Windows上安装Docker Compose在macOS上安装Docker Compose在Linux上安装Docker Compose 创建Docker Compose文件创建compose文件构建并运行服务 使用Docker Compose网络定义网络验证网络连接 使用Docker Compose卷定义卷使用卷…...

2025考研各省市网上确认时间汇总!

2025考研各省市网上确认时间汇总! 安徽:11月1日至5日 福建:11月1日-11月5日 山东:10月31日9:00至11月5日12:00 新疆:10月31日至11月4日17:00 湖南:11月1日9:00-4日12:00 广东:10月下旬至1…...

SSL/TLS 密码套件漏洞分析以及修复方法

1. 前言 在当今数字化时代,网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段,广泛应用于各类网络应用中。然而,如同任何技术一样,SSL/TLS 也并非绝对安全,存在着一些可能被攻击者利用的漏洞。本文将深入…...

[Vue warn]: Do not use built-in or reserved HTML elements as component id:

这个Vue警告信息表明不要将内置或保留的HTML元素名称用作组件的ID。在Vue中,组件的ID应该是唯一的,以确保没有冲突。很可能是一个保留字或者是一个内置的HTML元素名称,所以Vue拒绝了这样的用法。 解决方法: 更改组件的ID&#x…...

【大数据学习 | kafka】kafka的shell操作

1. topic的管理命令(kafka-topics.sh) 参数如下: 1.1 创建 # 创建 kafka-topics.sh --bootstrap-server nn1:9092 --create --topic topic_a --partitions 3 --replication-factor 2 # --bootstrap-server 指定集群地址,因为每…...

UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因

两个Gradle工程的现象 在出安卓aab包时,观察到存在以下两个Gradle工程: 1、Intermediate\Android\arm64\gradle (称为arm64的Gradle) 2、Intermediate\Android\gradle(称为根下的Gradle) 它们存在一些小…...

淘宝API接口( item_get- 淘宝商品详情查询)

淘宝商品详情查询 API(item_detail)主要用于获取淘宝商品的详细信息,以下是相关介绍: 请求参数: num_iid:必填参数,代表商品的唯一标识 ID。通过该 ID 可以准确地指定要查询的商品。例如&#…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...