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

文章目录

      • 前提
      • 概念
      • 实战经验
      • KNN和KMeans区别
      • 代码
        • 导入模块
        • 函数
        • 参数
        • 方法
        • 导入包
      • 编程 项目流程
        • 1,数据准备
        • 2,划分训练集和测试集
        • 3,构建训练模型
        • 4,预测(可能没有)
        • 5,准确度
      • 全文代码

KNN 是有监督算法

前提

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

概念

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

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

近朱者赤,近墨者黑
机器学习10 K最近邻(KNN)_第1张图片
机器学习10 K最近邻(KNN)_第2张图片

实战经验

局限:
适用于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'(越近权重越大)

方法

机器学习10 K最近邻(KNN)_第3张图片

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

导入包

机器学习10 K最近邻(KNN)_第4张图片

编程 项目流程

机器学习10 K最近邻(KNN)_第5张图片

1,数据准备

机器学习10 K最近邻(KNN)_第6张图片

2,划分训练集和测试集

先用提示所需要的参数
机器学习10 K最近邻(KNN)_第7张图片

test_size是测试集,默认是None,
train_size是训练集,默认是None,
只需要给其中一个系统自动就知道另一个了,这里给出测试集是0.2
在这里插入图片描述
看看x_train这四个numpy arry是几行几列 .shape
机器学习10 K最近邻(KNN)_第8张图片

3,构建训练模型

在这里插入图片描述

4,预测(可能没有)

knn.predict(X) 注意预测()里面只有x,没有y
机器学习10 K最近邻(KNN)_第9张图片
得到的预测数据y_p和测试数据y_test个数都一样,说明预测成功了

5,准确度

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

机器学习10 K最近邻(KNN)_第10张图片

全文代码

#### 导入包

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)


你可能感兴趣的:(机器学习,机器学习,算法,人工智能)