监督学习 (Supervised Learning)

核心思想: 从带有“正确答案”的标记数据中学习。就像学生跟着有答案的习题集学习一样,模型通过对比预测和真实标签的差异来不断修正自己。

# 示例:根据肿瘤大小和年龄预测是否为恶性 from sklearn.svm import SVC # X: 特征 (大小, 年龄) # y: 标签 (0: 良性, 1: 恶性) X_train = [[1.2, 35], [2.5, 48], ...] y_train = [0, 1, ...] # 创建并训练一个分类器 model = SVC() model.fit(X_train, y_train) # 预测新样本 new_sample = [[1.8, 41]] prediction = model.predict(new_sample)

非监督学习 (Unsupervised Learning)

核心思想: 从没有“正确答案”的未标记数据中发现隐藏的结构或模式。就像侦探在没有线索的情况下,通过分析案发现场来寻找关联,将事物进行“物以类聚”。

# 示例:将客户根据消费行为自动聚类 from sklearn.cluster import KMeans # X: 特征 (购买频率, 平均消费额) X_data = [[0.8, 150], [0.2, 45], ...] # 创建模型,指定聚为3类 kmeans = KMeans(n_clusters=3) clusters = kmeans.fit_predict(X_data)

半监督学习 (Semi-supervised Learning)

核心思想: 结合了监督学习和非监督学习。使用少量已标记数据和大量未标记数据进行学习。这在数据标记成本高昂时非常有用。

# 概念: # 1. 用少量已标记数据训练一个初始模型。 # 2. 用该模型对未标记数据进行预测。 # 3. 将预测结果中最可信的一部分作为“伪标签” # 加入训练集。 # 4. 重复步骤1-3,直到模型收敛。 from sklearn.semi_supervised import LabelPropagation # X_labeled, y_labeled: 已标记数据 # X_unlabeled: 未标记数据 # y 中未标记的样本用 -1 表示 model = LabelPropagation() model.fit(X_all, y_all)

强化学习 (Reinforcement Learning)

核心思想: 让一个智能体 (Agent) 在一个环境 (Environment) 中通过“试错”来学习。智能体做出一个动作 (Action),环境会给予一个奖励 (Reward) 或惩罚,智能体的目标是学会在什么状态下做什么动作,才能最大化长期累积奖励。

# 概念循环: # for episode in range(num_episodes): # state = env.reset() # done = False # while not done: # # 1. Agent 根据当前状态选择动作 # action = agent.choose_action(state) # # # 2. 环境执行动作,返回新状态和奖励 # new_state, reward, done, _ = env.step(action) # # # 3. Agent 根据奖励更新策略 # agent.learn(state, action, reward, new_state) # # state = new_state