机器学习-06-无监督算法-02-层次聚类和密度聚类DBSCAN算法

总结

本系列是机器学习课程的系列课程,主要介绍机器学习中无监督算法,包括层次和密度聚类等。

参考

DBSACN在线动态演示

本门课程的目标

完成一个特定行业的算法应用全过程:

懂业务+会选择合适的算法+数据处理+算法训练+算法调优+算法融合
+算法评估+持续调优+工程化接口实现

机器学习定义

关于机器学习的定义,Tom Michael Mitchell的这段话被广泛引用:
对于某类任务T性能度量P,如果一个计算机程序在T上其性能P随着经验E而自我完善,那么我们称这个计算机程序从经验E中学习
在这里插入图片描述

无监督算法

层次聚类

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from scipy.cluster.hierarchy import dendrogram, ward, single
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

X = load_iris().data[:150]

linkage_matrix = ward(X)

dendrogram(linkage_matrix)

plt.show()

输出如下:
在这里插入图片描述

这段代码是Python脚本,用于通过Scipy和Scikit-learn库绘制层次聚类的谱系图(dendrogram)。下面是逐行解释:

  1. from scipy.cluster.hierarchy import dendrogram, ward, single
    这一行导入了Scipy库中层次聚类相关的三个函数:dendrogram用于绘制谱系图,ward用于计算ward聚类算法所需的距离矩阵,single是连接准则的一种,用于确定聚类时的距离。
  2. from sklearn.datasets import load_iris
    这一行从Scikit-learn的datasets模块中导入load_iris函数,用于加载著名的Iris数据集。
  3. import matplotlib.pyplot as plt
    这一行导入matplotlib的pyplot模块,并给它一个别名plt。pyplot是matplotlib库中用于绘图的一个模块。
  4. X = load_iris().data[:150]
    这一行首先调用load_iris()函数加载Iris数据集,然后获取该数据集的特征数据(data),并选择前150个样本。
  5. linkage_matrix = ward(X)
    这一行使用ward聚类算法对特征数据X进行聚类,并将生成的连接矩阵(linkage matrix)赋值给变量linkage_matrix
  6. dendrogram(linkage_matrix)
    这一行使用linkage_matrix作为参数调用dendrogram函数,绘制基于这个连接矩阵的谱系图。
  7. plt.show()
    这一行调用plt.show()函数显示上述绘制的谱系图。
    执行这段代码,会展示出Iris数据集前150个样本的层次聚类谱系图。

DBSCAN

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# DBSCAN clustering algorithm

print(__doc__)

import numpy as np

from sklearn.cluster import DBSCAN
from sklearn import metrics
# from sklearn.datasets.samples_generator import make_blobs
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler

# Generate sample data
centers = [[1, 1], [-1, -1], [1, -1]]
X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4,
                            random_state=0)

X = StandardScaler().fit_transform(X)


# Compute DBSCAN
db = DBSCAN(eps=0.1, min_samples=10).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

print('Estimated number of clusters: %d' % n_clusters_)
print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))
print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))
print("Adjusted Rand Index: %0.3f"
      % metrics.adjusted_rand_score(labels_true, labels))
print("Adjusted Mutual Information: %0.3f"
      % metrics.adjusted_mutual_info_score(labels_true, labels))
print("Silhouette Coefficient: %0.3f"
      % metrics.silhouette_score(X, labels))


# 
import matplotlib.pyplot as plt

# Black removed and is used for noise instead.
unique_labels = set(labels)
colors = [plt.cm.Spectral(each)
          for each in np.linspace(0, 1, len(unique_labels))]
for k, col in zip(unique_labels, colors):
    if k == -1:
        # Black used for noise.
        col = [0, 0, 0, 1]

    class_member_mask = (labels == k)

    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=14)

    xy = X[class_member_mask & ~core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=6)

plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.show()

输出为:
Automatically created module for IPython interactive environment
Estimated number of clusters: 12
Homogeneity: 0.313
Completeness: 0.249
V-measure: 0.277
Adjusted Rand Index: 0.024
Adjusted Mutual Information: 0.267
Silhouette Coefficient: -0.366
在这里插入图片描述

这段文字似乎是描述在使用IPython交互式环境(一种广泛使用的Python交互式shell)中自动生成的模块进行聚类分析的结果。以下是每个指标的简要解释:

  1. Automatically created module for IPython interactive environment: 这意味着在IPython环境中自动生成并使用的某个模块(可能是用于数据分析和可视化的自定义脚本或包)。
  2. Estimated number of clusters: 12: 这是通过某种聚类算法(如K-means, DBSCAN等)估计的最佳聚类数量,即数据应该被分成12个不同的簇。
  3. Homogeneity: 0.313: 同质性指标是衡量聚类效果的一个标准,它描述了实际的簇分配与预测的簇分配的匹配程度。Homogeneity的值介于0和1之间,0.313表明聚类效果不是很好,因为不是所有数据点都被分配到它们所属的簇中。
  4. Completeness: 0.249: 完整性指标衡量的是所有的数据点是否都被分配到了某个簇中。Completness的值同样介于0和1之间,0.249也显示了聚类效果并不理想,因为还有很多数据点没有被分配到相应的簇中。
  5. V-measure: 0.277: V-measure是同质性和完整性的调和平均数,用来综合评估聚类的质量。0.277的值说明聚类结果的整体质量不高。
  6. Adjusted Rand Index: 0.024: 调整后的兰德指数(ARI)是一个校正后的指标,用来衡量两个聚类结果的一致性,其值介于-1和1之间,0.024是一个非常低的值,表明聚类结果与真实的簇分配相比,一致性非常差。
  7. Adjusted Mutual Information: 0.267: 调整后的互信息(AMI)是衡量两个聚类结果之间互信息的一个指标,通过考虑簇的大小进行校正。0.267表明聚类结果在一定程度上反映了数据的自然结构,但是这个值也不是很高,表明聚类效果仍有提升空间。
  8. Silhouette Coefficient: -0.366: 轮廓系数是衡量聚类质量的另一个指标,它基于样本与其自身簇内的其他样本的相似度与其他簇的不相似度之间的比值。Silhouette Coefficient的值介于-1和1之间,-0.366表明聚类效果不佳,因为值越接近1表示样本更清晰地分配在一个簇中。
    综上所述,这些指标表明当前的聚类分析结果并不理想,可能需要调整聚类算法、参数或者尝试其他方法来改进聚类效果。

确定方向过程

针对完全没有基础的同学们
1.确定机器学习的应用领域有哪些
2.查找机器学习的算法应用有哪些
3.确定想要研究的领域极其对应的算法
4.通过招聘网站和论文等确定具体的技术
5.了解业务流程,查找数据
6.复现经典算法
7.持续优化,并尝试与对应企业人员沟通心得
8.企业给出反馈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

摸鱼小技巧来啦,速来围观

一、前言 在日常测试中,很多小伙伴还是选择使用usb连接设备的方式去进行跑测,当需要连接多台设备就没办法在电脑上插入这么多设备,只能选择使用无线连接的方式去进行连接测试。你们快来get这份详细的无线连接设备教程吧~ 二、远程连接Andro…

demo版多人聊天系统

目录 ​编辑 一,引入 二,在Server端修改的代码 1,保存用户信息功能实现 2,拼接消息 3,广播消息 三, Client端要修改的代码 四,效果演示 一,引入 在上一篇文章udp网络服务器中&a…

LLM+Embedding构建问答系统的局限性及优化方案

LangChain LLM 方案的局限性:LLM意图识别准确性较低,交互链路长导致时间开销大;Embedding 不适合多词条聚合匹配等。 背景 在探索如何利用大型语言模型(LLM)构建知识问答系统的过程中,我们确定了两个核心…

飞跃前端瓶颈:技术进阶指南精华篇

引言: 在互联网的快车道上,前端技术日新月异。对于前端工程师而言,技术水平达到一定高度后,往往会遭遇成长的天花板。本文将探讨如何识别并突破这些技术瓶颈,分享实用的进阶策略和实践案例。 一、技术等级概览&#xf…

python知识点总结(七)

python知识点总结七 1、堆和栈的区别2、如何在局部修改全局的变量a、计算结果b、计算结果 3、如何修改一个enclosing变量4、关于值传递还是地址传值5、布尔类型6、逻辑运算7、字符串切片操作8、取整、取余、除数9、变量赋值10、字符串与数字相乘11、整型、浮点型、字符型之间相…

【LVGL-特殊符号】

LVGL-特殊符号 ■ LVGL-特殊符号 ■ LVGL-特殊符号 /* 直接调用 */ lv_label_set_text(my_label, LV_SYMBOL_OK); /* 与字符一起用 */ lv_label_set_text(my_label, LV_SYMBOL_OK "Apply"); /* 多个符号一起用 */ lv_label_set_text(my_label, LV_SYMBOL_OK LV_SYMBO…

智过网:一级建造师必须两年考过吗?有效期多久?

在建筑行业,一级建造师的职业资格证书是众多从业者追求的目标。然而,获得这一证书并非易事,它要求考生不仅具备扎实的专业知识,还需要在限定的时间内完成所有科目的考试。那么,一级建造师是否必须在两年内考完所有科目…

LeetCode - 存在重复元素

219. 存在重复元素 II 这道题可以用两个方法解决。 哈希表 从左到右遍历数组,并将数组的下标存到hash中,在遍历数字的过程中,如果hash中不存在nums[i],将nums[i]加入到hash当中,若存在,则判断下标之间的关…

九泰智库 | 医械周刊- Vol.16

⚖️ 法规动态 28类耗材联盟集采结果出炉,中选率仅27% 3月19日,河北省药械集采中心发布了《关于公示京津冀“3N”联盟28种集中带量采购医用耗材拟中选结果的通知》。共有202个产品被列为拟中选,产品中选率约为27%。本次集采未设置保底中标条…

buuctf_Reverse_wp_2

文章目录 [WUSTCTF2020]level3[base64变表]Youngter-drive[upx、多线程][FlareOn4]IgniteMe[算法分析]相册[APK、so文件、Native方法][WUSTCTF2020]Cr0ssfun[套娃、patience][GWCTF 2019]xxor[z3、算法分析][UTCTF2020]basic-re[FlareOn6]Overlong脚本输出动态调试 [FlareOn3]C…

科技强国:国产桌面操作系统正式上线,中国七位院士发表支持

操作系统是电子产品的核心,无论是手机还是电脑,都离不开它的支持。它是科技发展中至关重要的领域之一。备受瞩目的鸿蒙系统,作为国内颇具影响力的手机桌面操作系统,以其桌面组件自由整合和自定义风格的便捷性,引领了一…

运用YOLOv5实时监测并预警行人社交距离违规情况

YOLO(You Only Look Once)作为一种先进的实时物体检测算法,在全球范围内因其高效的实时性能和较高的检测精度受到广泛关注。近年来,随着新冠疫情对社交距离管控的重要性日益凸显,研究人员开始将YOLO算法应用于社交距离…

5G安全技术新突破!亚信安全5G安全迅龙引擎正式发布

5G专网应用飞速增长:2020年5G专网数量800个,2021年2300个,2022年5325个,2023年已经超过16000个,5G与垂直行业的融合快速加深,5G带来的变革正加速渗透至各行各业。 5G网络出现安全问题,将是异常严…

QT tableWidget横向众向设置

横向控件 要设置QTabWidget选项卡的字体方向,可以使用QTabWidget的setTabPosition()方法。通过传递Qt枚举值QTabWidget.east或QTabWidget.west作为参数,可以设置选项卡的字体方向为从左到右或从右到左。 myTabWidget QTabWidget() myTabWidget.setTabP…

【论文精读】DALLE3:Improving Image Generation with Better Captions 通过更好的文本标注改进图像生成

文章目录 一、文章概览二、数据重标注(一)现在训练数据的文本标注主要存在的问题(二)创建图像标注器(三)微调图像标注器 三、评估重新标注的数据集(一)混合合成标注和真实标注&#…

【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

PCD8000D开关调光/调色线性恒流LED控制芯片 无需变压器及电阻电容 只需极少元器件

概述 PCD8000D 是一款开关调节亮度/色温的LED恒流驱动IC。适用于AC 180V-240V 或AC 90V- 130V 输入电压,恒流精度小于 5% 。PCD8000D在3 段调节亮度应用中,可根据开启/关闭电源,依次改变输出电流的大小,从而改变LED 灯的亮度, …

RK3568驱动指南|第二篇 字符设备基础-第13章 杂项设备驱动实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

SpringMVC | SpringMVC中的 “JSON数据交互“ 和 “RESTful设计风格“

目录: 一、JSON 数据交互1.1 JSON概述1.2 JSON的“数据结构”对象结构数组结构 1.3 JSON的“数据转换”用 \<mvc:annotation-driven/>的方式 来“自动配置” MappingJackson2HttpMessageConverter转换器 (来完成JSON数据转换)用\<bean>标签方式的来“自行配置” JS…

Midjourney发布新特性风格参考

1. 引言 最近&#xff0c;Midjourney 推出了Style Reference V2.0 即功能更加强大的风格参考工具&#xff0c;该工具可以让大家参考其他图像的风格&#xff0c;生成与参考图像风格保持一致&#xff0c;与文本提示词语义内容保持一致的图像。它与图像提示类似&#xff0c;但是只…