前置能力
vscode等基本python编译环境
会下载py库,解决常见报错
学习目标
- 理解算法有什么用,怎么用
- 理解机器学习基本概念
学习方法
网上教程为主线
AI辅助问答教程缺失的点
AI额外补充知识补丁
项目体验
鸢尾花分类
先pip一些基本的库(缺什么补什么就行,不行就直接把报错甩给AI,这块ai还是能精准回答的)
下面这个代码就是我让claude给我生成的一个基本的0-1小项目,用来体验机器学习算法
# 导入必要的库
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 创建和训练模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train_scaled, y_train)
# 进行预测
y_pred = knn.predict(X_test_scaled)
# 计算准确率
accuracy = knn.score(X_test_scaled, y_test)
print(f"模型准确率: {accuracy:.2f}")
# 可视化前两个特征的分类结果
plt.figure(figsize=(10, 6))
scatter = plt.scatter(X_test_scaled[:, 0], X_test_scaled[:, 1], c=y_pred,
cmap='viridis', label='预测类别')
plt.xlabel('特征1(萼片长度)')
plt.ylabel('特征2(萼片宽度)')
plt.title('鸢尾花分类预测结果')
plt.colorbar(scatter)
plt.show()
西瓜书阅读第一章
机器学习正是这样一门学科,它致力于研究如何通过计算的手段,利用经 验来改善系统自身的性能
在面对新的情况时(例 如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜)
这就是西瓜书的由来吗,有意思
你这瓜保不保熟
数据集
一个数据集里的每条记录都代表一个事件或者对象的描述
(怎么说呢,看到这句话,但凡接触过数据集这个东西的人,都应该能瞬间有一种连点成线的感觉吧)
将不同角度的描述,放入到空间向量中,就找到了一个可以代表这个数据的数学表示——特征向量
(自此,一条数据就这么水灵灵的变成了数学世界的一份子)
“监督 学习“(supervised learning)和 “无 监 督 学 习 "(unsupervised learning),分类 和回归是前者的代表,而聚类则是后者的代表.
机器学习的目标是使学得的模型能很好地适用于“新 样 本 "
我们可以把学习过程看作一个在所有假设(hypothesis)组成的空间中进行 搜索的过程,搜索目标是找到与训练集“匹配”(班)的假设,即能够将训练集中 的瓜判断正确的假设
当多个模型均可以得到结果时
一定要选择一个模型,就会出现模型偏好
那怎么选择呢
一般按照 “奥卡姆剃刀" (Occam's razor)选择认为“最简单”的一个
推着推着最后发现
总误差竟然与学习算法无关~~(此处省略一亿条数学推导)~~
N FL定理最重要的寓意,是让我们清楚地认识到,脱离具体问题,空 泛 地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所 有学习算法都一样好.要谈论算法的相对优劣,必须要针对具体的学习问题;在 某些问题上表现好的学习算法,在另一些问题上却可能不尽如人意
学习算法 自身的归纳偏好与问题是否相配,往往会起到决定性的作用.
这可以符合直观,也可以不符合
讨论方法论本身没有任何意义,讨论某个问题的最佳解决方案才有意义(我自己总结的🤟)
总结
我们体验了0-1的小项目,知道了原来我上手也没那么难~~(省略环境配置)~~
整个第一章,没有提到一点具体的算法
从整个机器学习的基本概念解释
到具体的西瓜类比,让人记忆非常深刻的理解了算法要干嘛,我们学这个有啥用
真就是融会贯通
一本好书是这样的,想当初第一次见到机器学习的时候,是大一上
心想:这身东西,不就是一堆算法堆到一块,加上不同的数据,或者换一换加一加别的算法,然后就出来一篇论文吗?一点意思没有,不学不学
书和教程的不同可能就在这吧
没啥用知识补丁
泛化能力,和鲁棒性的区别是什么
claude:
泛化能力和鲁棒性是机器学习中两个重要但不同的概念。让我通过具体例子来解释:
- 泛化能力 (Generalization):
- 定义:模型对新数据(未见过的数据)的预测能力
- 类比:学生不仅会做课本上的题,还能举一反三做新题
- 鲁棒性 (Robustness):
- 定义:模型对噪声、异常值或对抗样本的抵抗能力
- 类比:即使题目有印刷错误,学生也能理解题意并正确作答