机器学习之KNN算法原理及Python实现方法详解

  • Post category:Python

机器学习之KNN算法原理及Python实现方法详解

KNN算法是一种常用的机器学习算法,它可以用于分类和回归问题。在本攻略中,我们将介绍KNN算法的原理和Python实现方法,并提供两个示例。

KNN算法原理

KNN算法的原理是基于样本之间的距离来进行分类或回归。在分类问题中,KNN算法将新样本与训练集中的所有样本进行距离计算,并选择距离最近的K个样本作为邻居。然后,它将新样本分类为邻居中出现最多的类别。在回归问题中,KNN算法将新样本与训练集中的所有样本进行距离计算,并选择距离最近的K个样本作为邻居。然后,它将新样本的输出值设置为邻居的平均值。

KNN算法Python实现方法

在Python中,我们可以使用scikit-learn库来实现KNN算法。下面是一个示例:

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

# 加载数据
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)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测结果
y_pred = kn.predict(X_test)

# 计算准确率
accuracy = knn.score(X_test, y_test)
print('Accuracy:', accuracy)

在上面的代码中,我们使用load_iris()函数加载鸢尾花数据集,并使用train_test_split()函数将数据集划分为训练集和测试集。然后,我们使用KNeighborsClassifier()函数创建KNN分类器,并使用fit()函数训练模型。最后,我们使用predict()函数预测测试集的结果,并使用score()函数计算准确率。

示例一:使用KNN算法进行分类

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

# 加载数据
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)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测结果
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = knn(X_test, y_test)
print('Accuracy:', accuracy)

在上面的代码中,我们使用KNN算法对鸢尾花数据集进行分类,并计算准确率。

示例二:使用KNN算法进行回归

from sklearn.neighbors import KRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载数据
boston = load_boston()
X = boston.data
y = boston.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建KNN回归器
knn = KNeighborsRegressor(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测结果
y_pred = knn.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)

在上面的代码中,我们使用KNN算法对波士顿房价数据集进行回归,并计算均方误差。

总结

本攻略介绍了KNN算法的原理和Python实现方法,并提供了两个示例,分别使用KNN算法进行分类和回归。KNN算法是一种简单而有效的机器学习算法,它可以用于各种问题,包括分类和回归。