• K近邻
  • 逻辑斯谛回归
  • 决策树

K近邻(KNN)

最简单最初级的分类器,就是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类
K近邻(k-nearest neighbour, KNN)是一种基本分类方法,通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数;
KNN算法中,所选择的邻居都是已经正确分类的对象

                       机器学习模型| 监督学习| KNN | 决策树

绿色圆(测试数据)要被决定赋予哪个类,是红色三角形还是蓝色四方形?
  如果K=3(距离绿色圆最近的3个),由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,
  如果K=5(距离绿色圆最近的5个),由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类;

KNN算法的结果很大程度取决于K的选择。

KNN距离计算
KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:

        机器学习模型| 监督学习| KNN | 决策树

 

 

    机器学习模型| 监督学习| KNN | 决策树(一般选择曼哈顿距离)

KNN算法
在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

  • 计算测试数据与各个训练数据之间的距离;
  • 按照距离的递增关系进行排序;
  • 选取距离最小的K个点;
  • 确定前K个点所在类别的出现频率;
  • 返回前K个点中出现频率最高的类别作为测试数据的预测分类。

代码的实现:

### 0.引入依赖
import numpy as np
import pandas as pd

# 这里直接引入sklearn里的数据集,iris鸢尾花
from sklearn.datasets import load_iris 
from sklearn.model_selection import train_test_split  # 切分数据集为训练集和测试集
from sklearn.metrics import accuracy_score # 计算分类预测的准确率

   基于sklearn的iris数据集及简介

 附:

机器学习模型| 监督学习| KNN | 决策树
print(iris.data.shape) #data对应了样本的4个特征,150行4列(150, 4)
print(iris.data[:5]) # 显示样本特征的前5行
print(iris.target.shape) # target对应了样本的类别(目标属性),150行1列
print(iris.target) # 显示所有样本的目标属性; iris的每个样本都包含了品种信息,即目标属性(第5列,也叫target或label)
===>
(150, 4)
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
(150,)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
View Code

相关文章: