导入类库

  1. import numpy as np
  2. from sklearn.neighbors import KNeighborsClassifier
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.preprocessing import StandardScaler
  5. from sklearn.linear_model import LinearRegression
  6. from sklearn.metrics import r2_score
  7. from sklearn.datasets import load_iris
  8. import matplotlib.pyplot as plt
  9. import pandas as pd
  10. import seaborn as sns
  1. # 熵增益
  2. # 熵越大,信息量越大,蕴含的不确定性越大
  1. KNN
  2. 1.计算待预测值到所有点的距离
  3. 2.对所有距离排序
  4. 3.找出前K个样本里面类别最多的类,作为待预测值的类别

代码

  1. A = np.array([[1, 1], [1, 1.5], [0.5, 1.5]])
  2. B = np.array([[3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])
  3.  
  4. def knn_pre_norm(point):
  5. a_len = np.linalg.norm(point - A, axis=1)
  6. b_len = np.linalg.norm(point - B, axis=1)
  7. print(a_len.min())
  8. print(b_len.min())
  9.  
  10. def knn_predict_rev(point):
  11. X = np.array([[1, 1], [1, 1.5], [0.5, 1.5], [3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])
  12. Y = np.array([0, 0, 0, 1, 1, 1])
  13.  
  14. knn = KNeighborsClassifier(n_neighbors=2)
  15. knn.fit(X, Y)
  16.  
  17. print(knn.predict(np.array([[1.0, 3.0]])))
  18.  
  19. def iris_linear():
  20. # 加载iris数据
  21. li = load_iris()
  22. # 散点图
  23. # plt.scatter(li.data[:, 0], li.data[:, 1], c=li.target)
  24. # plt.scatter(li.data[:, 2], li.data[:, 3], c=li.target)
  25. # plt.show()
  26. # 分割测试集和训练集,测试集占整个数据集的比例是0.25
  27. x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
  28. # 创建KNN分类,使用最少5个邻居作为类别判断标准
  29. knn = KNeighborsClassifier(n_neighbors=5)
  30. # 训练数据
  31. knn.fit(x_train, y_train)
  32. # 预测测试集
  33. # print(knn.predict(x_test))
  34. # 预测np.array([[6.3, 3, 5.2, 2.3]])
  35. print(knn.predict(np.array([[6.3, 3, 5.2, 2.3]])))
  36. # 预测np.array([[6.3, 3, 5.2, 2.3]])所属各个类别的概率
  37. print(knn.predict_proba(np.array([[6.3, 3, 5.2, 2.3]])))
  38.  
  39. if __name__ == '__main__':
  40. # knn_predict_rev(None)
  41. # knn_pre_norm(np.array([2.3,2.3]))
  42. iris_linear()

机器学习——KNN的更多相关文章

  1. [机器学习] ——KNN K-最邻近算法

    KNN分类算法,是理论上比较成熟的方法,也是最简单的机器学习算法之一. 该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...

  2. 机器学习——kNN(1)基本原理

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  3. 机器学习--kNN算法识别手写字母

    本文主要是用kNN算法对字母图片进行特征提取,分类识别.内容如下: kNN算法及相关Python模块介绍 对字母图片进行特征提取 kNN算法实现 kNN算法分析 一.kNN算法介绍 K近邻(kNN,k ...

  4. 机器学习-kNN

    基于Peter Harrington所著<Machine Learning in Action> kNN,即k-NearestNeighbor算法,是一种最简单的分类算法,拿这个当机器学习 ...

  5. 机器学习-KNN算法详解与实战

    最邻近规则分类(K-Nearest Neighbor)KNN算法 1.综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入 ...

  6. 第四十六篇 入门机器学习——kNN - k近邻算法(k-Nearest Neighbors)

    No.1. k-近邻算法的特点 No.2. 准备工作,导入类库,准备测试数据 No.3. 构建训练集 No.4. 简单查看一下训练数据集大概是什么样子,借助散点图 No.5. kNN算法的目的是,假如 ...

  7. 机器学习 KNN算法原理

    K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,所谓k近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.比如:判断一个人的人品,只需要观察 ...

  8. 机器学习-KNN分类器

    1.  K-近邻(k-Nearest Neighbors,KNN)的原理 通过测量不同特征值之间的距离来衡量相似度的方法进行分类. 2.  KNN算法过程 训练样本集:样本集中每个特征值都已经做好类别 ...

  9. ML02: 机器学习KNN 算法

    摘要: 一张图说清楚KNN算法 看下图,清楚了吗?   没清楚的话,也没关系,看完下面几句话,就清楚了. KNN算法是用来分类的. 这个算法是如何来分类的呢? 看下图,你可以想想下图中的 『绿色圆点』 ...

  10. 机器学习——kNN(2)示例:改进约会网站的配对效果

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

随机推荐

  1. web.xml:<dispatcher>

    web.xml 的 <dispatcher> 是 <filter-mapping> 下的子标签,指定 Filter 对应的请求方式,其可选值如下: REQUEST 客户端在地址 ...

  2. mysql5.7 修改root密码无法登陆原因

    升级的mysql5.7修改完root账户密码后仍然无法登陆,查阅资料可能和user表的plugin 字段为空有关. 1.首先将my.ini中加入在[mysqld]节点上加skip-grant-tabl ...

  3. CMDB服务器管理系统【s5day90】:API验证

    1.认证思路刨析过程 1.请求头去哪里拿? 1.服务器端代码: def test(request): print(request) return HttpResponse('你得到我了') 2.客户端 ...

  4. .net异步委托

    委托Delegate是一个类,定义了方法的类型, 使得可以将方法当做另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大佬使用If-Else(Switch)语句,同时使得程序 ...

  5. ext.net单元格内容换行显示

    增加style .x-grid3-cell-inner {     white-space: normal; }

  6. [再寄小读者之数学篇](2014-10-08 乘积型 Sobolev 不等式)

    $$\bex n\geq 2, 1\leq p<n\ra \sen{f}_{L^\frac{np}{n-p}(\bbR^n)} \leq C\prod_{k=1}^n \sen{\p_k f}_ ...

  7. 搞数学的牛群[主要PDE的]

  8. Eclipse中的sysout与debug-遁地龙卷风

    (-1)调试 在读<<一个程序员的奋斗史>>时里面提到这是一件很low的事情,突然想到自己也一直用sysout, 我是一个有情怀的人! (0)sysout的坏处 之所以长久的使 ...

  9. Centos 06 文件类型和扩展名&索引节点inode和存储块block

    本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习 ...

  10. laravel5.4 向闭合函数内部传递参数

    laravel  向闭合函数内部传入参数