L1 Sklearn 衍生概念辨析 - 回归/分类/聚类/降维

背景

前文中我们提到:

Scikit-Learn 库的算法主要有四类:分类、回归、聚类、降维:

  1. 回归:线性回归、决策树回归、SVM回归、KNN 回归;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。
  2. 分类:线性分类、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。
  3. 聚类:K均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN。
  4. 降维:LinearDiscriminantAnalysis、PCA。

本文将展开解释回归分类聚类降维的区别,并使用 Scikit-learn 中的自带数据集来说明各自的用途以及它们所达到的效果,可以帮助我们更直观地理解这几类机器学习任务。

1. 回归(Regression)

回归 任务用于预测连续变量。它的目标是根据输入特征,预测一个连续的数值结果。

波士顿房价数据集(已被替换为加利福尼亚房价数据集)

使用线性回归模型。

python 复制代码
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 导入加州房价数据集
data = fetch_california_housing()
X = data.data
y = data.target

# 数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练线性回归模型
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)

# 预测房价
y_pred = lr_model.predict(X_test)

# 评估回归模型(均方误差)
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse:.2f}")

用途

  • 回归 主要用于预测连续型数值,例如预测房价、股票价格、温度等。

效果

  • 通过训练回归模型,可以预测目标值,并评估模型的准确度。在房价预测中,预测的房价是连续变量,模型输出具体的房价数值。我们通过均方误差等评价指标评估预测的准确性。

2. 分类(Classification)

分类 任务用于预测数据的类别标签。它的目标是将数据点分类到某个预定义的类中。

鸢尾花数据集

使用K近邻进行分类。

python 复制代码
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 导入鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练K近邻分类模型
knn_model = KNeighborsClassifier(n_neighbors=3)
knn_model.fit(X_train, y_train)

# 预测鸢尾花类别
y_pred = knn_model.predict(X_test)

# 评估分类模型(准确率)
accuracy = accuracy_score(y_test, y_pred)
print(f"分类准确率: {accuracy:.2f}")

用途

  • 分类用于分类任务,如垃圾邮件检测、图像识别、疾病诊断等。

效果

  • 通过分类模型,能准确将数据点分配到预定的类别中。在鸢尾花分类中,模型可以识别不同种类的鸢尾花,并输出其对应的类别。通过准确率等指标评估分类的精确度。

3. 聚类(Clustering)

聚类 是无监督学习的一种,用于将数据点分组,使得同一组内的点尽可能相似,而不同组间的点差异尽可能大。聚类任务没有预定义的标签。

手写数字数据集(无标签)

使用KMeans进行聚类。

python 复制代码
from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 导入手写数字数据集
digits = load_digits()
X = digits.data

# 使用KMeans进行聚类
kmeans = KMeans(n_clusters=10, random_state=42)
clusters = kmeans.fit_predict(X)

# 可视化部分聚类结果
plt.figure(figsize=(8, 8))
for i in range(10):
    plt.subplot(2, 5, i + 1)
    plt.imshow(digits.images[i], cmap='gray')
    plt.title(f"Cluster: {clusters[i]}")
plt.show()

用途

  • 聚类常用于探索性数据分析,目标群体细分(如市场细分)、推荐系统(用户行为分组)等场景。

效果

  • 聚类算法通过发现数据中潜在的模式,将数据划分为多个簇。例如,在手写数字数据集中,虽然没有标签,但通过聚类算法可以自动将相似的数字图像聚为一类。每个聚类代表一类相似的手写数字。

4. 降维(Dimensionality Reduction)

降维 用于减少数据的特征维度,保留尽可能多的信息。通过降维,能使数据在低维空间中表现,同时减少噪声和计算复杂度。

手写数字数据集

通过主成分分析(PCA)进行降维。

python 复制代码
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 导入手写数字数据集
digits = load_digits()
X = digits.data

# 使用PCA将数据降维到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 可视化降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=digits.target, cmap='viridis', s=50)
plt.colorbar()
plt.title('PCA降维后的手写数字数据')
plt.show()

用途

  • 降维 常用于数据可视化、减少数据维度以提升算法效率、降低计算复杂度和去噪等场景。

效果

  • 通过降维,原来多维度的数据被压缩到低维空间(如2维),便于可视化和分析。在手写数字数据集中,降维后的数据能保留关键信息,并显示不同类别的分布情况。

总结

回归、分类、聚类、降维的区别

类型 任务目标 常见算法 用途
回归 预测连续值 线性回归、决策树回归等 房价预测、天气预测等
分类 预测离散类别 KNN、SVM、决策树等 图像识别、垃圾邮件检测、疾病诊断等
聚类 将数据点分组,无预定义标签 K-Means、层次聚类等 市场细分、推荐系统、图像分割等
降维 减少数据特征维度 PCA、t-SNE、LDA等 数据可视化、降噪、特征提取等
  • 回归 用于预测数值结果,分类 用于预测类别标签,聚类 则无监督地将数据分组,降维用于在降低数据维度的同时保留重要信息。
  • 这些任务在各自的应用场景中帮助解决不同问题,通过Scikit-learn自带数据集,可以直观地理解和实践这些概念。

资源

作者同步上传了 Jupyter 资源,可自行下载查看跑通代码运算结果:sklearn机器学习包应用 - 辨析回归/分类/聚类/降维作用效果

相关推荐
醒了就刷牙5 小时前
transformer用作分类任务
深度学习·分类·transformer
四口鲸鱼爱吃盐5 小时前
Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类
人工智能·pytorch·分类
IT古董8 小时前
【机器学习】机器学习的基本分类-强化学习-模型预测控制(MPC:Model Predictive Control)
人工智能·机器学习·分类
落魄君子8 小时前
CNN回归-卷积神经网络(Convolutional Neural Network)
人工智能·神经网络·回归·cnn
IT古董1 天前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
落魄君子1 天前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
四口鲸鱼爱吃盐1 天前
Pytorch | 从零构建GoogleNet对CIFAR10进行分类
人工智能·pytorch·分类
落魄君子1 天前
ELM分类-单隐藏层前馈神经网络(Single Hidden Layer Feedforward Neural Network, SLFN)
神经网络·分类·数据挖掘
四口鲸鱼爱吃盐1 天前
Pytorch | 从零构建MobileNet对CIFAR10进行分类
人工智能·pytorch·分类
call me by ur name1 天前
VLM--CLIP作分类任务的损失函数
人工智能·机器学习·分类