欢迎访问宙启技术站
智能推送

使用Python实现基于K近邻算法的分类器

发布时间:2023-12-04 12:56:41

K近邻算法是一种简单且常用的分类算法,它基于样本之间的距离来确定新样本的类别。该算法的基本原理非常简单,即对于一个未知类别的样本,它的类别由其最近的K个邻居样本的类别决定。

下面是一个使用Python实现基于K近邻算法的分类器的例子。

首先,我们需要导入必要的库:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

接下来,我们定义一个函数,用于加载并准备数据集。这里我们使用一个简单的示例数据集,包含两个特征(X1和X2)和两个类别(1和-1):

def load_dataset():
    X = np.array([[1, 2], [2, 1], [3, 4], [4, 3]])
    y = np.array([1, 1, -1, -1])
    return X, y

然后,我们将数据集分为训练集和测试集,并初始化K近邻分类器:

X, y = load_dataset()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

knn = KNeighborsClassifier(n_neighbors=3)

接下来,我们使用训练集对分类器进行训练:

knn.fit(X_train, y_train)

然后,我们可以使用测试集对分类器进行预测,并计算分类准确率:

y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

最后,我们可以使用分类器对新样本进行预测:

new_sample = np.array([[5, 5]])
prediction = knn.predict(new_sample)
print("Prediction:", prediction)

这是一个简单的基于K近邻算法的分类器的例子。注意,这里的K值和数据集是预先定义的,实际应用中要根据具体问题和数据进行调参和处理。另外,这只是K近邻算法的一种实现方式,基于不同的库和框架,实现方式可能会有所不同。

K近邻算法简单而直观,适用于小规模数据集和低维度特征,但在处理大规模数据集和高维度特征时可能存在效率问题。此外,K近邻算法对于不平衡数据集和噪声敏感,需要对数据进行预处理和调参以获得更好的分类性能。