当前位置: 首页 > web >正文

机器学习入门

机器学习入门

1 . 机器学习是什么?

机器学习(Machine Learning, ML)是一种用数据经验替代显式规则编程来完成任务的方法──模型从样本 (X, y) 中学习 映射函数 f: X → Y,并在新样本上做出预测。和传统“if … else”程序相比,它更像“用历史统计经验来推断未来” 。

关键词通俗解释
特征 (feature)可观察条件,如天气、价格
标签 (label)结果/决策,如“去不去看球赛”
训练集 / 测试集用来“学” / 用来“考”
欠拟合 / 过拟合模型太简单学不全 / 太复杂只记死记忆,泛化差

数据决定上限,算法只负责无限逼近这个上限。


2 . 从“看球赛”小故事理解模型训练流程

  1. 收集数据
    天气、票价、是否有朋友等 → 决策结果(去/不去)。
  2. 拆分数据:80 % 训练,20 % 测试。
  3. 选算法:例如 KNN、线性回归等。
  4. 训练 (fit):让算法寻找最好拟合训练集的参数。
  5. 评估 (score):在测试集上打分,检查是否过/欠拟合。
  6. 部署 (predict):对未来比赛日输入特征,输出决策。

小结:机器学习就是把“人类经验”转换成“可计算模型”,然后复制这种决策能力。


3 . KNN:最容易上手的分类算法

3.1 直观概念

  • 把每个样本想成坐标系里的一个点。
  • 给新点找最近的 K 个邻居;如果多数邻居属于类别 A,就把新点也归为 A。
  • 零训练成本:模型只是存储全部数据,预测时再计算距离。

3.2 距离怎么量?

p 维空间常用 欧式距离
d ( x , x ′ ) = ∑ i = 1 p ( x i − x i ′ ) 2 d(\mathbf{x},\mathbf{x}')=\sqrt{\sum_{i=1}^{p}(x_i-x'_i)^2} d(x,x)=i=1p(xixi)2
也可选 曼哈顿距离(当 p=1 时更像“横竖走格子”)。距离指标由 p 参数控制。

3.3 超参数

参数作用经验选取
K (n_neighbors)看几个邻居奇数,√N 左右,再用网格搜索调优
weights邻居是否按距离加权uniform / distance
p距离度量1 → 曼哈顿;2 → 欧式

思路:K 小易过拟合,K 大易欠拟合;用交叉验证找到平衡点。


4 . 用 sklearn 动手:Iris 鸢尾花分类

from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split, GridSearchCVX, y = load_iris(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, shuffle=True)# 网格搜索自动调 K / weights / p
param = {'n_neighbors': range(1, 11, 2),'weights': ['uniform', 'distance'],'p': [1, 2]}
clf = GridSearchCV(KNeighborsClassifier(), param, cv=5)
clf.fit(X_tr, y_tr)print("最佳参数:", clf.best_params_)
print("测试集准确率:", clf.score(X_te, y_te))
  • 训练fit
  • 预测predict
  • 保存模型joblib.dump(clf, 'knn.model')
  • 加载模型clf = joblib.load('knn.model')

即使数学基础薄弱,只要记住“把数据当坐标、看最近邻就是同类”,就能理解 KNN。


5 . KNN 优缺点 & 何时该用

优点缺点
简单直觉,无参数化假设预测耗时:每次都要计算全部样本距离
对异常点不敏感对高维数据“维度灾难”严重
可处理多分类数据偏移或类别分布不均时效果差

适用场景:样本量中等、特征维度低、实时性要求不高的分类任务,例如推荐系统中的“找相似用户/物品”。


6 . 从 KNN 再到更强的模型

当 KNN 出现 计算慢维度灾难 时,可尝试:

  1. 决策树 / 随机森林:通过一系列“是/否”问题快速分类。
  2. SVM、Logistic 回归:对高维稀疏数据更友好。
  3. 梯度提升、神经网络:在大数据量与复杂关系下效果更强。

但无论选择哪种算法,核心流程——拆分数据 → 训练 → 评估 → 调参 → 部署——始终不变。

机器学习让计算机“通过例子学经验”;KNN是最易理解的入门算法: “投票给最近的 K 个邻居”。掌握它的思想和 scikit-learn 用法,你就跨进了 ML 的大门。

http://www.xdnf.cn/news/7764.html

相关文章:

  • 理解Java泛型
  • 直流无刷水泵方案之无感FOC控制---【其利天下技术】
  • StreamSaver实现大文件下载解决方案
  • 对象属性复制BeanCopier-笔记
  • 基于正点原子阿波罗F429开发板的LWIP应用(2)——设置静态IP和MAC地址修改
  • Python代码加密与发布方案详解
  • SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)
  • MCP模型上下文协议:基于FastMCP 2.0的实践(2)
  • 机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平
  • Linux基础IO(二)
  • upload-labs通关笔记-第14关 文件上传之文件头绕过(图片马)
  • 建筑墙壁红外热成像裂缝潮湿检测数据集VOC+YOLO格式306张2类别
  • 【项目】—高并发内存池
  • AUTOSAR图解==>AUTOSAR_SRS_SAEJ1939
  • day16-17-磁盘管理
  • 流程控制-循环
  • Robot Studio开发入门指南
  • 频分复用信号在信道中的状态
  • 第11天-Python GUI开发实战:Tkinter从入门到项目实践
  • 鸿蒙开发进阶:深入解析ArkTS语言特性与高性能编程实践
  • 【设计模式】基于 Java 语言实现工厂模式
  • 第二届帕鲁杯时间折叠(TimeFold Paradox)
  • 绝缘栅双极型晶体管IGBT的结构与特点
  • 【Git】常用命令大全
  • Git的windows开发与linux开发配置
  • Dify快速上手 MCP,接入高德地图 Server 实战攻略
  • 香港科技大学物理学理学(科学计算与先进材料物理与技术)硕士招生宣讲会——深圳大学
  • 制作一款打飞机游戏52:子弹模式
  • C++显式声明explicit
  • 1G(第一代移动通信系统)详解