KNN(K-近邻算法)(上)--day05

KNN(K-Nearest Neighbors,K近邻算法)是一种用于分类和回归的非参数化方法。其基本思想是通过找出与新样本最接近的已标记数据中的K个最近邻居来进行预测或分类。

注释:非参数化方法是指在统计学和机器学习中,不对数据分布做出严格假设这些假设通常包括对数据的具体分布类型(如正态分布、指数分布等)、分布的参数(如均值、方差等)以及数据之间的相关性结构或者假设非常少的一类方法。这与参数化方法相对,参数化方法假设数据服从特定的分布形式,并且基于这些假设推断模型参数。

具体来说,对于分类问题,KNN算法会根据新样本周围K个最近的训练样本的类别来决定新样本的类别,通常采用投票法占比最大决定最终类别。在回归问题中,KNN算法则是通过K个最近邻居的平均值或加权平均值来预测新样本的数值输出。

KNN算法的优点包括简单易懂、无需训练过程(即所谓的非参数化方法)、适用于多分类问题以及能够处理多种类型的数据。然而,它也有一些缺点,如计算复杂度高、需要大量存储空间(因为需要保留所有训练数据)、对于特征空间中不相关的特征表现不佳等。

总的来说,KNN算法是一种强大且常用的机器学习算法,特别适合于小型数据集或对实时预测速度要求不高的情况。

KNN分类流程:

  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 进行多数表决,统计 K 个样本中哪个类别的样本个数最多
  5. 将未知的样本归属到出现次数最多的类别

KNN回归流程:

  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 把这个 K 个样本的目标值计算其平均值
  5. 将未知的样本预测的值了

掌握K近邻算法API处理分类问题(简单代码展示):

# 读本示例,问样本有几条,每个样本有几个特征值
from sklearn.neighbors import KNeighborsClassifier


def dm01_knnapi_分类():
    estimator = KNeighborsClassifier(n_neighbors=1)
    X = [[0], [1], [2], [3]]
    y = [0, 0, 1, 1]
    estimator.fit(X, y)

    # 改变[]里的值
    myret = estimator.predict([[4]])
    print('myret-->', myret)


dm01_knnapi_分类()

掌握K近邻算法API处理回归问题(简单代码展示):

# 对于回归
# 请通过观察法确定k=1时, myret的预测值是多少?
# 请通过观察法确定k=2时, myret的预测值是多少?
from sklearn.neighbors import KNeighborsRegressor


def dm02_knnapi_回归():

    '''KNeighborsRegressor 类创建了一个 k 最近邻回归模型,
其中 n_neighbors=2 指定了模型要考虑的最近邻居的数量为 2。
这意味着在预测新数据点的目标值时,模型会考虑每个数据点附近的两个最近邻居的目标值。'''
    estimator = KNeighborsRegressor(n_neighbors=1)
    estimator = KNeighborsRegressor(n_neighbors=2)
    X = [[0, 0, 1],
         [1, 1, 0],
         [3, 10, 10],
         [4, 11, 12]]
    y = [0.1, 0.2, 0.3, 0.4]
    estimator.fit(X, y)
    # 改变[]里的值
    myret = estimator.predict([[3, 11, 10]])
    print('myret-->', myret)


dm02_knnapi_回归()

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值