数据分析案例-苹果品质数据可视化分析+建模预测
🤵♂️ 个人主页:@艾派森的个人主页
✍🏻作者简介: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 可以准确地指定要查询的商品。例如&#…...
Soanrquber集成Gitlab 之 gitlab用户配置和身份验证
集成Gitlab : gitlab用户配置和身份验证 说明: 使得Sonarquber的用户登录与Gitlab的用户登录/认证模块同步 什么是 SonarQube? SonarQube 是一个开源的代码质量管理平台,用于持续检查和分析代码的质量和安全性。它提供了多种功…...
沪深A股上市公司数据报告分析
数据分析报 目录 数据分析报告 1.引言 1.1 背景介绍 1.2 报告目的 1.3 报告范围 1.4 关键术语定义 2. 数据收集与预处理 2.1 数据来源概述 2.2 数据收集过程 2.3 数据预处理步骤 3. 数据可视化 3.1分析地区对公司数量的影响 3.2分析行业分类是否影响公…...
Elasticsearch Search Template 搜索模板
Elasticsearch Search Template 所谓 search template 搜索模板其实就是: 预先定义好查询语句 DSL 的结构并预留参数搜索的时再传入参数值渲染出完整的 DSL ,最后进行搜索 使用搜索模板可以将 DSL 从应用程序中解耦出来,并且可以更加灵活的…...
2024年10月-2025年5月 Oracle 19c OCM 考试安排
2024年10月-2025年5月 Oracle 19c OCM 考试安排: 北京考场: 上海考场: 更新时间:2024年10月25日 Oracle 19c OCM往期学员成绩展示: Oracle 19c OCM认证证书(电子版)...
VMware虚拟机安装KailLinux系统
目录 简介 系统镜像下载 配置虚拟机 安装系统镜像 切换中文界面 后置内容 修改root密码 ssh服务 对互联网的热爱,尝试安装另一套Linux系统。 简介 Kali Linux是一个专为网络安全和渗透测试设计的Linux发行版,它包含了大量安全相关的工具和软件…...
G2 基于生成对抗网络(GAN)人脸图像生成
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 基于生成对抗网络(GAN)人脸图像生成 这周将构建并训练一个生成对抗网络(GAN)来生成人脸图像。 GAN 原理概述 …...
R学习笔记-单因素重复测量方差分析
R语言之重复测量方差分析——ezANOVA的使用与解析 - 知乎 单因素重复测量方差分析(One-Way Repeated Measures ANOVA)——R软件实现 - 梦特医数通 ### 清空environment rm(list ls()) ### 加载包 if (!require("tidyverse")) install.packages("tidyverse&quo…...
HTML练习题:彼岸的花(web)
展示效果: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彼岸の花</title><style…...
(蓝桥杯C/C++)——常用库函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…...
GPT-Sovits-2-微调模型
1. 大致步骤 上一步整理完数据集后,此步输入数据, 微调2个模型VITS和GPT,位置在 <<1-GPT-SoVITS-tts>>下的<<1B-微调训练>> 页面的两个按钮分别执行两个文件: <./GPT_SoVITS/s2_train.py> 这一步微调VITS的预训练模型…...
做网站推广见客户的话术/百度快照查询
一、内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 1、成员内…...
网站推广软件推广/做app软件大概多少钱
最近想在公司机器上使用耳机,接到前端插口上,无反应,无声音。接到后端,有反应,有声音。估计是机箱和主板的音频线没有接好。遂开机箱查看,得类似图如下:我的主板是8i945P-G,此图红圈…...
公司网站建设服务公司/宁德市自然资源局
完毕Swift的语法关之后。来点实际的Task,第一个任务是写一个tableview,使用cocoaTouch里tableview这个经常使用的控件。 创建project。选择Swift语言 首先是用Obejctive-C写的最简单的tableview 点击下载源代码 然后是Swift写的tableview 点击下载源代码…...
看b站免费推广/网站品牌推广策略
一、源码分析 先分析源码,再来总结,从启动类开始,只会截取部分重要代码,但方法调用不会断 先来看看bean生命周期源码的脑图,可以跟着这个脑图来分析源码 如果看不清脑图可以用电脑打开该链接查看:http:/…...
温江做网站公司/班级优化大师下载安装最新版
文章目录问题描述解题报告实现代码参考资料问题描述 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。 如果小易到达过某个城市就视为小易游历过…...
wordpress支付宝/360推广登录入口
最近研究基于 GeoServer 的开源 GIS 框架,其中构建 GIS database 需要使用 PostgreSQL PostGIS 插件。花了些时间学习,这里记录一下。如有错误,感谢不吝指正~~本文地址:https://segmentfault.com/a/1190000…...