2. KNN分类算法与鸢尾花分类任务(KNN、距离度量)

上一篇博客:1.人工智能核心概念

1. 鸢尾花分类步骤

1.1 分析问题,搞定输入和输出

  • 输入:花;
  • 输出:类别
  • 如何数字化一个实体(entity)?
    • 用这个实体的特征/属性来刻画这个实体!!!
    • 四个属性:花瓣长,花瓣宽,花萼长,花萼宽
  • 输出:从零开始编号:0, 1, 2 …(zero index),鸢尾花一共3类
  • 一个样本:花瓣长,花瓣宽,花萼长,花萼宽,类别编号

1.2 每个类别各采集50朵花

  • 花瓣长1,花瓣宽1,花萼长1,花萼宽1,类别编号1
  • 花瓣长2,花瓣宽2,花萼长2,花萼宽2,类别编号2
  • 花瓣长3,花瓣宽3,花萼长3,花萼宽3,类别编号3
  • 花瓣长150,花瓣宽150,花萼长150,花萼宽150,类别编号150

1.3 选择一种算法,完成输入到输出的映射

  • 分类算法
    • KNN:K紧邻算法
    • GNB:高斯贝叶斯
    • DT:决策树算法
    • SVM:支持向量机
    • RF:随机森林算法
    • 集成学习算法

1.4 第四步:部署,集成

2. KNN算法原理

2.1 基本概念

  • KNN: K-Nearest Neighbors K个最近的邻居,所以也叫 K-近邻 算法

2.2 核心理念

  • 近朱者赤,近墨者黑
  • 跟什么样的人在一起,你就会变成什么样的人!!!

2.3 训练

  • 惰性计算算法
  • 规则 + 数据,不是严格意义上的人工智能算法

2.4 推理流程

  • 给定一朵花,如何判定它是第几类?
  • 第一步:找出这朵花 K 个最近的邻居(最好的兄弟,闺蜜)
    • 相似度的度量
      几何视角: 1. 欧式空间,距离计算,2. 勾股定理
      • 向量视角:1. 余弦相似度
  • 第二步:K个邻居进行投票,选出类别出现次数最多的类

3. 使用 sklearn 完成分类任务

3.1 代码实现

  • knn_demo
from sklearn.datasets import load_iris
# 加载数据
X,y = load_iris(return_X_y=True)
print(X.shape,y.shape)
# 数据集切分
from sklearn.model_selection import train_test_split
# 参数:shuffle=True:打乱数据集,random_state=0 指定随机种子,方便复现结果
X_train,X_test,y_train,y_test =  train_test_split(X,y,test_size=0.2,shuffle=True,random_state=0)

# 引入一个模型
from sklearn.neighbors import KNeighborsClassifier  
# 1.构建模型
knn=KNeighborsClassifier(n_neighbors=3)
# 2.训练模型
knn.fit(X_train,y_train)
# 3.预测
y_pred=knn.predict(X_test)
print(y_pred)
print(y_test)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值