游民星空是用什么做的网站,wordpress shop路径在哪儿,网页游戏传奇盛世2,最好用的手机优化软件实验6 回归预测实验
一、实验目的
1#xff1a;了解机器学习中数据集的常用划分方法以及划分比例#xff0c;并学习数据集划分后训练集、验证集及测试集的作用。
2#xff1a;了解降维方法和回归模型的应用。 二、实验要求
数据集#xff08;LUCAS.SOIL_corr-实验6数据…实验6 回归预测实验
一、实验目的
1了解机器学习中数据集的常用划分方法以及划分比例并学习数据集划分后训练集、验证集及测试集的作用。
2了解降维方法和回归模型的应用。 二、实验要求
数据集LUCAS.SOIL_corr-实验6数据.exl为 LUCAS 土壤数据集每一行代表一个样本每一列代表一个特征特征包含近红外光谱波段数据spc列和土壤理化指标。
1. 对数据集进行降维处理。
2. 统计各土壤理化指标的最大值、最小值、均值、中位数并绘制各指标的箱型图。
3. 将数据集划分后训练集、验证集及测试集。使用偏最小二乘回归法预测某一指标含量。
4. 打印训练集和验证集的R2和RMSE。
5. 绘制训练集真实标签和模型预测的标签之间的散点图。如下图所示 三、实验结果
1利用PCA进行降维 在任务1中本实验采用主成分分析PCA方法对数据进行降维整体维度从1201个降低到500个。降维结束后打印数据维度的变化如下图所示。 2统计各个指标的数据并绘制箱型图
在任务2中本实验采用agg方法对数据进行聚合操作。首先从数据中选择包含了理化指标的列名的列表然后利用agg方法对目标列进行了多个聚合操作最终生成了最大值、最小值、均值和中位数的结果并保存到summary_stats这个二维数据结构之中。最终的处理结果如下图所示。 同时本实验采用plot方法分别生成了离群点未剔除和剔除后的箱型图。两种情况的最终结果如下图所示图1为离群点未剔除图2为离群点剔除。 3划分数据集使用偏最小二乘回归法预测pH.in.H2O指标含量 在任务3中本实验以811的比例将数据集随机划分成为训练集、验证集及测试集。 此外本实验调用机器学习库中的偏最小二乘回归法通过训练X_train和y_train来预测验证集和测试集的pH.in.H2O指标含量结果。整体代码如下图所示。 4打印训练集和验证集的R2 和 RMSE
在任务4中本实验调用机器学习库中的mean_squared_error函数和r2_score函数来计算验证集和测试集上的均方根误差结果和R2结果。整体代码和计算结果如下图所示图1为调用机器学习依赖的代码图2为验证集和测试集的均方根误差结果和R2结果。 5绘制真实标签和模型预测的标签间的散点图。
在任务5中本实验汇总了模型在训练集、验证集、测试集上的整体表现结果并进行了绘图展示。最终结果如下图所示其中蓝色的数据点表示数据来自训练集橙色的数据点表示数据来自验证集绿色的数据点表示数据来自测试集红色的yx直线为预测结果与真实值相等的标准直线。 同时本实验也分别对训练集、验证集、测试集散点图进行了散点图绘制和线性回归模型拟合。最终结果如下图所示图1为训练集结果图2为验证集结果图3为测试集结果其中红色的直线为使用线性回归模型拟合的回归线。 四、遇到的问题和解决方案
问题1一开始设置的主成分个数过小n_components10验证集和测试集的R2结果只能达到0.5左右实验得到的相关性不够好。 解决1增大主成分个数并发现当n_components过百后结果较好此时验证集和测试集的R2结果可以达到0.7。
问题2一开始进行特征列选择的时候全选了excel表格的所有列导致模型直接以因变量进行拟合验证集和测试集的R2高达0.99。结果如下图所示。 解决2上述结果显然不符合箱型图的离散点情况。在经过一定分析之后得知需要在选择需要进行PCA降维的特征列中排除最后4列理化指标。即把代码更改为【selected_columns data.columns[:-4].tolist()】。 五、实验总结和心得
1在计算模型评价机制的时候mean_squared_error函数中的squared参数用于控制均方误差MSE的计算方式。当squaredTrue时它表示计算的是均方误差的平方值即MSE。而当squaredFalse时它表示计算的是均方根误差RMSE即MSE的平方根。
2在划分数据集的时候设置random_state参数可以确保数据集分割的随机性可复现。即多次运行代码时相同的random_state值会产生相同的随机划分结果。
3在绘制箱型图的时候showfliers 参数用于控制箱线图中是否显示离群点outliers。如果将 showfliers 设置为 True则箱线图将显示离群点如果设置为 False则离群点将被隐藏只显示箱体和须部分。
4linear fit指的是使用线性回归模型对数据进行拟合即假设目标变量与特征之间存在线性关系。线性回归模型试图找到一条直线或在多维情况下是一个超平面以最佳方式拟合数据点使得观测到的数据点与模型预测的值之间的残差平方和最小化。
5在本实验中我们首先对土壤理化指标进行了统计分析包括计算最大值、最小值、均值和中位数这有助于了解指标的分布情况和基本统计特性。同时通过绘制每个指标的箱型图我们可以直观地感受数据的分布和可能的离群点。
6在本实验中如果使用python文件运行则每次需要较长时间等read_excel完成读入工作。后续思考后发现可以使用jupyter notebook的ipynb文件运行这样的话只需要读入一次数据到cell里面后续就可以不需要重复读入了实验效率会快很多。 六、程序源代码 各部分的任务操作在多行代码注释下构造。各段代码含有概念注释模块。 import pandas as pd from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import numpy as np from sklearn.model_selection import train_test_split from sklearn.cross_decomposition import PLSRegression from sklearn.metrics import mean_squared_error, r2_score # 读取数据集 data pd.read_excel(rC:\Users\86158\Desktop\LUCAS.SOIL_corr-实验6数据.xlsx) 任务2统计各土壤理化指标的最大值、最小值、均值、中位数并绘制各指标的箱型图。 # 获取理化指标的列数据最后4列 physical_chemical_columns data.columns[-4:] new_selected data[physical_chemical_columns] # 统计各理化指标的最大值max、最小值min、均值mean、中位数median summary_stats data[physical_chemical_columns].agg([max, min, mean, median]) print(各土壤理化指标的统计信息) print(summary_stats) # 离群点剔除前的箱型图 boxplot1 new_selected.plot(kindbox,showfliersTrue) plt.title(Box plot when outliers are within) plt.xlabel(Features) plt.ylabel(Values) plt.show() # 离群点剔除后的箱型图 boxplot2 new_selected.plot(kindbox,showfliersFalse) plt.title(Box plot when outliers are out) plt.xlabel(Features) plt.ylabel(Values) plt.show() 任务1对数据集进行降维处理。 # 选择需要进行PCA降维的特征列 selected_columns data.columns[:-4].tolist() # 替换为实际的特征列名称 print(降维前的特征,selected_columns) # 数据标准化 scaler StandardScaler() X_scaled scaler.fit_transform(data[selected_columns]) # 输出降维前的维度 print(降维前数据的维度, X_scaled.shape) # 使用PCA进行降维 pca PCA(n_components500) # 假设降维到10个主成分根据需要调整 X_reduced pca.fit_transform(X_scaled) # 输出降维后的维度 print(降维后数据的维度, X_reduced.shape) 任务3将数据集划分后训练集、验证集及测试集。使用偏最小二乘回归法预测某一指标含量。 # 选择要预测的指标列 target_column -4 # 选择最后一列 X X_reduced y data.iloc[:, target_column] # 划分数据集为训练集、验证集和测试集比例为811 X_train, X_temp, y_train, y_temp train_test_split(X, y, test_size0.2, random_state42) X_val, X_test, y_val, y_test train_test_split(X_temp, y_temp, test_size0.5, random_state42) # 调用最小二乘法使用的主成分为10个 pls PLSRegression(n_components500) pls.fit(X_train, y_train) # 预测验证集和测试集 y_val_pred pls.predict(X_val) y_test_pred pls.predict(X_test) 任务4打印训练集和验证集的R2 和 RMSE。 # 评估性能 val_rmse mean_squared_error(y_val, y_val_pred, squaredFalse) test_rmse mean_squared_error(y_test, y_test_pred, squaredFalse) val_r2 r2_score(y_val, y_val_pred) test_r2 r2_score(y_test, y_test_pred) print(f验证集均方根误差 (RMSE): {val_rmse}) print(f测试集均方根误差 (RMSE): {test_rmse}) print(f验证集R^2: {val_r2}) print(f测试集R^2: {test_r2}) 任务5绘制训练集真实标签和模型预测的标签之间的散点图。 y_train_pred pls.predict(X_train) # 计算训练集、验证集、测试集的线性拟合 train_slope, train_intercept np.polyfit(y_train, y_train_pred, 1) val_slope, val_intercept np.polyfit(y_val, y_val_pred, 1) test_slope, test_intercept np.polyfit(y_test, y_test_pred, 1) # 辅助线的画线范围 min_val min(min(y_train), min(y_val), min(y_test)) max_val max(max(y_train), max(y_val), min(y_test)) x_range [min_val, max_val] # 训练集、验证集、测试集散点图alpha控制透明度 plt.scatter(y_train, y_train_pred, labelTrain, alpha0.7) # plt.plot(x_range, train_slope * np.array(x_range) train_intercept, colorblue, linestyle--, labelLinear Fit (Train)) plt.scatter(y_val, y_val_pred, labelValidation, alpha0.7) # plt.plot(x_range, val_slope * np.array(x_range) val_intercept, colororange, linestyle--, labelLinear Fit (Validation)) plt.scatter(y_test, y_test_pred, labelTest, alpha0.7) # plt.plot(x_range, test_slope * np.array(x_range) test_intercept, colorgreen, linestyle--, labelLinear Fit (Test)) # 添加 yx 的标准预测直线 plt.plot(x_range, x_range, colorred, linestyle--, labelyx) # 图注 plt.xlabel(True Values) plt.ylabel(Predictions) plt.legend(locbest) plt.title(Scatter plot of True vs. Predicted Values) plt.show() # 单独画训练集 plt.scatter(y_train, y_train_pred, labelTrain, alpha0.7) plt.plot(x_range, train_slope * np.array(x_range) train_intercept, colorred, linestyle--, labelLinear Fit (Train)) plt.xlabel(True Values) plt.ylabel(Predictions) plt.legend(locbest) plt.title(Train dataset) plt.show() # 单独画验证集 plt.scatter(y_val, y_val_pred, labelValidation, alpha0.7) plt.plot(x_range, val_slope * np.array(x_range) val_intercept, colorred, linestyle--, labelLinear Fit (Validation)) plt.xlabel(True Values) plt.ylabel(Predictions) plt.legend(locbest) plt.title(Validation dataset) plt.show() # 单独画测试集 plt.scatter(y_test, y_test_pred, labelTest, alpha0.7) plt.plot(x_range, test_slope * np.array(x_range) test_intercept, colorred, linestyle--, labelLinear Fit (Test)) plt.xlabel(True Values) plt.ylabel(Predictions) plt.legend(locbest) plt.title(Test dataset) plt.show()
文章转载自: http://www.morning.jikuxy.com.gov.cn.jikuxy.com http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.tpfny.cn.gov.cn.tpfny.cn http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn http://www.morning.yqsq.cn.gov.cn.yqsq.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.xrftt.cn.gov.cn.xrftt.cn http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.zryf.cn.gov.cn.zryf.cn http://www.morning.lysrt.cn.gov.cn.lysrt.cn http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn http://www.morning.pylpd.cn.gov.cn.pylpd.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.rxlck.cn.gov.cn.rxlck.cn http://www.morning.cqrenli.com.gov.cn.cqrenli.com http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn http://www.morning.yjprj.cn.gov.cn.yjprj.cn http://www.morning.jhyfb.cn.gov.cn.jhyfb.cn http://www.morning.fylsz.cn.gov.cn.fylsz.cn http://www.morning.dmtld.cn.gov.cn.dmtld.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.ljjph.cn.gov.cn.ljjph.cn http://www.morning.kqpq.cn.gov.cn.kqpq.cn http://www.morning.zbgqt.cn.gov.cn.zbgqt.cn http://www.morning.jbnss.cn.gov.cn.jbnss.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn http://www.morning.gcqdp.cn.gov.cn.gcqdp.cn http://www.morning.jzklb.cn.gov.cn.jzklb.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.pkmw.cn.gov.cn.pkmw.cn http://www.morning.gbcnz.cn.gov.cn.gbcnz.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.bmts.cn.gov.cn.bmts.cn http://www.morning.cbczs.cn.gov.cn.cbczs.cn http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn http://www.morning.zlkps.cn.gov.cn.zlkps.cn http://www.morning.thzgd.cn.gov.cn.thzgd.cn http://www.morning.sjqpm.cn.gov.cn.sjqpm.cn http://www.morning.gfmpk.cn.gov.cn.gfmpk.cn http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn http://www.morning.wdprz.cn.gov.cn.wdprz.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.tkrwm.cn.gov.cn.tkrwm.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.plwfx.cn.gov.cn.plwfx.cn http://www.morning.tgnr.cn.gov.cn.tgnr.cn http://www.morning.cwtrl.cn.gov.cn.cwtrl.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn http://www.morning.4q9h.cn.gov.cn.4q9h.cn http://www.morning.newfeiya.com.cn.gov.cn.newfeiya.com.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.tkyry.cn.gov.cn.tkyry.cn http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.zlnyk.cn.gov.cn.zlnyk.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.tnjz.cn.gov.cn.tnjz.cn http://www.morning.jmbfx.cn.gov.cn.jmbfx.cn http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn