57 - 机器学习入门教程

适用人群:有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预训练模型和数据集
返回首页