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 = 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/2)
print(y_test)
输出测试集的真实标签,用于与预测结果对比