首页 > 分享 > 【python机器学习】KNN算法实现回归(基于鸢尾花数据集)

【python机器学习】KNN算法实现回归(基于鸢尾花数据集)

本文基于鸢尾花数据集

本文基于鸢尾花 数据集实现
数据集:数据集网盘下载
提取码:p2v9
用前3个特征实现第4个特征的回归预测

导入库

import numpy as np import pandas as pd 12' 读取数据集

data = pd.read_csv(r"dataset/iris.arff.csv") #删除不需要的class列,因为现在进行回归预测,类别信息就没用了。 data.drop("class",axis=1,inplace=True) #删除重复的记录 data.drop_duplicates(inplace=True) 12345

在这里插入图片描述

KNN算法实现

class KNN: """使用python实现K近邻算法。(回归算法) get_ipython算法用于回归预测,根据前三个前三个特征属性,寻找最近的k个邻居, 然后在根据k个邻居的第4个特征值,去预测当前样本的第4个特征值。 """ def __init__(self,k): """初始化方法 Parameters ---------- k: int 邻居的个数 """ self.k = k def fit(self,X,y): """训练方法 Parameters ------------------ X:类数组类型。形状:[样本数量,特征数量] 待训练的样本特征 y:类数组类型。形状:[样本数量] 每个样本的目标值(标签)。 """ #将X和y转换成ndarray数组形式,方便统一操作 self.X = np.asarray(X) self.y = np.asarray(y) def predict(self,X): """据参数传递的x,对样本数据进行预测 Parameters ------------------ X:类数组类型。形状:[样本数量,特征数量] 待测试的样本特征 Return ------------------ result:数组类型。 预测结果值。 """ # 转换成数组类型 X = np.asarray(X) #保存预测的结果 result = [] for x in X: #计算距离。(计算与训练集中每个X的距离) dis = np.sqrt(np.sum((x - self.X)**2,axis=1)) #返回数组排序后,每个元素在原数组中的索引 index = dis.argsort() #取前k个距离最近的索引(在原数组中的索引) index = index[:self.k] #计算均值,加入到返回的结果列表中 result.append(np.mean(self.y[index])) return np.asarray(result)

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758' 对原始数据集打散,并创建训练集测试集

t = data.sample(len(data),random_state=0) train_X = t.iloc[:120,:-1] train_y = t.iloc[:120,-1] test_X = t.iloc[120:,:-1] test_y = t.iloc[120:,-1] 1234567 训练&测试&相关参数

knn = KNN(k=3) knn.fit(train_X,train_y) result = knn.predict(test_X) display(result) print(np.sum((result-test_y)**2)) display(test_y.values) 1234567

在这里插入图片描述

可视化

import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams["font.family"] = "SimHei" mpl.rcParams["axes.unicode_minus"] = False 12345'

plt.figure(figsize=(10,8)) #绘制预测值 plt.plot(result,"ro-",label="预测值") #绘制真实值 plt.plot(test_y.values,"go--",label="实值") plt.title("KNN连续值预测") plt.xlabel("节点序号") plt.ylabel("花瓣宽度") plt.legend() plt.show() 12345678910

在这里插入图片描述

相关知识

Knn算法实现鸢尾花分类
Python机器学习基础教程
[机器学习基础][笔记] 一、鸢尾花分类
【机器学习】鸢尾花分类:机器学习领域经典入门项目实战
【机器学习】鸢尾花分类
实验一:鸢尾花数据集分类
机器学习案例:鸢尾花分类——基于Scikit
第 1 章 机器学习基础引言
第一个机器学习项目(鸢尾花分类问题)
机器学习之路:经典的鸢尾花数据集

网址: 【python机器学习】KNN算法实现回归(基于鸢尾花数据集) https://m.huajiangbk.com/newsview387267.html

所属分类:花卉
上一篇: 我的植物朋友——绿萝
下一篇: 拆解一朵鸢尾花,来看一看它美丽外