KNN算法主要用于分类问题,算法适合于低维空间。
它的核心思想是:
- 给定一个预测目标
- 计算预测目标和所有样本之间的距离或者相似度
- 选择距离最近的前K个样本
- 通过投票来决定分类
sklearn包中自带的iris样本数据集,这里用这个数据集来练习knn算法。
1、iris数据集的介绍
参考:这一块内容昨天看了一篇博文,忘记地址了。
数据集内包含 3 类共 150 条记录,每类各 50 个数据。
每条记录都有 4 个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。
鸢尾花有三个品种:iris-setosa, iris-versicolour, iris-virginica。
通过这4个特征预测鸢尾花属于哪个品种。
需导入库:
from sklearn.datasets import load_iris #导入样本数据集
import pandas as pd #处理数据
import numpy as np
获得数据:
dataSet = load_iris()
data = dataSet['data'] # 数据
label = dataSet['target'] # 数据对应的标签
feature = dataSet['feature_names'] # 特征的名称
target = dataSet['target_names'] # 标签的名称
查看数据:
#创建DateFrame
df = pd.DataFrame(np.column_stack((data,label)),columns = np.append(feature,'label'))
pd.set_option('max_columns', 1000) #设置最大显示列数为1000
pd.set_option('max_row', 300) #设置最大显示行数为300
df.set_value #删除和重置多索引的列名
print(df)
2、计算模型准确率的代码实现
需要导入的库:
#导入一个样本数据集
from sklearn import datasets
#用来做数据集的分割,把数据分成训练集和测试集
from sklearn.model_selection import train_test_split
#导入了KNN的模块,是sklearn提供的现成算法
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
导入数据集:
iris = datasets.load_i