原生Python实现KNN算法,并用鸢尾花(iris)数据集测试

本文介绍了如何使用原生Python语法实现K近邻(KNN)算法,通过鸢尾花数据集进行实战验证,并展示了如何绘制散点图辅助理解。通过代码实现KNN算法,对数据进行预处理、训练、测试,最终计算出预测的准确度。
摘要由CSDN通过智能技术生成

用原生python语法实现K近邻算法,了解K近邻法的实际操作内核,并用自带鸢尾花的集合验证K近邻算法,并掌握运用散点图的绘制

先对KNN算法做了解:
在这里插入图片描述
源代码获取:
https://github.com/akh5/Python/blob/master/My_KNN.ipynb

部分伪代码:

距离集合distyany2e对应的种类near_y集合
	  For 预测值 in near_y:
			y0=0,y1=0,y2=0
			预测结果=0
			if 预测值 == 0:
            y0+=1
        elif 预测值 == 1:
            y1+=1
        else:
            y2+=1
        if y1>(y2 or y0):
            预测结果 = 1
        elif y2>( y1 or y0):
            预测结果 = 2
        else:
            预测结果 = 0
		结果集合
		if 预测结果 == 训练集种类:
        结果集合.append(1)
    else:
        结果集合.append(0)

此时结果集合中就只有0,1的元素了
若将 结果集合 中的各个元素相加,再处于集合长度就可以得到精确值

首先来从自带的包中获取鸢尾花的数据集

from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt
iris_dataset = load_iris()
iris_dataset.keys()

dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’])

输出的是一个存放数据字典键值的list集合

iris_dataset['data'][:150]

array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, 3.9, 1.7, 0.4],
[4.6, 3.4, 1.4, 0.3],
[5. , 3.4, 1.5, 0.2],
[4.4, 2.9, 1.4, 0.2],
[4.9, 3.1, 1.5, 0.1]])

数组中数据代表花萼长,花萼宽,花瓣长,花瓣宽

iris_dataset['target'][:150]

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

返回的是鸢尾花的种类0为setosa,1为versicolor,2为virginica

from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt
import random
raw_x = iris_dataset['data'][:150] #
raw_y = iris_dataset['target'][:<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值