AI人工智能分类识别——机器如何学习

AI人工智能分类识别------机器如何学习

学习目标

  1. 机器学习过程
  2. KNN算法原理解析
  3. 鸢尾花分类算法实战
  4. 模型调参和预测

PART 01 机器学习过程

一(w_1、w_2...)机器学习概述

1. 两种解决思路对比

  1. 传统基于规则的方法
  • 依靠显性人工编程,规则由人手动明确编写
  • 逻辑:条件判断分支,固定Code执行路径
  1. 机器学习方法
  • 机器自动从数据中学习隐藏规律,无需人工写死全部规则
  • 完整流程:训练数据输入 → 训练生成模型 → 新数据输入模型 → 输出预测

2. 核心公式

经验(数据) + 思考(算法) = 结果(预测)

  • 特征:样本外在/内在条件(年龄(w_1、w_2...)收入(w_1、w_2...)天气(w_1、w_2...)花瓣长宽等)
  • 标签:对应特征的最终结果(去旅游=1(w_1、w_2...)不去=0;鸢尾花品种)

3. 数据集划分

  • 训练集:用于训练模型,让算法学习数据规律
  • 测试集:模型训练完成后,用来验证模型效果
  • 完整公式:机器学习模型 = 数据 + 算法

核心结论:数据特征决定模型性能上限,算法仅无限逼近该上限

4. 模型训练逻辑

多特征加权求和计算:

Y=x1∗w1+x2∗w2+x3∗w3+x4∗w4Y=x_1*w_1+x_2*w_2+x_3*w_3+x_4*w_4Y=x1∗w1+x2∗w2+x3∗w3+x4∗w4

  • 判定规则:KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲Y>0.5\) → 类别1(去);KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲Y<0.5\) → 类别0(不去)
  • KaTeX parse error: Can't use function '\(' in math mode at position 4: w_1\̲(̲w_1、w_2...\)w_2... 为算法自动学习的权重

5. 模型拟合三种状态

分类(w_1、w_2...)回归任务均存在3种拟合效果:

  1. 欠拟合:模型过于简单,无法学习数据规律,训练/测试效果都差
  2. 最优拟合:完美学习通用规律,训练(w_1、w_2...)测试集准确率均高
  3. 过拟合:过度学习训练集噪声,测试新数据效果极差

6. 机器学习整体分类

(1)有监督学习(带标签数据)
  • 分类(离散结果):逻辑回归(w_1、w_2...)SVM(w_1、w_2...)神经网络(w_1、w_2...)决策树(w_1、w_2...)随机森林(w_1、w_2...)GBDT(w_1、w_2...)KNN(w_1、w_2...)朴素贝叶斯
  • 回归(连续数值):线性回归(w_1、w_2...)SVM(w_1、w_2...)神经网络(w_1、w_2...)决策树(w_1、w_2...)随机森林(w_1、w_2...)GBDT(w_1、w_2...)KNN
(2)无监督学习(无标签数据)
  • 聚类:K-means(w_1、w_2...)层次聚类(w_1、w_2...)密度聚类
  • 其他:关联规则(w_1、w_2...)PCA降维(w_1、w_2...)GMM高斯混合模型

PART 02 KNN算法原理解析

1. KNN基础概念

KNN全称K-Nearest Neighbor(K最邻近法),1968年由Cover和Hart提出,最简单的分类机器学习算法。

核心分类逻辑

若一个未知样本,在特征空间中距离最近的K个样本 里,大多数属于某一类别,则该未知样本判定为此类别。

例:KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲K=3\),最近3个样本中2个蓝三角 → 新样本判定为蓝三角

2. 距离计算公式

(1)欧式距离(二维,(p=2)(p=2)(p=2))

ρ=(x2−x1)2+(y2−y1)2\rho=\sqrt{\left(x_{2}-x_{1}\right)^{2}+\left(y_{2}-y_{1}\right)^{2}}ρ=(x2−x1)2+(y2−y1)2

(2)明可夫斯基通用距离

(∑i=1n∣Xi(a)−Xi(b)∣p)1p\left(\sum_{i=1}^{n}\left|X_{i}^{(a)}-X_{i}^{(b)}\right|^{p}\right)^{\frac{1}{p}}(i=1∑n Xi(a)−Xi(b) p)p1

  • KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲p=1\):曼哈顿距离
  • KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲p=2\):欧式距离(sklearn默认)

3. KNN核心超参数

(1)n_neighbors(K值)

  • K过小:易受噪声(w_1、w_2...)异常点干扰,造成过拟合
  • K过大:远距离样本干扰分类,造成欠拟合
  • 工程习惯:K取奇数,避免投票平局

(2)weights权重

  • uniform(默认):所有近邻样本权重相等,簇状分布数据适用
  • distance:权重与距离成反比,杂乱离散样本效果更好

(3)p:明可夫斯基距离阶数,控制距离度量方式

4. KNN优缺点

优点

  1. 对数据分布无前置假设,准确度高,轻微异常点不敏感
  2. 理论简单(w_1、w_2...)易理解(w_1、w_2...)易实现

缺点

  1. 数据分布偏移时容易分类失败
  2. 预测计算量大:每个新样本都要计算与全部训练样本的距离

PART 03 鸢尾花分类算法实战(sklearn)

1. sklearn工具介绍

Scikit-learn(sklearn):Python主流机器学习封装库,内置标准测试数据集

安装命令(中科大镜像)

bash 复制代码
pip install scikit-learn -i https://pypi.mirrors.ustc.edu.cn/simple/

内置常用数据集

  • load_iris():鸢尾花数据集(本次案例)
  • load_digits():手写数字数据集
  • load_boston():波士顿房价数据集

2. 鸢尾花数据集介绍

4个特征

萼片长度(w_1、w_2...)萼片宽度(w_1、w_2...)花瓣长度(w_1、w_2...)花瓣宽度

3个分类标签(品种)

山鸢尾(w_1、w_2...)变色鸢尾(w_1、w_2...)维吉尼亚鸢尾

3. 完整代码分步解析

步骤1:导入工具 & 加载数据

python 复制代码
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris_data = load_iris()
# 拆分特征\(w_1、w_2...\)标签
data = iris_data.data    # X特征
target = iris_data.target # y标签

步骤2:划分训练集(w_1、w_2...)测试集

python 复制代码
from sklearn.model_selection import train_test_split
# test_size=0.3:30%数据作为测试集,shuffle打乱数据
x_train, x_test, y_train, y_test = train_test_split(
    data, target, test_size=0.3, shuffle=True
)

步骤3:创建KNN模型并训练

python 复制代码
from sklearn.neighbors import KNeighborsClassifier
# K=7,奇数
knn = KNeighborsClassifier(n_neighbors=7)
# 训练模型:特征+标签
knn.fit(x_train, y_train)

步骤4:模型评估 & 保存模型

python 复制代码
# 输出测试集准确率
print(knn.score(x_test, y_test))

# 模型持久化保存
import joblib
joblib.dump(value=knn, filename='knniris.model')

4. 模型评估指标

  1. 准确率 accuracy_score:整体预测正确样本占比
python 复制代码
from sklearn.metrics import accuracy_score
y_predict = knn.predict(x_test)
accuracy_score(y_test, y_predict)
  1. 召回率 recall_score:衡量模型识别正样本的能力

PART 04 模型调参和预测

1. 网格搜索GridSearchCV(自动超参调优)

批量遍历所有参数组合,自动选出最优参数

python 复制代码
from sklearn.model_selection import GridSearchCV
# 1. 创建基础KNN模型
knn_clf = KNeighborsClassifier()
# 2. 定义待遍历的参数范围
param_grid = [{
    'weights': ['distance','uniform'],
    'n_neighbors': [i for i in range(1, 11)],
    'p': [i for i in range(1, 6)]
}]
# 3. 网格搜索对象
knncv = GridSearchCV(knn_clf, param_grid=param_grid)
# 4. 训练搜索最优参数
knncv.fit(x_train, y_train)

调参结果查询API

  • knncv.best_params_:最优超参组合
  • knncv.best_estimator_:使用最优参数的完整模型
  • knncv.best_score_:最优参数对应的训练准确率

2. 模型预测

python 复制代码
# 对测试集批量预测
y_predict = estimator.predict(x_test)

3. 模型保存与加载(joblib)

保存模型

python 复制代码
import joblib
joblib.dump(value=estimator, filename="knniris.model")

加载模型

python 复制代码
model = joblib.load(filename="knniris.model")
相关推荐
七牛开发者41 分钟前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
冬奇Lab43 分钟前
Code Agent 解剖(04):系统提示词是怎么组装的,agent 的「人格」从哪来?
人工智能·开源·agent
河南凹凸环境艺术设计1 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python
饼饼学习空间智能1 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
千里念行客2401 小时前
业绩与创新双兑现!科伦博泰的Biopharma进阶之路
大数据·人工智能
深蓝海域知识库2 小时前
评学问练考:大模型AI智能学院——重塑学习培训
人工智能
漂流瓶jz2 小时前
【AI】一文读懂大模型生态:分类/参数/结构/训练/GPU/评测/排行/社区
人工智能·llm·openai
一点一木2 小时前
Hermes Desktop 重磅更新,Bot Mode 正式上线——把你的 AI 变成一支可协作的专属团队
人工智能·agent
leoZ2313 小时前
Vue3 还原一个企业级后台-08-API注册管理
目标检测·机器学习·分类·状态模式·迁移学习·集成学习·figma