机器学习-K最近邻算法
一、介绍
二、编程
练习一(K最近邻算法在单分类任务的应用):
import numpy as np #导入科学计算包
import matplotlib.pyplot as plt #导入画图工具
from sklearn.datasets import make_blobs #导入数据集生成器
from sklearn.neighbors import KNeighborsClassifier #导入KNN分类器(KNN回归树的类)
from sklearn.model_selection import train_test_split #导入数据集拆分工具
data = make_blobs(n_samples=200, centers=2, random_state=8) #生成样本数为200,分类为2的数据集,随机种子数为8
X, y = data
clf = KNeighborsClassifier() #导入KNN分类器函数
clf.fit(X,y) #训练X和y数据进行训练
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02),
np.arange(y_min, y_max, .02))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Pastel1)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.spring, edgecolors='k')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.show()

练习二(K最近邻算法处理多元分类):
data2 = make_blobs(n_samples=500, centers=5, random_state=8) #生成样本数为500,分数为5的数据集
X2, y2 = data2
clf = KNeighborsClassifier()
clf.fit(X2,y2)
x_min, x_max = X2[:, 0].min() - 1, X2[:, 0].max() + 1
y_min, y_max = X2[:, 1].min() - 1, X2[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02),
np.arange(y_min, y_max, .02))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Pastel1)
plt.scatter(X2[:, 0], X2[:, 1], c=y2, cmap=plt.cm.spring, edgecolors='k')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.show()
print('模型正确率: {:.2f}'.format(clf.score(X2,y2)))

练习三(K最近邻算法用于回归分析):
from sklearn.datasets import make_regression #导入数据集生成器
from sklearn.neighbors import KNeighborsRegressor
X, y = make_regression(n_features=1,n_informative=1, noise=50,random_state=8) #生成特征数量为1,噪音为50的数据集
reg = KNeighborsRegressor(n_neighbors=2)
reg.fit(X,y)
z = np.linspace(-3,3,200).reshape(-1,1)
plt.scatter(X,y,c='orange',edgecolor='k')
plt.plot(z, reg.predict(z),c='k',linewidth=3)
plt.show()
print('模型评分: {:.2f}'.format(reg.score(X,y)))

练习四(K最近邻算法项目用于酒的分类):
from sklearn.datasets import load_wine #导入数据模块
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split #导入数据集拆分工具
wine_dataset = load_wine()
knn = KNeighborsClassifier(n_neighbors=1)
X_train, X_test, y_train, y_test = train_test_split(wine_dataset['data'], wine_dataset['target'], random_state=0) #将数据集拆分为训练集和测试集
knn.fit(X_train, y_train)
print('测试数据得分: {:.2f}'.format(knn.score(X_test, y_test)))
print('####################################')
import numpy as np
X_new = np.array([[13.2,2.77,2.51,18.5,96.6,1.04,2.55,0.57,1.47,6.2,1.05,3.33,820]])
prediction = knn.predict(X_new)
print('预测新红酒的分类为: {}'.format(wine_dataset['target_names'][prediction]))

机器学习-K最近邻算法的更多相关文章
- 机器学习【一】K最近邻算法
K最近邻算法 KNN 基本原理 离哪个类近,就属于该类 [例如:与下方新元素距离最近的三个点中,2个深色,所以新元素分类为深色] K的含义就是最近邻的个数.在sklearn中,KNN的K值是通过n ...
- 【算法】K最近邻算法(K-NEAREST NEIGHBOURS,KNN)
K最近邻算法(k-nearest neighbours,KNN) 算法 对一个元素进行分类 查看它k个最近的邻居 在这些邻居中,哪个种类多,这个元素有更大概率是这个种类 使用 使用KNN来做两项基本工 ...
- 《算法图解》——第十章 K最近邻算法
第十章 K最近邻算法 1 K最近邻(k-nearest neighbours,KNN)——水果分类 2 创建推荐系统 利用相似的用户相距较近,但如何确定两位用户的相似程度呢? ①特征抽取 对水果 ...
- [笔记]《算法图解》第十章 K最近邻算法
K最近邻算法 简称KNN,计算与周边邻居的距离的算法,用于创建分类系统.机器学习等. 算法思路:首先特征化(量化) 然后在象限中选取目标点,然后通过目标点与其n个邻居的比较,得出目标的特征. 余弦相似 ...
- PCB 加投率计算实现基本原理--K最近邻算法(KNN)
PCB行业中,客户订购5000pcs,在投料时不会直接投5000pcs,因为实际在生产过程不可避免的造成PCB报废, 所以在生产前需计划多投一定比例的板板, 例:订单 量是5000pcs,加投3%,那 ...
- K最近邻算法项目实战
这里我们用酒的分类来进行实战练习 下面来代码 1.把酒的数据集载入到项目中 from sklearn.datasets import load_wine #从sklearn的datasets模块载入数 ...
- 秒懂机器学习---k临近算法(KNN)
秒懂机器学习---k临近算法(KNN) 一.总结 一句话总结: 弄懂原理,然后要运行实例,然后多解决问题,然后想出优化,分析优缺点,才算真的懂 1.KNN(K-Nearest Neighbor)算法的 ...
- 图说十大数据挖掘算法(一)K最近邻算法
如果你之前没有学习过K最近邻算法,那今天几张图,让你明白什么是K最近邻算法. 先来一张图,请分辨它是什么水果 很多同学不假思索,直接回答:“菠萝”!!! 仔细看看同学们,这是菠萝么?那再看下边这这张图 ...
- 12、K最近邻算法(KNN算法)
一.如何创建推荐系统? 找到与用户相似的其他用户,然后把其他用户喜欢的东西推荐给用户.这就是K最近邻算法的分类作用. 二.抽取特征 推荐系统最重要的工作是:将用户的特征抽取出来并转化为度量的数字,然后 ...
随机推荐
- spring的几个面试题
Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性.Spring 官网:https://spring.io/. 我们一般说 Spring 框架指的都是 Spring Fr ...
- 2018-5-19-创建不带BOM-的UTF8
title author date CreateTime categories 创建不带BOM 的UTF8 lindexi 2018-05-19 14:11:33 +0800 2018-2-13 17 ...
- Blazor 服务端组件 Render, RenderFragment ,RenderTreeBuilder, CascadingValue/CascadingParameter
一.组件 支撑Blazor的是微软的两大成熟技术,Razor模板和SignalR,两者的交汇点就是组件.通常,我们从ComponentBase派生的类型,或者创建的.razor 文件,就可以称作组件. ...
- python 可变参数示例
练习1:请使用**kw的方式,把可变的所有参数, # 算一字典的value乘积 def fun(**kw): product =1 for k ,v in kw.items(): if isinsta ...
- java中发送http请求的方法
package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...
- $Noip2012/Luogu1083$ 借教室
$Luogu$ $Sol$ 区间整体加减? 差分+树状数组维护前缀和! 那每给一个人借完教室之后都要判断一下现在合不合法?那复杂度比暴力还不如些... 注意到这里的单调性,假设给前$x$个人借完教室之 ...
- day3(if和for)
if if <条件判断 1>: <执行 1>elif <条件判断 2>: <执行 2>elif <条件判断 3>: <执行 3> ...
- docker-覆盖网络
docker network rm docker_gwbridge Error response from daemon: Error response from daemon: network ne ...
- PHP 对接第三方 LINE 登录,网上找到相关的不多 但是网上哪些乱七八糟的啰啰嗦嗦 要么就是怎么做的, 什么步骤 总会给你省略, 如果有幸你看到我的 可以放心的复制即用, 当然 你也可以用postman去尝试 不过我觉得既然做开发 就没必要那个了! 如果用postman再最后一步的时候 请用本文最下方式
* LINE 官方文档:https://developers.line.biz/en/docs/line-login/getting-started/* 开发者平台地址:https://develop ...
- Bandicam(班迪录屏)高清视频录制工具
Bandicam(班迪录屏)简单好用的录屏幕,录游戏,录视频的功能强大的屏幕录像软件,比起其他软件其性能更加卓越. 与其他软件相比,用Bandicam录制的视频大小更小, 不仅保证原文件的质量.