K近邻

构建模型只需要保存训练数据集即可。想要对新数据点做出预测,算法会在训练数据集中找到最近的数据点,也就是它的“最近邻”。

1、K近邻分类

  1. #第三步导入K近邻模型并实例化KN对象
  2. from sklearn.neighbors import KNeighborsClassifier
  3. #其中n_neighbors为近邻数量
  4. clf = KNeighborsClassifier(n_neighbors=3)
  1. #第四步对训练集进行训练
  2. clf.fit(X_train,y_train)
  1. #查看训练集和测试集的精确度
  2. clf.score(X_train,y_train)
  1. #建立一个有一行三列组成的图组,每个图的大小是10×3
  2. fig, axes = plt.subplots(1,3,figsize=(10,3))
  3. for n_neighbors,ax in zip([1,3,9],axes):
  4. #实例化模型对象并对数据进行训练
  5. clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X,y)
  6. mglearn.plots.plot_2d_separator(clf, X, fill=True, eps=0.5, ax=ax, alpha=.4)
  7. mglearn.discrete_scatter(X[:,0],X[:,1],y,ax=ax)
  8. ax.set_title("{} neighbor(s)".format(n_neighbors))
  9. ax.set_xlabel("feature 0")
  10. ax.set_ylabel("feature 1")

针对乳腺癌数据进行不同近邻的精确度分析

  1. #加载乳腺癌数据
  2. from sklearn.datasets import load_breast_cancer
  3. #提取数据
  4. cancer = load_breast_cancer()
  5. #第一步将数据分为训练集和测试集
  6. X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,random_state = 0)
  7. #实例化不同近邻的KN对象
  8. neighbors_settings = range(1,11)
  9. training_accuracy = []
  10. test_accuracy = []
  11. for n_neighbors in neighbors_settings:
  12. clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X_train,y_train)
  13. training_accuracy.append(clf.score(X_train,y_train))
  14. test_accuracy.append(clf.score(X_test,y_test))
  15. plt.plot(neighbors_settings,training_accuracy,label='training accuracy')
  16. plt.plot(neighbors_settings,test_accuracy,label='test accuracy')
  17. plt.legend()

2、K近邻回归

针对wave数据进行K近邻回归演示

  1. #导入wave数据
  2. X,y = mglearn.datasets.make_wave()
  3. #将数据分为训练集和测试集
  4. X_train,X_test,y_train,y_test = train_test_split(X,y, random_state = 0)
  5. #导入KN模型
    from sklearn.neighbors import KNeighborsRegressor
    #实例化KN模型
    reg = KNeighborsRegressor(n_neighbors=3)
    #对训练集进行训练
    reg.fit(X_train,y_train)
    #查看模型的精度
    reg.score(X_test,y_test)
  6. #创建一个有一行三列组成的图组,每个图的大小为15×4
  7. fig, axes = plt.subplots(1,3,figsize=(15,4))
  8. #创建1000个数据点,分布在-3和3之间
  9. lines=np.linspace(-3,3,1000).reshape(-1,1)
  10. for n_neighbors, ax in zip([1,3,9],axes):
  11. reg = KNeighborsRegressor(n_neighbors=n_neighbors).fit(X_train,y_train)
  12. ax.plot(lines,reg.predict(lines))
  13. ax.plot(X_train,y_train,'^',c=mglearn.cm2(0),markersize=8)
  14. ax.plot(X_test,y_test,'o',c=mglearn.cm2(1),markersize=8)
  15. ax.set_title('{} neighbor\n train score:{:.2f} test score:{:.2f}'.format(n_neighbors,reg.score(X_train,y_train),
  16. reg.score(X_test,y_test)))
  17. axes[0].legend(['model predictions','training data/target','test data/target'])

sklearn机器学习算法--K近邻的更多相关文章

  1. 每日一个机器学习算法——k近邻分类

    K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由 ...

  2. 机器学习之K近邻算法(KNN)

    机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import ...

  3. 第4章 最基础的分类算法-k近邻算法

    思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...

  4. 【机器学习】k近邻算法(kNN)

    一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...

  5. 机器学习(四) 分类算法--K近邻算法 KNN (上)

    一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...

  6. 机器学习之K近邻算法

    K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...

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

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

  8. python 机器学习(二)分类算法-k近邻算法

      一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提 ...

  9. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

随机推荐

  1. Vim入门教程——转

    简书: https://www.jianshu.com/p/bcbe916f97e1

  2. Netty学习笔记(二) - ChannelPipeline和ChannelHandler

    ChannelPipeline 和 ChannelHandler 是 Netty 重要的组件之一,通过这篇文章,重点了解这些组件是如何驱动数据流动和处理的. 一.ChannelHandler 在上一篇 ...

  3. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  4. WEB前端程序员需要的网站整理

    前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...

  5. Java实现 LeetCode 834 树中距离之和(DFS+分析)

    834. 树中距离之和 给定一个无向.连通的树.树中有 N 个标记为 0-N-1 的节点以及 N-1 条边 . 第 i 条边连接节点 edges[i][0] 和 edges[i][1] . 返回一个表 ...

  6. Java实现 LeetCode 528 按权重随机选择(TreeMap)

    528. 按权重随机选择 给定一个正整数数组 w ,其中 w[i] 代表位置 i 的权重,请写一个函数 pickIndex ,它可以随机地获取位置 i,选取位置 i 的概率与 w[i] 成正比. 说明 ...

  7. Java实现 LeetCode 524 通过删除字母匹配到字典里最长单词(又是一道语文题)

    524. 通过删除字母匹配到字典里最长单词 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符 ...

  8. Java实现 LeetCode 342 4的幂

    342. 4的幂 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你 ...

  9. 第五届蓝桥杯C++B组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄.小明说:今年是我们的幸运年啊.我出生年份的四位数字加起来刚好是我的年龄.表弟的 ...

  10. Java实现 洛谷 P2141 珠心算测验

    import java.util.LinkedList; import java.util.Scanner; public class Main { private static Scanner ci ...