当前位置: 首页 > news >正文

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)

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

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

使用线性回归模型。

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近邻进行分类。

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进行聚类。

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)进行降维。

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机器学习包应用 - 辨析回归/分类/聚类/降维作用效果

http://www.lryc.cn/news/459309.html

相关文章:

  • 【畅捷通-注册安全分析报告】
  • TCP IP网络编程
  • libssh2编译部署详解
  • IPv4数据报的首部格式 -计算机网络
  • 小米电机与STM32——CAN通信
  • 2.2.ReactOS系统KSERVICE_TABLE_DESCRIPTOR结构体的声明
  • 前端接口报500如何解决 | 发生的原因以及处理步骤
  • 图书馆自习室座位预约管理微信小程序+ssm(lw+演示+源码+运行)
  • 谷歌-BERT-第一步:模型下载
  • FPGA实现PCIE采集电脑端视频缩放后转千兆UDP网络输出,基于XDMA+PHY芯片架构,提供3套工程源码和技术支持
  • Hi3061M开发板——系统时钟频率
  • C++入门基础知识110—【关于C++ if...else 语句】
  • 基于YOLO11深度学习的非机动车驾驶员头盔检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、卷积神经网络
  • 图像分类-demo(Lenet),tensorflow和Alexnet
  • excel 单元格嵌入图片
  • GitHub简介与安装使用入门教程
  • HTML(五)列表详解
  • SparkSQL介绍及使用
  • 【聚星文社】3.2版一键推文工具更新啦
  • C++基础补充(03)C++20 的 std::format 函数
  • [论文笔记]DAPR: A Benchmark on Document-Aware Passage Retrieval
  • Spring Boot知识管理:智能搜索与分析
  • 操作系统(2) (进程调度/进程调度器类型/三种进程调度/调度算法)
  • 鸿蒙--知乎评论
  • 2024 - 两台CentOS服务器上的1000个Docker容器(每台500个)之间实现UDP通信(C语言版本)
  • 小程序该如何上架
  • XMOJ3065 旅游线路
  • 量化之一:均值回归策略
  • NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?
  • 最优美公式-欧拉公式,轻松理解版