机器学习10 K最近邻(KNN)

KNN 是有监督算法

前提

KNN使用要求(同时满足)
1,有y
2,y是类别类型(y是离散的)

概念

所谓K最近邻,就是k个最近的邻居的意思,每个样本都可以用它最接近的k个邻居来代表

K最近邻算法的核心思想是:如果一个样本在特征空间中的k个最相邻(最相似,距离最近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性

近朱者赤,近墨者黑
在这里插入图片描述
在这里插入图片描述

实战经验

局限:
适用于10w行数据以下(每次分类都要进行全局算距离)
准确度不是很高

优点:
随时加入数据都可以

KNN和KMeans区别

1,有没有y(监督,无监督):KNN有y,监督类算法
2,算法原理:KMeans有挨个遍历各个点的距离,聚成簇,KNN没有
3,KNN结果是分类(监督类),KMeans结果是簇(非监督类)

代码

导入模块

KMeans

from sklearn.cluster import KMeans

DBSCAN

from sklearn.cluster import DBSCAN

KNN

from sklearn.neighbors import KNeighborsClassifier
函数

在这里插入图片描述

参数

n_neighbors 邻居数,默认为5 int
weight 权重,默认为'uniform'(领域内所有点的权重一样),可改为'distance'(越近权重越大)

方法

在这里插入图片描述

总结:监督类型的算法都是围绕 fit()predict()score()三个方法

导入包

在这里插入图片描述

编程 项目流程

在这里插入图片描述

1,数据准备

在这里插入图片描述

2,划分训练集和测试集

先用提示所需要的参数
在这里插入图片描述

test_size是测试集,默认是None,
train_size是训练集,默认是None,
只需要给其中一个系统自动就知道另一个了,这里给出测试集是0.2
在这里插入图片描述
看看x_train这四个numpy arry是几行几列 .shape
在这里插入图片描述

3,构建训练模型

在这里插入图片描述

4,预测(可能没有)

knn.predict(X) 注意预测()里面只有x,没有y
在这里插入图片描述
得到的预测数据y_p和测试数据y_test个数都一样,说明预测成功了

5,准确度

knn.score(X,Y) 越接近1越好
在这里插入图片描述

在这里插入图片描述

全文代码

#### 导入包

import numpy as np
#datasets是自带demo数据集,方便自学
from sklearn import datasets
#train_test_split是数据集划分 8:2  7:3
from sklearn.model_selection import train_test_split
#KNN
from sklearn.neighbors import KNeighborsClassifier


#### 鸢尾花iris数据集

iris = datasets.load_iris()

"""
sepal length: 萼片长度(厘米)
sepal width: 萼片宽度(厘米)
petal length: 花瓣长度(厘米)
petal width: 花瓣宽度(厘米)
"""


#### 数据准备

iris

x = iris['data']
x

y = iris['target']
y

#### 训练集和测试集划分

train_test_split?

 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

#看看数据几行几列
x_train.shape

x_test.shape

y_train.shape

y_test.shape

x.shape

y.shape

#### 构建训练模型

knn = KNeighborsClassifier() #模型准备

knn.fit(x_train,y_train) #模型训练

#### 预测(可能没有)

knn.predict?

y_p = knn.predict(x_test)
y_p

y_test

#### 准确度

knn.score(x_test,y_test)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值