Python机器学习基础——K近邻算法详解KNN
1. K近邻算法简介
K近邻算法,简称KNN,是一种基本分类和回归算法,属于有监督学习算法。在分类问题中,KNN算法的工作原理是:给定一个未知样本,基于某种度量方式(如欧氏距离)与训练集中的所有样本相似度,选出K个与该样本最相似的训练样本,然后通过简单多数投票确定该样本属于哪一类。
2. KNN算法实现步骤
K近邻算法的实现步骤如下所示:
-
计算测试样本与所有训练样本之间的距离。
-
按照距离的大小进行排序,选择与测试样本最近的K个样本。
-
统计这K个样本中各个类别出现的次数。
-
根据最多的类别确定测试样本的类别。
3. KNN算法的几个重要的参数
KNN算法需要选择的几个重要参数:
-
K值的选择:K值越小越容易过拟合,K值越大越容易欠拟合。
-
距离度量方式的选择:常用的度量方式包括欧氏距离、曼哈顿距离等。
-
分类决策规则的选择:一般采用多数表决规则。
4. KNN算法的应用示例
以下是KNN算法的两个应用示例:
示例一:手写数字识别
手写数字识别是机器学习领域中的一个经典问题,KNN算法可以很好地应用在该领域中。
在该示例中,我们使用python中的sklearn库进行手写数字识别。具体实现步骤如下:
import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
# 加载手写数字数据集
digits = datasets.load_digits()
# 数据归一化处理
X = digits.data / 255
y = digits.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 进行KNN分类器模型训练
knn = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
knn.fit(X_train, y_train)
# 在测试集上进行模型预测
y_pred = knn.predict(X_test)
# 输出模型的分类性能报告
print(classification_report(y_test, y_pred))
运行以上代码,可以得到该KNN分类器模型的分类性能报告。
示例二:糖尿病诊断
糖尿病是一种常见的代谢性疾病,KNN算法可以应用在糖尿病诊断中。
在该示例中,我们使用python中的sklearn库进行糖尿病诊断。具体实现步骤如下:
import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
# 加载糖尿病数据集
diabetes = datasets.load_diabetes()
# 数据归一化处理
X = diabetes.data / diabetes.data.max(axis=0)
y = diabetes.target > 140
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 进行KNN分类器模型训练
knn = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
knn.fit(X_train, y_train)
# 在测试集上进行模型预测
y_pred = knn.predict(X_test)
# 输出模型的分类性能报告
print(classification_report(y_test, y_pred))
运行以上代码,可以得到该KNN分类器模型的分类性能报告。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python机器学习基础K近邻算法详解KNN - Python技术站