KNN

简介: 【9月更文挑战第11天】

K-Nearest Neighbors (KNN) 是一种简单而强大的分类算法,它根据一个样本最近邻的标签来预测该样本的标签。下面是一个使用 Python 语言和 scikit-learn 库实现 KNN 分类器的基本示例:

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

# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 KNN 分类器实例,设置 K=3
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(f'Accuracy: {accuracy:.2f}')

这段代码首先加载了鸢尾花(Iris)数据集,这是一个常用的分类数据集。然后,它将数据集分为训练集和测试集。接着,创建了一个 KNeighborsClassifier 实例,其中 n_neighbors 参数设置为 3,这意味着分类决策将基于最近的 3 个邻居。之后,使用训练集数据训练模型,并在测试集上进行预测。最后,计算并打印出模型的准确率。

如果你想要从头开始实现 KNN 算法,不使用 scikit-learn 库,下面是一个基本的 KNN 分类器的实现示例:

import numpy as np

class KNN:
    def __init__(self, k=3):
        self.k = k

    def fit(self, X, y):
        self.X_train = X
        self.y_train = y

    def predict(self, X):
        y_pred = [self._predict(x) for x in X]
        return np.array(y_pred)

    def _predict(self, x):
        # 计算距离
        distances = np.sqrt((self.X_train - x) ** 2).sum(axis=1)
        # 获取最近的 K 个邻居的索引
        k_indices = distances.argsort()[:self.k]
        # 获取这些邻居的标签
        k_nearest_labels = self.y_train[k_indices]
        # 投票获取最常见的标签
        most_common = np.argmax(np.bincount(k_nearest_labels))
        return most_common

# 示例使用
if __name__ == "__main__":
    # 假设有一些数据和标签
    X_train = np.array([[1, 2], [2, 3], [3, 1], [6, 5], [7, 7], [8, 6]])
    y_train = np.array([0, 0, 0, 1, 1, 1])
    X_test = np.array([[0, 0], [5, 5]])

    knn = KNN(k=3)
    knn.fit(X_train, y_train)
    predictions = knn.predict(X_test)
    print(predictions)
目录
相关文章
|
26天前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
26天前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
2月前
|
算法 大数据
K-最近邻(KNN)
K-最近邻(KNN)
|
2月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
4月前
knn增强数据训练
【7月更文挑战第27天】
35 10
|
4月前
|
机器人 计算机视觉 Python
K-最近邻(KNN)分类器
【7月更文挑战第26天】
44 8
|
4月前
创建KNN类
【7月更文挑战第22天】创建KNN类。
31 8
|
4月前
knn增强数据训练
【7月更文挑战第28天】
36 2
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
|
5月前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。