KNN分类模型

  • 概念:
  • 简单地说,K-近邻算法采用测量不同特征值之间距离方法进行分类(K-Nearest Neighoor, KNN)
  • 1.捕获鸢尾花数据
  • 2.提取样本数据
  • 3.对数据集进行拆分,测试集占总数据的百分之二十
  • 4.观察数据集:看是否需要进行特征工程的处理
  • 5.实例化模型对
  • 6.使用训练集训练模型
  • 7.测试模型:使用测试数据
  • 分类返回:训练集特征数据,测试集特征数据,训练集标签数据,测试集标签数据:
  • x_train, x_test, y_train, y_test = train_test_split(feature, target, test_size=0.2, random_state=2020)
  • 实例化模型对象:knn = KNeighborsClassifier(n_neighbors=3)
  • 使用训练集训练模型:knn = knn.fit(x_train, y_train)
  • 使用训练出的模型:y_pred = knn.predict(x_test),返回标签数据
  • 输入测试特征数据与测试标签数据,使用模型进行模型准确性测试:score = knn.score(x_test, y_test),直接输出准确性小数
from sklearn.neighbors import KNeighborsClassifier
import sklearn.datasets as datasets
# 样本数据拆分
from sklearn.model_selection import train_test_split


# 1.捕获鸢尾花数据
iris = datasets.load_iris()
# 2.提取样本数据
feature = iris['data']
target = iris['target']
# 3.对数据集进行拆分,测试集占总数据的百分之二十
# 训练集特征数据,测试集特征数据,训练集标签数据,测试集标签数据
x_train, x_test, y_train, y_test = train_test_split(feature, target, test_size=0.2, random_state=2020)
# 4.观察数据集:看是否需要进行特征工程的处理
print("训练集特征数据:")
print(x_train)
print(x_train.shape)
print("=======================================================")
# 5.实例化模型对象
# 在knn中,k的取值不同会直接导致分类结果的不同,n_nerghboors表示k值,模型的超参数
# 模型的超参数:如果模型参数有不同的取值,且对不同的取值会对模型的分类或者预测产生直系的影响,则该参数为模型的超参数
knn = KNeighborsClassifier(n_neighbors=3)
# 6.使用训练集训练模型
# X:训练集特征数据
# Y:训练集标签数据
# 大写表示特征数据维度必须为二维
knn = knn.fit(x_train, y_train)
# 7.测试模型:使用测试数据
# predict表示使用训练好的模型实现分类或预测
# 返回模型基于测试数据返回的分类结果
y_pred = knn.predict(x_test)
y_true = y_test # 测试集真是分类结果
print("模型分类结果", y_pred)
print("真实分类结果", y_true)
# 输入测试特征与测试标签
score = knn.score(x_test, y_test)
print(score)