以下是关于“Python K最近邻从原理到实现的方法”的完整攻略:
简介
K最近邻(K-Nearest Neighbors,KNN)是一种基于实例的学习算法,它可以用于分类和回归任务。在本教程中,我们将介绍KNN算法的原理和Python实现方法,并提供两个示例说明。
KNN算法原理
KNN算法的基本思想是:对于一个新的数据点,找到与其最近的K个数据点,然后根据这K个数据点的标签来预测新数据点的标签。KNN算法的步骤如下:
- 计算新数据点与所有训练数据点之间的距离。
- 选择距离最近的K个数据点。
- 根据这K个数据点的标签来预测新数据点的标签。
KNN算法中的距离可以使用欧几里得距离、曼哈顿距离等。
KNN算法Python实现
以下是使用Python实现KNN算法的代码:
import numpy as np
from collections import Counter
class KNN:
def __init__(self, k=5):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
y_pred = []
for x in X:
distances = [np.sqrt(np.sum((x - x_train)**2)) for x_train in self.X_train]
k_indices = np.argsort(distances)[:self.k]
k_labels = [self.y_train[i] for i in k_indices]
most_common = Counter(k_labels).most_common(1)
y_pred.append(most_common[0][0])
return y_pred
其中,KNN类实现了KNN算法。在初始化方法中,我们定义了K值。在fit方法中,我们将训练数据集的特征和标签保存在X_train和y_train中。在predict方法中,我们使用欧几里得距离计算新数据点与所有训练数据点之间的距离,选择距离最近的K个数据点,并根据这K个数据点的标签来预测新数据点的标签。
示例说明
以下是两个示例说明,展示了如何使用Python实现KNN算法。
示例1
假设我们要使用KNN算法对Iris数据集进行分类:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load Iris dataset
iris = load_iris()
X = iris.data
y = iris.target
# Split dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create KNN classifier
knn = KNN(k=5)
# Train KNN classifier
knn.fit(X_train, y_train)
# Predict labels of the test data
y_pred = knn.predict(X_test)
# Calculate the accuracy of the classifier
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
在这个示例中,我们使用load_iris函数加载Iris数据集,将数据集分为训练集和测试集,使用KNN类创建了一个KNN分类器,并使用fit方法来训练KNN分类器。最后,我们使用predict方法来预测测试数据的标签,并使用accuracy_score函数计算分类器的准确性。
示例2
假设我们要使用KNN算法对digits数据集进行分类:
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load digits dataset
digits = load_digits()
X = digits.data
y = digits.target
# Split dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create KNN classifier
knn = KNN(k=5)
# Train KNN classifier
knn.fit(X_train, y_train)
# Predict labels of the test data
y_pred = knn.predict(X_test)
# Calculate the accuracy of the classifier
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
在这个示例中,我们使用load_digits函数加载digits数据集,将数据集分为训练集和测试集,使用KNN类创建了一个KNN分类器,并使用fit方法来训练KNN分类器。最后,我们使用predict方法来预测测试数据的标签,并使用accuracy_score函数计算分类器的准确性。
结
本教程介绍了KNN算法的原理和Python实现方法,并提供了两个示例说明。我们使用KNN类实现了KNN算法,并在predict方法中使用欧几里得距离计算新数据点与所有训练数据点之间的距离,选择距离最近的K个数据点,并根据这K个数据点的标签来预测新数据点的标签。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python K最近邻从原理到实现的方法 - Python技术站