编辑代码

from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier

# 加载鸢尾花数据集
iris = datasets.load_iris()
x = iris.data
y = iris.target

# 分割数据集为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

# 创建KNN分类器并训练
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)

# 预测并打印结果
print(knn.predict(x_test))
print(y_test)



以下是这段KNN分类器代码的逐行详细解释:

from sklearn.model_selection import train_test_split

导入数据分割工具,用于将数据集划分为训练集和测试集
from sklearn import datasets

导入sklearn内置数据集模块,包含经典机器学习数据集
from sklearn.neighbors import KNeighborsClassifier

导入K近邻分类器实现
iris = datasets.load_iris()

加载鸢尾花数据集(包含150个样本,4个特征,3个类别)
x = iris.data

获取特征数据(4个特征:花萼长宽、花瓣长宽,形状为150x4的数组)
y = iris.target

获取类别标签(0/1/2分别代表三种鸢尾花,形状为150的一维数组)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

随机划分数据集:70%训练数据,30%测试数据
未设置random_state参数,每次划分结果可能不同
knn = KNeighborsClassifier()

创建KNN分类器实例(默认参数:n_neighbors=5,使用欧式距离)
knn.fit(x_train, y_train)

训练模型:存储训练数据并建立快速查询结构
print(knn.predict(x_test))

对测试集进行预测,输出预测类别(0/1/2print(y_test)

输出测试集的真实标签,用于与预测结果对比