适用人群:有Python和数学基础
难度:中高
预计学习时间:60-80小时
为什么学机器学习?
| 优势 | 说明 |
|---|
| 前沿技术 | AI/ML是当前最热技术方向 |
| 高薪职位 | ML工程师薪资极高 |
| 广泛应用 | 几乎所有行业都在用 |
| 基础重要 | 是深度学习、NLP、CV的基础 |
学习路线
第1阶段:数学基础(2周)
├── 线性代数(向量、矩阵运算)
├── 概率统计(均值、方差、分布)
├── 微积分(梯度、导数)
└── 优化理论(梯度下降)
第2阶段:经典算法(3周)
├── 线性回归
├── 逻辑回归
├── 决策树与随机森林
├── 支持向量机(SVM)
├── K近邻(KNN)
├── K-Means聚类
└── 主成分分析(PCA)
第3阶段:Scikit-learn实战(2周)
├── 数据预处理(StandardScaler/OneHotEncoder)
├── 特征工程
├── 模型训练与评估
├── 交叉验证
├── 超参数调优(GridSearchCV)
└── Pipeline流水线
第4阶段:深度学习入门(3周)
├── 神经网络基础
├── PyTorch基础
├── CNN(图像分类)
├── RNN/LSTM(序列数据)
└── 预训练模型(Hugging Face)
核心代码示例
# Scikit-learn 机器学习流水线
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 加载数据
df = pd.read_csv('data.csv')
X = df.drop('target', axis=1)
y = df['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)
# 训练模型
model = LogisticRegression()
model.fit(X_train_scaled, y_train)
# 预测
y_pred = model.predict(X_test_scaled)
print(f"准确率: {accuracy_score(y_test, y_pred):.4f}")
print(classification_report(y_test, y_pred))
# 随机森林
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
print(f"随机森林准确率: {rf.score(X_test, y_test):.4f}")
# 交叉验证
from sklearn.model_selection import cross_val_score
scores = cross_val_score(rf, X, y, cv=5)
print(f"交叉验证: {scores.mean():.4f} ± {scores.std():.4f}")
# 超参数调优
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [3, 5, 10, None],
'min_samples_split': [2, 5, 10]
}
grid = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid.fit(X_train, y_train)
print(f"最佳参数: {grid.best_params_}")
print(f"最佳得分: {grid.best_score_:.4f}")
# Pipeline
from sklearn.pipeline import Pipeline
from sklearn.decomposition import PCA
pipe = Pipeline([
('scaler', StandardScaler()),
('pca', PCA(n_components=5)),
('clf', LogisticRegression())
])
pipe.fit(X_train, y_train)
print(f"Pipeline准确率: {pipe.score(X_test, y_test):.4f}")
# PyTorch 深度学习基础
import torch
import torch.nn as nn
import torch.optim as optim
# 简单神经网络
class Net(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super().__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x
# 训练
model = Net(10, 64, 2)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(100):
outputs = model(X_tensor)
loss = criterion(outputs, y_tensor)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (epoch + 1) % 10 == 0:
print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
算法选择指南
| 问题类型 | 推荐算法 | 说明 |
|---|
| 预测数值 | 线性回归/随机森林 | 房价、销量预测 |
| 分类问题 | 逻辑回归/随机森林/XGBoost | 垃圾邮件、图片分类 |
| 聚类问题 | K-Means/DBSCAN | 用户分群、异常检测 |
| 降维 | PCA/t-SNE | 数据可视化、特征压缩 |
| 文本分类 | TF-IDF+朴素贝叶斯/BERT | 情感分析、主题分类 |
推荐资源
| 资源 | 说明 |
|---|
| 吴恩达机器学习 | Coursera经典课程 |
| Scikit-learn文档 | 最好的ML工具库文档 |
| Kaggle竞赛 | 实战练手平台 |
| 动手学深度学习 | 李沐,免费中英文教程 |
| Hugging Face | 预训练模型和数据集 |