K近邻算法

原理

        K近邻(KNN)算法属于监督学习分类算法,主要用于解决分类问题。

输入:训练数据集,其中x_{i}为实例的特征向量,y_{i}为实例类别。

输出:实例x所属的y类别。

步骤

  1. 选择参数 K。
  2. 计算未知实例与所有已知实例的距离。
  3. 选择最近的 K 个已知实例。
  4. 根据少数服从多数的原则进行投票,将未知实例归类为 K 个最近邻中最多数的类别。

总结:KNN算法没有明显的训练过程,训练阶段仅保存样本,训练开销为零。处理测试样本时才进行 KKK 值选择和距离计算,因此是一种懒惰学习算法。

        K近邻算法的三个要素:

  • 距离度量方法:用于计算测试样本与训练样本之间的相似度,常用的距离度量方法有欧氏距离、曼哈顿距离、明可夫斯基距离等。
  •  K值大小:决定选择多少个最近邻居。K值过小可能导致模型对噪声数据过于敏感,K值过大可能导致模型过于平滑,忽略了数据的局部结构。
  • 分类的决策准则:根据距离最近的 KKK 个邻居对测试样本进行分类——多数表决法、加权多数表决法、概率分布法。

Skearn中的API

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, accuracy_score

def load_and_preprocess_data():
    # 加载数据集
    iris = load_iris()
    # 数据标准化
    standard = StandardScaler()
    X = standard.fit_transform(iris.data)
    return X, iris.target

def train_knn_classifier(x_train, y_train, n_neighbors=3):
    # 模型训练
    knn = KNeighborsClassifier(n_neighbors=n_neighbors)
    knn.fit(x_train, y_train)
    return knn

def evaluate_model(estimator, x_test, y_test):
    # 利用模型进行预测
    predictions = estimator.predict(x_test)
    # 打印分类报告和准确率
    print(classification_report(y_test, predictions))
    print(f"Accuracy: {accuracy_score(y_test, predictions):.2f}")

if __name__ == '__main__':
    # 1. 加载和预处理数据
    X, y = load_and_preprocess_data()
    # 2. 划分训练集和测试集
    x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    # 3. 训练模型
    estimator = train_knn_classifier(x_train, y_train)
    # 4. 评估模型
    evaluate_model(estimator, x_test, y_test)

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值