913 字
5 分钟
机器学习入门:从 ML 概述到 KNN 分类
人工智能、机器学习与深度学习的关系
-
人工智能(AI)
- 概念起源:1950年代
- 目标:创建能够达到人类智慧水平的机器
- 实现方式:有多种方法,机器学习是其中之一
-
机器学习(ML)
- 发展时间:1980年代开始兴起
- 地位:实现人工智能的一种重要方法
- 发展推动因素:数据量增长、硬件设施发展、算法进步
-
深度学习(DL)
- 发展时间:2010年左右开始热门
- 地位:机器学习的一个重要分支
- 包含算法:CNN、RNN等
关系总结:深度学习 ⊂ 机器学习 ⊂ 人工智能
机器学习基本概念
机器学习解决问题的基本流程
- 训练样本:N个已知样本数据
- 特征提取:从样本中提取有用属性
- 算法学习:使用算法学习特征规律
- 模型构建:形成可预测的模型
- 预测未知:对新数据进行预测
机器学习分类
- 监督学习:训练样本包含标签,应用:分类、回归问题
- 无监督学习:训练样本不包含标签,应用:聚类分析
鸢尾花分类项目实践
数据集
- 样本数量:150个
- 特征数量:4个(花萼长度、花萼宽度、花瓣长度、花瓣宽度)
- 分类类别:3种(山鸢尾、变色鸢尾、维吉尼亚鸢尾)
KNN 分类算法基础
scikit-learn 基础
-
数据格式要求:
- 特征X必须是数值矩阵(如150×4)
- 标签y必须是数值向量(如150个0/1/2)
-
数据预处理:
iris_data['Label'] = iris_data['Species'].map({ 'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2})- 数据划分:
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=10)KNN 算法原理
-
工作原理:
- 计算测试样本与所有训练样本的距离
- 找出距离最近的K个邻居
- 根据邻居的多数类别确定预测结果
-
K值影响:
- K=1:只考虑最近的一个样本(容易受噪声影响)
- K增大:决策边界更平滑(可能忽略局部特征)
scikit-learn 实现流程
from sklearn.neighbors import KNeighborsClassifier
# 创建模型(默认K=5)knn = KNeighborsClassifier()
# 训练模型knn.fit(X_train, y_train)
# 评估与预测accuracy = knn.score(X_test, y_test)y_pred = knn.predict(X_new)KNN 算法深入与参数调优
相似性度量(距离计算)
- 明可夫斯基距离:
distance = (∑|x_i - y_i|^p)^(1/p)- p=2:欧式距离(默认)
- p=1:曼哈顿距离
KNeighborsClassifier(metric='minkowski', p=2) # 欧式距离KNeighborsClassifier(metric='minkowski', p=1) # 曼哈顿距离模型参数分类
- 超参数:需要人工预先设定(如K值、距离度量方式)
- 模型参数:通过训练数据自动学习得到(如线性回归系数)
KNN 优缺点
优点:
- 原理简单直观,易于实现
- 无需训练过程(惰性学习)
- 对数据分布没有假设
缺点:
- 计算量大(需计算与所有训练样本的距离)
- 对高维数据效果差(维度灾难)
- 需要合理选择K值和距离度量
- 对不平衡数据敏感
实践:不同 K 值的分类效果
from sklearn.neighbors import KNeighborsClassifier
k_values = [3, 5, 10]selected_features = ['SepalLengthCm', 'SepalWidthCm']
for k in k_values: knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train[selected_features], y_train) accuracy = knn.score(X_test[selected_features], y_test) print(f'K={k}时准确率: {accuracy:.2%}')实验结果(仅使用花萼长宽两个特征):
- K=3:准确率66%
- K=5:准确率68%
- K=10:准确率78%
关键知识点总结
-
距离度量选择:欧式距离适合大多数情况,曼哈顿距离对异常值更鲁棒
-
K值选择原则:一般取3-20之间的奇数(避免平票),通过交叉验证确定最优值
-
特征选择影响:不同特征组合会影响分类效果
机器学习入门:从 ML 概述到 KNN 分类
https://youki.bbroot.com/posts/ai/iris-knn/