机器学习“傻瓜式”理解(3)KNN算法(初步理解)

本文介绍了K近邻(KNN)算法的基础理解,包括算法原理、分类问题的解决思路,以及如何计算距离。同时,文章讨论了KNN的优缺点,如无需训练过程、对数学要求低,但存在运行效率低、高度依赖数据等问题。还展示了使用自封装KNN算法和Scikit-Learn库进行预测的步骤。
摘要由CSDN通过智能技术生成

KNN(K近邻算法)

基础理解

面对这个算法需要蹦出来几个问题:KNN是什么?可以解决什么问题?怎么实现?有什么优缺点?
首先,KNN我们通常称之为K近邻算法,通俗的理解便是如果我们认为两个特征之间他们足够相似,我们就有理由认为他们属于同一个类别。
丰富上一小节的一张图以后:
KNN

接着,通常情况下我们使用KNN是用来解决分类问题,当然,很少情况下我们也会使用它来解决回归问题。
其主要的解决思路为:
①求出我们需要预测的点与数据集中的点之间的距离,根据初中所学,我们使用欧拉距离来表示。
②将距离进行排序,找前k个中出现次数最多的便是我们的预测结果。
在这里插入图片描述
代码实现:(Github处于外网,所以我在这里直接贴上自己封装的KNN算法)
源码在源码

import numpy as np
from collections import Counter
from math import sqrt

class KNeighborsClassifier:

    def __init__(self,k):
        '''check'''
        assert k>=1,"K must be valid"
        self.k = k

        '''private'''
        self._X_train = None
        self._y_train = None

    def fit(self,X,y):
        '''check'''
        assert X.shape[0] == y.shape[0],\
                "The data size must be valid"
        assert self.k <= y.shape[0],\
                "K must be valid"

        self._X_train = X
        self._y_train = y

        '''according to the scikit-learn,we need to return self'&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值