知识点:KNN模型
K近邻分类器(K-Nearest Neighbors Classifier,简称KNN分类器)是一种常用的机器学习分类算法,属于监督学习方法。
它基于一个简单的思想:如果一个样本在特征空间中的K个最近邻居中的大多数属于某个类别,那么该样本也属于这个类别。换句话说,KNN分类器根据与待分类样本最接近的K个训练样本的类别来预测待分类样本的类别。
KNN分类器的主要步骤如下:
- 计算距离:计算待分类样本与训练集中每个样本的距离,常用的距离度量包括欧氏距离、曼哈顿距离等。
- 选择K个最近邻居:从训练集中选择与待分类样本距离最近的K个样本作为最近邻居。
- 投票或平均:根据K个最近邻居的类别进行投票或计算平均值,决定待分类样本的类别。
KNN分类器没有显式的训练过程,而是在预测阶段根据训练集中的样本进行分类。它简单直观,易于理解,适用于各种类型的数据。然而,KNN也有一些限制,如对异常值敏感、计算复杂度较高等。
在示例代码中,我们使用了KNeighborsClassifier类来构建KNN分类器模型,并指定了参数n_neighbors来设置K的值,即最近邻的数量。根据具体问题,可以通过调整K的值来影响模型的性能。
代码
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris #加载数据集
from sklearn.model_selection import train_test_split #数据集分成测试和训练
from sklearn.preprocessing import StandardScaler #特征标准化
from sklearn.neighbors import KNeighborsClassifier #KNN分类模型
from sklearn.metrics import accuracy_score #计算准确率
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 数据预处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 构建K近邻分类器模型
knn_classifier = KNeighborsClassifier(n_neighbors=3)
knn_classifier.fit(X_train_scaled, y_train)
# 在测试集上进行预测
y_pred = knn_classifier.predict(X_test_scaled)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")