1. 回顾与引入
上节课我们谈到了机器学习的一些实战技巧,比如如何处理数据、选择模型以及调整参数。今天,我们将更深入地探讨机器学习的两大类:监督学习和非监督学习。
2. 监督学习
监督学习就像是有老师的教学过程。在这个过程中,我们给算法提供带有标签的数据,让算法学习如何根据输入数据预测输出结果。想象一下,如果你是一名学生,老师给了你很多例题和答案,然后让你自己解题,这就是监督学习。
示例代码
下面是一个简单的线性回归示例,我们将使用sklearn库来预测房价:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 加载房价数据
data = pd.read_csv('house_prices.csv')
# 特征与标签分离
X = data.drop(columns=['Price'])
y = data['Price']
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 使用线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, predictions)
print("Mean Squared Error:", mse)
3. 非监督学习
非监督学习就像是自学的过程,没有老师指导。在这个过程中,我们只给算法提供没有标签的数据,让算法自己去发现数据中的模式和结构。想象一下,如果你拿到一堆杂乱无章的拼图,没有参考图片,你需要自己找出它们之间的联系,这就是非监督学习。
示例代码
下面是一个简单的聚类分析示例,我们将使用KMeans算法对鸢尾花数据集进行聚类:
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
# 使用KMeans算法
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Iris Clustering')
plt.show()
4. 小结
今天,我们探讨了监督学习和非监督学习的区别,并通过示例代码展示了它们的应用。监督学习适用于有标签数据的情况,而非监督学习则适用于没有标签数据的情况。这两种方法都是机器学习中非常重要的组成部分。