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

机器学习聚类算法

聚类本质​

无监督学习(无标签数据)

目标:将相似数据分到同一组

​距离度量​

度量类型

公式

特点

适用场景

​欧式距离​

√(∑(x_i - y_i)²)

直线距离

空间连续数据(推荐系统)

​曼哈顿距离​

`∑

x_i - y_i

k均值算法

如图所示:k=4时,值最大

CH指标

​CH指标通过计算类中各点与类中心的距离平方和来度量类内的紧密度;

通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度;

从而,CH越大代表着类自身越紧密,类与类之间越分散,即更优的聚类结果

CH = [B/(K-1)] / [W/(N-K)] B = 类间方差(分离度) W = 类内方差(紧密度)

优点: 简单快速,适合常规数据集

函数

from sklearn.datasets import make_blobs

make_blobs():为聚类产生数据集

n_samples

数据样本点个数,默认值100

n_features

每个样本的特征数,也表示数据的维度,默认值是2

centers

表示类别数(标签的种类数),默认值3

cluster_std

每个类别的方差

center_box

中心确定之后的数据边界,默认值(-10.0, 10.0)

shuffle

是否将数据进行打乱,默认值是True

random_state

随机生成器的种子,可以固定生成的数据

代码

from sklearn.datasets import make_blobs
import matplotlib.pyplot as pltx, y = make_blobs(n_samples=1000,n_features=2,centers=[[-1, -1], [0, 0], [1, 1], [2, 2]],cluster_std=[0.4, 0.2, 0.2, 0.2],random_state=9
)plt.scatter(x[:, 0], x[:, 1], marker="o")
plt.show()

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs# 生成数据(假设之前未执行)
x, _ = make_blobs(n_samples=1000, n_features=2,centers=[[-1, -1], [0, 0], [1, 1], [2, 2]],cluster_std=[0.4, 0.2, 0.2, 0.2],random_state=9)# 聚类并可视化
y_pred = KMeans(n_clusters=2, random_state=9).fit_predict(x)
plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.show()

集成算法

核心原则​​:综合多个学习器(模型)的预测结果,比单一模型更优(类似“博采众长”)

实现方式​​:通过组合多个弱学习器(如决策树)构建强学习器。

方法分类​

Bagging(并行训练)​

特点​​:个体学习器​​相互独立​​,可并行训练。

代表算法​​:​​随机森林(Random Forest)

​​​双重随机性​​:数据随机采样(Bootstrap)特征随机选择

​优势​​:处理高维数据,无需特征选择输出特征重要性支持并行计算,速度快可可视化分析

输出策略​​:分类任务 → ​​投票法​​(少数服从多数)回归任务 → ​​平均法

​Sklearn类​​:RandomForestClassifier()RandomForestRegressor()

Boosting(串行训练)

特点​​:个体学习器​​存在依赖​​,需串行生成,通过调整样本权重逐步改进。

对比

方法​

训练方式

学习器关系

代表算法

输出策略

​Bagging​

并行

独立

随机森林

投票/平均

​Boosting​

串行

强依赖

AdaBoost

加权组合

​Stacking​

分阶段

异构模型

多模型组合

元模型二次预测

http://www.xdnf.cn/news/1338175.html

相关文章:

  • 什么是默克尔树
  • 缓存与Redis
  • C++---辗转相除法
  • 2025-08-21 Python进阶1——控制流语句
  • 【网络运维】Shell:变量数值计算
  • SQL-leetcode—3451. 查找无效的 IP 地址
  • 从vue2到vue3
  • C++STL-stack和queue的使用及底层实现
  • 基于单片机教室照明灯控制系统
  • Jenkins+GitLab在CentOS7上的自动化部署方案
  • 新手向:Python 3.12 新特性实战详解
  • PAT 1076 Forwards on Weibo
  • linux 差分升级简介
  • git增加ignore文件
  • 健康常识查询系统|基于java和小程序的健康常识查询系统设计与实现(源码+数据库+文档)
  • UEM终端防御一体化
  • 2026 济南玉米及淀粉深加工展:从原料到创新产品的完整解决方案
  • AI Agent与LLM区别
  • Jmeter接口测试之文件上传
  • QT的项目pro qmake编译
  • 【51单片机学习】AT24C02(I2C)、DS18B20(单总线)、LCD1602(液晶显示屏)
  • Prompt魔法:提示词工程与ChatGPT行业应用读书笔记:提示词设计全能指南
  • 智能制造加速器:某新能源车智慧工厂无线网络优化提升方案
  • 美国联邦调查局警告俄罗斯针对思科设备的网络间谍活动
  • Android APP防止应用被动态调试
  • 无监督学习(聚类 异常检测)
  • 北京JAVA基础面试30天打卡14
  • GO学习记录七——上传/下载文件功能,添加启动运行工具
  • 如何使用Prometheus + Grafana + Loki构建一个现代化的云原生监控系统
  • 20250821日记