KNN鸢尾花分类

本文通过鸢尾花数据集展示了KNN(K近邻)算法的应用。首先,介绍了鸢尾花的种类细分,然后利用KNN进行数据划分、训练与测试。在实验中,调整了邻居数(K值),探讨了不同K值对模型准确率的影响,并引入了距离权重参数以优化分类效果。实验结果显示,KNN算法在鸢尾花分类任务上表现稳定,但选择合适的K值至关重要。
摘要由CSDN通过智能技术生成

在这里插入图片描述
markdown模式:
找到一张鸢尾花的照片,复制图片地址
输入感叹号、中括号、小括号,然后小括号里面地址放进去
在这里插入图片描述
就可将图片执行出来
在这里插入图片描述
或者
在这里插入图片描述
鸢尾花因为自然环境的不同,所以类别可以细分
在这里插入图片描述
在这里插入图片描述

X = iris['data']
y = iris['target']
#150代表150个样本,4代表着4个属性:花萼长、宽;花瓣长、宽
X.shape

在这里插入图片描述

#将数据划分,一分为二:一部分用于训练,另一部分用于测试
#将顺序打乱
index = np.arange(150)
index

np.random.shuffle(index)
index
#150个数据将打乱顺序100个取出来,算法学习,留下的50个使用算法预测(验证算法是否可靠)
#应用到实际中,要获取现实中的数据,算法对数据进行分类------->上线:实时进行分类
X_train,X_test = X[index[:100]],X[index[100:]]

y_train,y_test = y[index[:100]],y[index[-50:]]
knn = KNeighborsClassifier(n_neighbors= 5)

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)
#对比,看算法,预测的和真实的结果,是否对应
#对应,大部分正确:算法没问题
#不然,说明算法效果不好
print(y_)
print('----------------------------')
print(y_test)

在这里插入图片描述
看一下数据类型
在这里插入图片描述
算准确率
在这里插入图片描述
或者采用另一种方法计算准确率
在这里插入图片描述

#进行了封装
knn.score(X_test,y_test)

另一种方法

#算法返回的结果,使用变量_接收:约定俗成变量命名规则
proba_ = knn.predict_proba(X_test)
proba_

结果输出
在这里插入图片描述
鸢尾花有三个分类,分别对应0、1、2
在这里插入图片描述
在这里插入图片描述
鸢尾花类别有三类
在这里插入图片描述
在这里插入图片描述
可以把邻居数调成十个计算一下准确率
在这里插入图片描述

knn = KNeighborsClassifier(n_neighbors= 10)

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)

knn.score(X_test,y_test)

邻居数不一定越多越好也不一定越少越好。

增加权重选项
在这里插入图片描述

knn = KNeighborsClassifier(n_neighbors= 5,weights = 'distance')
#weights = 'distance'表示权重是按照距离来计算的,离得越近权重越大,离得越远权重越小

knn.fit(X_train,y_train)

y_ = knn.predict(X_test)

knn.score(X_test,y_test)

在这里插入图片描述
n_jobs = n
#使用n个进程进行实验,当n等于-1时表示使用所有进程进行实验
在这里插入图片描述
注意:一般邻居数最好不要超过根号下样本数

如这里100个样本,邻居数最好不超过100**0.5 = 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值