sklearn机器学习算法--K近邻
K近邻
构建模型只需要保存训练数据集即可。想要对新数据点做出预测,算法会在训练数据集中找到最近的数据点,也就是它的“最近邻”。
1、K近邻分类
- #第三步导入K近邻模型并实例化KN对象
- from sklearn.neighbors import KNeighborsClassifier
- #其中n_neighbors为近邻数量
- clf = KNeighborsClassifier(n_neighbors=3)
- #第四步对训练集进行训练
- clf.fit(X_train,y_train)
- #查看训练集和测试集的精确度
- clf.score(X_train,y_train)
- #建立一个有一行三列组成的图组,每个图的大小是10×3
- fig, axes = plt.subplots(1,3,figsize=(10,3))
- for n_neighbors,ax in zip([1,3,9],axes):
- #实例化模型对象并对数据进行训练
- clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X,y)
- mglearn.plots.plot_2d_separator(clf, X, fill=True, eps=0.5, ax=ax, alpha=.4)
- mglearn.discrete_scatter(X[:,0],X[:,1],y,ax=ax)
- ax.set_title("{} neighbor(s)".format(n_neighbors))
- ax.set_xlabel("feature 0")
- ax.set_ylabel("feature 1")
针对乳腺癌数据进行不同近邻的精确度分析
- #加载乳腺癌数据
- from sklearn.datasets import load_breast_cancer
- #提取数据
- cancer = load_breast_cancer()
- #第一步将数据分为训练集和测试集
- X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,random_state = 0)
- #实例化不同近邻的KN对象
- neighbors_settings = range(1,11)
- training_accuracy = []
- test_accuracy = []
- for n_neighbors in neighbors_settings:
- clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X_train,y_train)
- training_accuracy.append(clf.score(X_train,y_train))
- test_accuracy.append(clf.score(X_test,y_test))
- plt.plot(neighbors_settings,training_accuracy,label='training accuracy')
- plt.plot(neighbors_settings,test_accuracy,label='test accuracy')
- plt.legend()
2、K近邻回归
针对wave数据进行K近邻回归演示
- #导入wave数据
- X,y = mglearn.datasets.make_wave()
- #将数据分为训练集和测试集
- X_train,X_test,y_train,y_test = train_test_split(X,y, random_state = 0)
- #导入KN模型
from sklearn.neighbors import KNeighborsRegressor
#实例化KN模型
reg = KNeighborsRegressor(n_neighbors=3)
#对训练集进行训练
reg.fit(X_train,y_train)
#查看模型的精度
reg.score(X_test,y_test)- #创建一个有一行三列组成的图组,每个图的大小为15×4
- fig, axes = plt.subplots(1,3,figsize=(15,4))
- #创建1000个数据点,分布在-3和3之间
- lines=np.linspace(-3,3,1000).reshape(-1,1)
- for n_neighbors, ax in zip([1,3,9],axes):
- reg = KNeighborsRegressor(n_neighbors=n_neighbors).fit(X_train,y_train)
- ax.plot(lines,reg.predict(lines))
- ax.plot(X_train,y_train,'^',c=mglearn.cm2(0),markersize=8)
- ax.plot(X_test,y_test,'o',c=mglearn.cm2(1),markersize=8)
- ax.set_title('{} neighbor\n train score:{:.2f} test score:{:.2f}'.format(n_neighbors,reg.score(X_train,y_train),
- reg.score(X_test,y_test)))
- axes[0].legend(['model predictions','training data/target','test data/target'])
sklearn机器学习算法--K近邻的更多相关文章
- 每日一个机器学习算法——k近邻分类
K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由 ...
- 机器学习之K近邻算法(KNN)
机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import ...
- 第4章 最基础的分类算法-k近邻算法
思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...
- 【机器学习】k近邻算法(kNN)
一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...
- 机器学习(四) 分类算法--K近邻算法 KNN (上)
一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...
- 机器学习之K近邻算法
K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...
- 第四十六篇 入门机器学习——kNN - k近邻算法(k-Nearest Neighbors)
No.1. k-近邻算法的特点 No.2. 准备工作,导入类库,准备测试数据 No.3. 构建训练集 No.4. 简单查看一下训练数据集大概是什么样子,借助散点图 No.5. kNN算法的目的是,假如 ...
- python 机器学习(二)分类算法-k近邻算法
一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提 ...
- 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...
随机推荐
- Vim入门教程——转
简书: https://www.jianshu.com/p/bcbe916f97e1
- Netty学习笔记(二) - ChannelPipeline和ChannelHandler
ChannelPipeline 和 ChannelHandler 是 Netty 重要的组件之一,通过这篇文章,重点了解这些组件是如何驱动数据流动和处理的. 一.ChannelHandler 在上一篇 ...
- Rocket - diplomacy - LazyModule的组织方式
https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...
- WEB前端程序员需要的网站整理
前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...
- Java实现 LeetCode 834 树中距离之和(DFS+分析)
834. 树中距离之和 给定一个无向.连通的树.树中有 N 个标记为 0-N-1 的节点以及 N-1 条边 . 第 i 条边连接节点 edges[i][0] 和 edges[i][1] . 返回一个表 ...
- Java实现 LeetCode 528 按权重随机选择(TreeMap)
528. 按权重随机选择 给定一个正整数数组 w ,其中 w[i] 代表位置 i 的权重,请写一个函数 pickIndex ,它可以随机地获取位置 i,选取位置 i 的概率与 w[i] 成正比. 说明 ...
- Java实现 LeetCode 524 通过删除字母匹配到字典里最长单词(又是一道语文题)
524. 通过删除字母匹配到字典里最长单词 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符 ...
- Java实现 LeetCode 342 4的幂
342. 4的幂 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你 ...
- 第五届蓝桥杯C++B组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄.小明说:今年是我们的幸运年啊.我出生年份的四位数字加起来刚好是我的年龄.表弟的 ...
- Java实现 洛谷 P2141 珠心算测验
import java.util.LinkedList; import java.util.Scanner; public class Main { private static Scanner ci ...