数据分析案例-苹果品质数据可视化分析+建模预测
🤵♂️ 个人主页:@艾派森的个人主页
✍🏻作者简介: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学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

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

【前端】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 可以准确地指定要查询的商品。例如&#…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...