Python数据分析-植物生长数据分析(机器学习模型和神经网络模型) 一、研究背景植物生长受多种环境因素的影响包括土壤类型、日照时间、浇水频率、肥料类型、温度和湿度等。这些因素不仅影响植物的生长速度和健康状况还对植物在不同生长阶段的表现有显著影响。随着气候变化和环境污染问题的加剧研究如何优化植物生长条件以提高农作物产量和质量变得尤为重要。本研究旨在通过分析不同环境变量对植物生长里程碑的影响找出最佳的种植条件为农民和园艺师提供科学依据帮助他们在不同环境下进行有效的种植管理。二、研究意义提高农作物产量和质量通过了解不同环境因素对植物生长的影响可以优化种植条件从而提高农作物的产量和质量。促进可持续农业发展通过科学的种植管理减少对化学肥料和过量水资源的依赖推动农业的可持续发展。应对气候变化挑战为应对气候变化带来的农业挑战提供数据支持帮助制定应对极端天气和环境变化的种植策略。增强农民和园艺师的决策能力提供具体的种植指导帮助农民和园艺师在实际生产中做出更明智的决策提高生产效率和经济效益。三、实证分析该数据集包含Growth_Milestone目标和一些影响它的因素 这个问题考虑为二元分类 第 1 部分 包含对数据的一些分析除了准备和清理数据之外的DataExplantory 第2部分 我将使用一些传统的机器学习技术目标根据提供的环境和管理因素对植物的生长里程碑进行预测和分类。 我们的目标预测植物的生长阶段或里程碑。 特征 Soil_Type植物生长的土壤类型或成分。 Sunlight_Hours植物接受阳光照射的持续时间或强度。 Water_Frequency植物浇水的频率表示浇水时间表。 Fertilizer_Type用于滋养植物的肥料类型。 Temperature:植物生长的环境温度条件。 Humidity植物周围环境中的水分或湿度水平。 Growth_Milestone指示植物生长过程中的阶段或重要事件的描述或标记。导入包import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 import IPython.display from sklearn.preprocessing import LabelEncoder,StandardScaler from sklearn.model_selection import train_test_split from sklearn.base import BaseEstimator , TransformerMixin from sklearn.feature_selection import VarianceThreshold ,f_classif ,SelectKBest from sklearn.ensemble import RandomForestClassifier from sklearn import metrics from sklearn import tree from sklearn.metrics import classification_report,confusion_matrix ,ConfusionMatrixDisplay from sklearn import svm from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB读取数据和查看其基本信息datapd.read_csv(data.csv) data.head(5)获取其他信息随后进行描述性统计分析data.describe().T接下来查看数据类型和查看缺失值类型data.dtypes data.isna().mean()接下来可视化查看 GrowthMilestone的占比f{family:serif,size:25,color:r} plt.title(Animia Distribution,fontdictf) explicitdata[GrowthMilestone].value_counts() plt.pie(xexplicit,labels[Not GrowthMilestone,GrowthMilestone],colors[g,r],explode[0.1,0],autopct%1.1f%%) plt.legend() plt.show()观察有多少个 SoilTypeplt.title(SoilType Distribution,fontdictf) explicitdata[SoilType].value_counts() plt.pie(xexplicit,labels[clay,sandy,loam],colors[g,b,r],explode[0.2,0.1,0.1],autopct%1.1f%%) plt.legend() plt.show()Water_Frequency data[WaterFrequency].value_counts() plt.subplot(4, 4, 1) # Create the first subplot plt.pie( xWater_Frequency, labels[daily, bi-weekly,weekly], colors[g,r,b], explode[0.1, 0,0.1], autopct%1.1f%%, radius2, ) plt.title(Water_Frequency_observation, fontdictf1) plt.legend() # Plot 2 Fertilizer_Type data[FertilizerType].value_counts() plt.subplot(4, 4, 2) # Create the second subplot plt.pie( xFertilizer_Type, labels[none, chemical,organic], colors[orange,g,y], explode[0.1, 0,0.1], autopct%1.1f%%, radius2, ) plt.title(Fertilizer_Type_observation, fontdictf1) plt.legend() # Adjust the spacing between subplots plt.subplots_adjust(wspace2,hspace1) #plot3: # 观察有多少个 SoilType plt.subplot(4,4,3) explicitdata[SoilType].value_counts() plt.pie(xexplicit,labels[clay,sandy,loam],colors[g,b,r],explode[0.2,0.1,0.1],autopct%1.1f%%,radius2) plt.title(SoilType Distribution,fontdictf1) plt.legend() plt.show() plt.subplots_adjust(wspace2,hspace1) # plot4: # 观察有多少人拥有 GrowthMilestone plt.subplot(4,4,4) plt.title(GrowthMilestone_Distribution,fontdictf1) explicitdata[GrowthMilestone].value_counts() plt.pie(xexplicit,labels[Not GrowthMilestone,GrowthMilestone],colors[g,r],explode[0.1,0],autopct%1.1f%%,radius6) plt.legend() plt.show() # pacing between subplots plt.subplots_adjust(wspace2,hspace1)观察每种土壤类型有多少hours_sunlght观察 Soil_Type vs. GrowthMilestone要知道每种土壤中的植物数量plt.figure(figsize(7,8)) plt.title(Distribution of GrowthMilestone vs. Soil_Type,fontdictf) topdata.groupby(SoilType)[GrowthMilestone].sum().sort_values(ascendingFalse) sns.barplot(xtop.index,ytop.values,colorr,palettecoolwarm) plt.xticks(rotation45,colorb) plt.xlabel(Soil_Type,fontdictf) plt.ylabel(GrowthMilestone,fontdictf) plt.legend(titleNumber of Grough in Every soil,prop{size: 12}) plt.show()观察 Fertilizer_Type vs.温度分布 ontinous data的分布for col in data.select_dtypes(number): sns.displot(data[col],colorr) plt.title(presention of col,fontdictf)创建连续特征的对图plt.figure(figsize(25, 15), dpi300) sns.set(stylewhitegrid) sns.set_palette(coolwarm) sns.pairplot(data.select_dtypes(includefloat64), plot_kws{alpha: 0.6, s: 80})接下来查看相关系数和热力图corrdata.select_dtypes(number).corr() print(corr) print(-*50) kendalldata.select_dtypes(number).corr(methodkendall) print(kendall) print(-*50) spearmandata.select_dtypes(number).corr(methodspearman) print(spearman) print(-*50) pearsondata.select_dtypes(number).corr(methodpearson) print(pearson) print(-*50) # plot the correlation Matrix : plt.figure(figsize(25,15),dpi200) plt.title(Heatmap-Correlation-Matrix,fontdictf) sns.heatmap(data.select_dtypes(number).corr(),annotTrue,fmt0.3f,cmapBlues) plt.xlabel(Features,fontdictf) plt.ylabel(Features,fontdictf) plt.xticks(rotation45,colorb) plt.yticks(rotation-45,colorb) plt.show()接下来划分特征和响应变量 进行模型建立和预测# 划分X和Y xdata.drop(columnsGrowthMilestone,axis1) ydata[GrowthMilestone] print(np.shape(x),np.shape(y)) print(len(x),len(y))x_train,x_test,y_train,y_testtrain_test_split(x,y,test_size0.2,stratifyy,random_state42) print(np.shape(x_train),np.shape(x_test)) print(np.shape(y_train),np.shape(x_test))# 随机森林模型RC1RandomForestClassifier(random_state42,n_jobs-1,max_depth5,n_estimators100) RC1.fit(x_train,y_train) y_predictRC1.predict(x_test) y_predict[:10]#提升准确率 np.random.seed() for i in range(10,110,10): print(fat n_estimators {i} n_estimators) RC2RandomForestClassifier(n_estimatorsi).fit(x_train,y_train) print(faccuracy{RC2.score(x_test,y_test)*100:0.2f}%)决策树决策树可视化plt.figure(figsize(15,15),dpi100) tree.plot_tree(DT) plt.title(-- Decision_Tree --,fontdictf) plt.show()支持向量机使用 Tensorflow 构建神经网络模型from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense,Input,Dropout from tensorflow.keras.losses import BinaryCrossentropy from tensorflow.keras.regularizers import l2 model_r.compile( lossBinaryCrossentropy(from_logitsTrue), optimizertf.keras.optimizers.Adam(learning_rate0.001), metrics[accuracy] )绘制训练历史准确率和损失plt.figure(figsize(12, 6)) # Plot training validation accuracy values plt.subplot(1, 2, 1) plt.plot(history.history[accuracy]) plt.plot(history.history[val_accuracy]) plt.title(Model Accuracy) plt.xlabel(Epoch) plt.ylabel(Accuracy) plt.legend([Train, Test], locupper left) # Plot training validation loss values plt.subplot(1, 2, 2) plt.plot(history.history[loss]) plt.plot(history.history[val_loss]) plt.title(Model Loss) plt.xlabel(Epoch) plt.ylabel(Loss) plt.legend([Train, Test], locupper left) plt.tight_layout() plt.show()关于机器学习模型的一些结果1- RandomForestClassifier accuracy -- %58.97%并且改进模型后我们发现 n_estimators 20准确率--64.1%提高了5.13%2-DecissionTreeClassifier 准确率 -- 51.28% %3-支持向量机准确率--48.72% 我们不能说最好的模型是 RandomForestClassifier 因为每个模型都有优点和缺点但是这个个模型为我们提供了高精度。 这是我们从传统机器学习模型中得到的结果。 关于使用 Tensorflow 构建的神经网络模型我们发现准确率--- 67.66%改进后相同。四、结论通过对数据的分析我们发现了以下几点关键结论土壤类型和植物生长不同土壤类型对植物生长的影响显著某些土壤类型在特定条件下能够显著促进植物的生长。日照时间和水分管理适当的日照和科学的水分管理能够显著提高植物的生长里程碑达到率避免了过多或过少的水分对植物造成的负面影响。肥料类型和植物健康有机肥料相比化学肥料对植物生长的促进作用更加显著且对环境更加友好。环境温湿度的影响温度和湿度对植物生长具有综合性影响在适宜的温湿度条件下植物的生长里程碑达到率最高。这些研究结论为农作物种植和管理提供了科学依据有助于在不同环境条件下进行精准农业操作提升农业生产效率和可持续发展水平。创作不易希望大家多点赞关注评论类似代码或报告定制可以私信

相关新闻

最新新闻

Dynamix《Sunset Toybox》MEGA13攻略:双押与侧轨读谱系统练法

Dynamix《Sunset Toybox》MEGA13攻略:双押与侧轨读谱系统练法

之前在 Dynamix 里挑战《Sunset Toybox feat.桃雛なの》的 MEGA13 谱面时,反复卡在双押断连、侧轨漏读和副歌段手忙脚乱这几个环节上。网上的讨论大多集中在分数截图和个别的躲避姿势,缺少一套能从零开始上手的完整思路。所以这篇文章决定把这首歌从背景…

2026/9/2 13:23:33
MediaPipe GPU 加速配置教程:3 步自检 + 一张报错速查表,FPS 卡 15 的坑一次踩完

MediaPipe GPU 加速配置教程:3 步自检 + 一张报错速查表,FPS 卡 15 的坑一次踩完

MediaPipe GPU 加速配置教程:3 步自检 一张报错速查表,FPS 卡 15 的坑一次踩完 【免费下载链接】mediapipe Cross-platform, customizable ML solutions for live and streaming media. 项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe…

2026/9/2 13:23:33
出海应用怎么做多语言:Awesome Agent Skills 翻译技能实操指南

出海应用怎么做多语言:Awesome Agent Skills 翻译技能实操指南

出海应用怎么做多语言:Awesome Agent Skills 翻译技能实操指南 【免费下载链接】awesome-agent-skills A curated collection of 1000 agent skills from official dev teams and the community, compatible with Claude Code, Codex, Gemini CLI, Cursor, and more…

2026/9/2 13:23:33
从AI工具到认知系统:YouMind架构解析与工程实践

从AI工具到认知系统:YouMind架构解析与工程实践

最近跟不少做AI产品的朋友聊天,大家都有一个共同的感受:那些能用一句话就讲清楚自己是干嘛的AI产品,好像越来越难活下去了。比如“AI帮你写周报”、“AI一键生成PPT”、“AI聊天机器人”,这些概念听起来很酷,但用户新鲜…

2026/9/2 13:23:33
Storyteller自动化对齐:构建沉浸式阅读的多模态闭环系统

Storyteller自动化对齐:构建沉浸式阅读的多模态闭环系统

沉浸式阅读产品最近两年非常热,但绝大多数产品都卡在同一个地方:用户刚进入阅读状态,就被“内容错位、音频与文本不同步、AI 生成素材跟不上阅读进度”硬生生打断。问题不在于内容不够好,而在于整个系统缺少一条自动化的对齐链路。…

2026/9/2 13:23:33
ExplorerPatcher 怎么用:把 Windows 11 界面改回 Windows 10 的完整指南

ExplorerPatcher 怎么用:把 Windows 11 界面改回 Windows 10 的完整指南

ExplorerPatcher 怎么用:把 Windows 11 界面改回 Windows 10 的完整指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 刚换到 Wi…

2026/9/2 13:18:33