版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习Python实战
项目3项目拓展KNN回归预测任务目标使用scikit-learn内置的make_regression()函数生成回归数据集,然后应用KNN算法进行回归预测。任务目标:KNN回归预测KNN算法不仅可以用于分类任务,也可以用于回归任务。在回归任务中,KNN算法不是取最近邻的多数,而是取最近邻的平均值作为预测值,即通过找出一个样本的k个最近邻居,将这些邻居的特征的平均值赋给该样本,就可以得到该样本的预测值。1.生成回归数据集首先,我们需要生成一个用于回归任务的模拟数据集。make_regression()函数可以生成一个线性回归数据集,并允许我们设置样本数量、特征数量、噪声水平等参数。#导入回归数据集生成工具fromsklearn.datasetsimportmake_regression#导入NumPy库importnumpyasnp#生成回归数据集X,y=make_regression(n_samples=200, #样本数量 n_features=1, #特征数量 noise=10, #噪声水平 random_state=42) #随机数种子2.数据可视化生成数据集后,我们通过散点图观察数据的分布情况。由于特征维数为1,可以直接将特征值作为横坐标,目标值作为纵坐标进行可视化,直观了解数据的整体趋势和噪声水平。#导入数据可视化工具importmatplotlib.pyplotasplt#解决中文乱码plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False#用来正常显示负号plt.figure(figsize=(10,6))#绘制散点图plt.scatter(X,y,label='原始数据')#添加标题、坐标轴标签、图例和网格plt.title("生成的回归数据集")plt.xlabel("特征值")plt.ylabel("目标值")plt.legend()plt.grid(True)plt.show()2.数据可视化运行代码,结果如下图所示。3.数据预处理KNN算法基于距离计算,因此特征的尺度对模型影响很大。如果特征值范围差异较大,尺度较大的特征会主导距离计算,导致模型偏差。因此,在应用KNN算法前,需要对特征进行标准化处理,使其均值为0、标准差为1。#导入数据标准化工具fromsklearn.preprocessingimportStandardScaler#数据标准化scaler=StandardScaler()X_scaled=scaler.fit_transform(X)4.拆分训练集和测试集将数据集拆分为训练集和测试集,训练集用于模型学习,测试集用于评估模型性能。这里按照80%训练集、20%测试集的比例进行。#导入数据集拆分工具fromsklearn.model_selectionimporttrain_test_split#拆分训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X_scaled,y,test_size=0.2,random_state=42)#输出训练集和测试集样本数print(f"训练集样本数:{X_train.shape[0]}")print(f"测试集样本数:{X_test.shape[0]}")运行代码,结果如下图所示。5.创建KNN回归模型与KNN分类不同,KNN回归用于预测连续值。KNeighborsRegressor类的工作原理是找到新样本
的k个
最
近
邻
居
,然
后
取
这
些
邻
居
目
标
值
的
平
均
值
作
为
预
测
结
果
。这
里
我
们
设
置
邻
居
数n_neighbors=5。#导入KNeighborsRegressor类fromsklearn.neighborsimportKNeighborsRegressor#创建KNN回归模型knn_reg=KNeighborsRegressor(n_neighbors=5) #设置邻居数为56.训练模型使用训练集训练KNN回归模型。#训练模型knn_reg.fit(X_train,y_train)7.在测试集上进行预测完成模型训练后,我们使用测试集的特征数据X_test进行预测,得到对应的预测值y_pred。#模型预测y_pred=knn_reg.predict(X_test)8.评估模型性能回归问题的评估指标与分类问题不同。这里使用MSE和R2两个常用指标来评估模型性能。#导入回归模型评估模块fromsklearn.metricsimportmean_squared_error,r2_score#方法1:使用MSE评估回归模型mse=mean_squared_error(y_test,y_pred)#方法2:使用R²
作为回归模型的评估指标r2=r2_score(y_test,y_pred)print("模型评估结果:")print(f"-均方误差(MSE):{mse:.2f}")print(f"-R2分数:{r2:.2f}")8.评估模型性能运行代码,结果如下图所示。回归模型的常用评估指标有MSE和R2。MSE用于衡量预测值与真实值之间差异的平方的平均值,值越小越好;R2表示模型解释的方差比例,值越接近1越好。9.可视化预测结果为了直观理解KNN回归的预测效果,我们绘制训练数据、测试数据以及KNN回归曲线,直观展示模型拟合情况。#创建一系列点用于绘制回归曲线X_plot=np.linspace(X.min(),X.max(),500).reshape(-1,1)y_plot=knn_reg.predict(X_plot)plt.figure(figsize=(10,6))plt.scatter(X_train,y_train,color='blue',label='Trainingdata',alpha=0.6)plt.scatter(X_test,y_test,color='green',label='Testdata',alpha=0.6)plt.plot(X_plot,y_plot,color='red',linewidth=2,label='KNNRegression')plt.title('KNNRegression(k=5)')plt.xlabel('Feature')plt.ylabel('T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行从业资格银行业专业实务案例分析专项练习
- 中级会计职称财务管理历年真题汇编解析
- 临床医学检验技术专业知识考前冲刺题库与解析
- 2027年小工装修合同二篇
- 2027年租赁合同和购买合同二篇
- 产品销售居间合同书
- 会计实操与理论培训服务协议
- 2024年5月湖北省圆创联盟高三语文试卷及答案
- 高等教育细胞质膜与细胞表面1
- 车间物料配送路线优化方案
- 2026年秋季高中军训动员大会 青春铸军魂
- 2026中国网络游戏玩家群体分析市场现状供需关系研究报告
- 2026新教材语文 21 第一场雪 教学课件
- 2026-2027学年统编版九年级历史上册知识点清单
- 2026年电梯安全管理员A证真题(附答案)
- 城镇污水处理厂建设工程监理规划
- 储能电站日常维护手册
- 粤港澳大湾区国际科技创新中心建设规划
- 载抗生素骨水泥治疗骨折相关感染规范化应用循证指南总结2026
- 《眼科》考试题库-2026年山东医师定期考核
- 《胎盘植入性疾病诊断和处理指南(2023)》深度解读
评论
0/150
提交评论