zoukankan      html  css  js  c++  java
  • K邻近算法

    1. k邻近算法概述:

    k邻近算法简单直观,给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类

    2. k邻近算法的模型复杂度体现在哪里?什么情况下会造成过拟合

    k邻近算法模型复杂度体现在k值,k比较小时容易造成过拟合,k较大时容易造成欠拟合

    3. 线性扫描算法

    线性扫描算法步骤如下:

    输入:训练数据集T={(x1,y1),(x2,y2),...(xn,yn)}

         待预测数据:(x_test)

         k值

    (1)计算x_test与 xi的欧式距离

    (2)欧式距离排序

    (3)取前k个最小距离,对应训练数据点的类型y

    (4)对k个y值进行统计

    (5)返回频率出现最高的点

     1 import numpy as np
     2 from collection import Counter
     3 from draw import draw
     4 class KNN:
     5     def _init_(self,x_train,y_train,k=3):
     6         self.k=k
     7         self.x_train=x_train
     8         self.y_train=y_train
     9         
    10     def predict(self,x_new):
    11         #计算欧式距离
    12         dist_list=[(np.linalg.norm(x_new=self.x_train[i],ord=2),self.y_train[i])
    13                   for i in range(self.x_train.shape[0])]
    14         dist_list.sort(key=lambda x: x[0])                  
    15         y_list=[dist_list[i][-1] for i in range(self.k)]
    16         #对上述k个点的分类进行统计
    17         y_count=Counter(y_list).most_common()
    18         return y_count[0][0]
    19     
    20 def main():
    21     #首先输入训练数据
    22     x_train=np.array([[5,4],
    23                       [9,6],
    24                       [4,7],
    25                       [2,3],
    26                       [8,1],
    27                       [7,2]])
    28     y_train=np.array([1,1,1,-1,-1,-1])
    29     输入测试数据
    30     x_new=np.array([5,3])
    31     #绘图
    32     draw(x_train,y_train,x_new)
    33     for k in range(1,6,2):
    34         #构建KNN实例
    35         elf=KNN(x_train,y_train,k=k)
    36         #对测试数据进行分类
    37         y_predict=elf.predict(x_new)
    38         print("k={},被分类为:{}").format(k,y_predict)
    39 if __name__ == "main":
    40     main()
  • 相关阅读:
    RSA算法
    Windows-caffe配置
    python 下 excel,csv 文件的读写
    python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求
    python 下串口数据的读取,解析,和保存-
    XML字符串和JAVA对象之间的转化
    MySQL的join on和 where 的执行顺序和区别,以及各种连接说明
    全国各行政区行政编码
    计数器+打卡+习惯+目标APP推荐
    安卓计数器类APP推荐
  • 原文地址:https://www.cnblogs.com/Cucucudeblog/p/10830615.html
Copyright © 2011-2022 走看看