什么是监督学习?与无监督学习、半监督学习、强化学习有何区别?代码举例讲解

机器学习可以分为四大类:

  • 监督学习:使用包含输入数据和期望输出结果的训练数据集来学习。用于分类和回归任务。例如线性回归、 Logistic回归、决策树等。
  • 无监督学习:不需要训练数据的期望输出结果。用于聚类、降维等任务。例如K-means聚类、PCA等。
  • 半监督学习:包含少量带标签数据和大量无标签数据。用于处理标签数据稀缺的情况。例如生成模型等。
  • 强化学习:通过与环境的交互来获得外界的反馈作为学习信号,用于控制和决策任务。例如深度强化学习等。

代码示例:

监督学习:

python
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(x_train, y_train)  
pred = model.predict(x_test)

无监督学习:

python
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(x)
labels = model.labels_

半监督学习:

python
from sklearn.semi_supervised import LabelPropagation

label_prop_model = LabelPropagation()
label_prop_model.fit(x_all, y_train)
y_test = label_prop_model.predict(x_test)

强化学习:

python
import gym

env = gym.make('CartPole-v1')
obs = env.reset()

while True:
    env.render()
    action = get_action(obs)  # 策略来获得动作
    obs, reward, done, _ = env.step(action)   # 执行动作
    if done:
      obs = env.reset()   # 重置环境