机器学习基础
机器学习是人工智能的一个核心领域,它致力于研究如何让计算机从数据中“学习”并做出决策。根据学习方式的不同,主要可以分为以下几种类型。
监督学习 (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