← 返回首页
🤖

监督学习入门

📂 ai ⏱ 2 min 207 words

监督学习入门

什么是监督学习

监督学习(Supervised Learning)是机器学习中最常用的范式。其核心思想是:使用带有标签(label)的训练数据来训练模型,让模型学习输入特征到输出标签的映射关系。

就像老师给学生批改作业一样,监督学习中的每个训练样本都包含了"题目"(特征)和"答案"(标签),模型通过不断学习这些样本来提高预测能力。

监督学习的两大任务

1. 分类(Classification)

预测结果是离散的类别标签。例如:

2. 回归(Regression)

预测结果是连续的数值。例如:

常用监督学习算法

算法 适用任务 特点
线性回归 回归 简单、可解释性强
逻辑回归 分类 适合二分类问题
决策树 分类/回归 易理解、可可视化
随机森林 分类/回归 精度高、抗过拟合
支持向量机 分类/回归 适合高维数据
神经网络 分类/回归 处理复杂非线性问题

监督学习工作流程

收集带标签数据 → 数据预处理 → 划分训练/测试集 → 选择算法
    → 训练模型 → 评估性能 → 调优 → 部署

代码示例:监督学习分类实战

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
import warnings
warnings.filterwarnings('ignore')

# 加载葡萄酒数据集
wine = load_wine()
X, y = wine.data, wine.target
print(f"特征数: {X.shape[1]}, 样本数: {X.shape[0]}, 类别数: {len(set(y))}")

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 比较三种不同算法
models = {
    'KNN': KNeighborsClassifier(n_neighbors=5),
    'SVM': SVC(kernel='rbf', C=1.0, random_state=42),
    'Random Forest': RandomForestClassifier(n_estimators=100, random_state=42)
}

print("\n模型性能对比:")
print("-" * 45)
for name, model in models.items():
    if name == 'Random Forest':
        model.fit(X_train, y_train)
        y_pred = model.predict(X_test)
    else:
        model.fit(X_train_scaled, y_train)
        y_pred = model.predict(X_test_scaled)

    accuracy = accuracy_score(y_test, y_pred)

    # 交叉验证
    if name == 'Random Forest':
        cv_scores = cross_val_score(model, X, y, cv=5)
    else:
        cv_scores = cross_val_score(model, X_train_scaled, y_train, cv=5)

    print(f"{name:15} | 准确率: {accuracy:.4f} | 5折CV: {cv_scores.mean():.4f}")

# 输出最佳模型的混淆矩阵
print("\n随机森林混淆矩阵:")
print(confusion_matrix(y_test, models['Random Forest'].predict(X_test)))

模型评估指标

总结

监督学习是机器学习的基石,掌握它将为后续学习更复杂的算法奠定基础。关键是要理解数据质量对模型性能的影响,以及如何选择合适的评估指标来衡量模型效果。