聚类分析字符串数组

聚类分析字符串数组

对多个字符串进行聚类分析旨在根据它们之间的相似度将这些字符串划分成若干个类别,使得同一类别内的字符串彼此相似度高,而不同类别间的字符串相似度低

小结

  1. 数据要清洗。清洗的足够准确,可能不需要用聚类分析了
  2. 数据要多,聚集点要少,点阵就集中

步骤 1: 数据预处理

标准化:统一字符串的大小写、去除无关字符(如标点符号、空格等)。

步骤 2: 特征提取

  • 词频统计:对于每个字符串,统计其包含的词汇表中词语的出现次数,形成一个词频向量。

  • TF-IDF:除了词频统计,还可以使用TF-IDF(Term Frequency-Inverse Document Frequency)值作为特征。TF-IDF考虑了词语在文档集合中的重要性,对频繁出现但无区分度的词语给予较低的权重。

  • 词嵌入(Word Embeddings):使用预训练的词嵌入模型(如Word2Vec、GloVe或BERT)将每个词语转换为固定长度的稠密向量,然后对每个字符串中所有词语的向量取平均(或加权平均、最大池化等)得到字符串的向量化表示。

步骤 3: 应用聚类算法

选择聚类算法:如K-means、DBSCAN、谱聚类、层次聚类等。选择时需考虑数据特性、所需聚类形状(如球形、任意形状)、是否需要预先指定聚类数量等因素。

运行聚类:将提取的数值特征作为输入,运行所选聚类算法。对于某些算法(如K-means),可能需要多次尝试以确定最优聚类数量(如通过轮廓系数、肘部法则等评估指标)。

步骤 4: 结果解读与评估

可视化:对于较小的数据集,可以使用散点图、热力图、树状图等可视化聚类结果。

主题分析:分析各聚类中心(或代表性样本)的特征,总结聚类主题或类别描述

code (K-means)

import jsonimport numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
from sklearn.compose import ColumnTransformer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.manifold import TSNEdef compute_string_length(s):return np.array([len(text) for text in s]).reshape(-1, 1)def clean_data(data):data = [s.replace('"', ' ') for s in data]data = [s.split(']')[-1] for s in data]data = [s.split('】')[-1] for s in data]data = [s.lower() for s in data]return datadef analyse(inputs: list[str], n_clusters: int = 10):preprocessed_strings = clean_data(inputs)preprocessed_strings = [[text] for text in preprocessed_strings]# 使用 TF-IDF 向量化文本feature_vectors = TfidfVectorizer(stop_words='english')tfidf_transformer = ColumnTransformer([('tfidf', feature_vectors, 0),  # 对文本列进行 TF-IDF 向量化# ('length', FunctionTransformer(compute_string_length, validate=False), 0)  # 计算字符串长度], remainder='passthrough')  # 其他列原样传递# 将数据转换为 TF-IDF 向量和字符串长度的组合tfidf_matrix = tfidf_transformer.fit_transform(preprocessed_strings)# Step 3:  K-Meanskmeans = KMeans(n_clusters=n_clusters, random_state=42)cluster_labels = kmeans.fit_predict(tfidf_matrix)output = {}for i, v in enumerate(cluster_labels):if v not in output:output[v] = {"name": [], "count": 0, "key": int(v)}output[v]["name"].append(inputs[i])output[v]["count"] += 1sorted_dd_list = sorted(list(output.values()), key=lambda x: x['count'], reverse=True)with open("a.json", "w") as f:f.write(json.dumps(sorted_dd_list, ensure_ascii=False))# Step 4: 可视化 - 使用 t-SNE 和 matplotlibtsne = TSNE(n_components=2, random_state=42, perplexity=4)tfidf_matrix_2d = tsne.fit_transform(tfidf_matrix.toarray())plt.figure(figsize=(10, 5))for i in range(n_clusters):mask = (cluster_labels == i)plt.scatter(tfidf_matrix_2d[mask, 0],tfidf_matrix_2d[mask, 1],c="red",label="",alpha=0.8,edgecolors='none')plt.legend()plt.title('String Collection Clustering Results (t-SNE Projection)')plt.show()if __name__ == '__main__':demo = ["Concealer covers face with spots, pimples, dark circles, eyes and tears","【 Import day price 】Makeup revolution Concealer cover the face spots, acne, black eye circles, tears do not take off makeup","Makeup revolution Concealer Party sister K sister recommended to cover acne dark circles lasting moisturizing moisture","Concealer covers face with spots, pimples, dark circles, eyes and tears","Makeup revolution Concealer Party sister K sister recommended to cover acne dark circles lasting moisturizing moisture","Makeup revolution Concealer Party sister K sister recommended to cover acne dark circles lasting moisturizing moisture","Omorovicza Ultra Tonic Oil 30ml","【 Mia Exclusive 】MZ SKIN 2% hyaluronic Acid Filling Lip Care 3ml","Mz Skin Perfect Repair Mask 5 pieces/box","NAPIERS Micro Silver Deep Cleansing Mask 100ml canned skin care products clean and soften","【 Pre-sale 】MZ SKIN 2% hyaluronic Acid Filling Lip Care 3ml", "Omorovicza Body Massage Oil 100ml","Omorovicza Midnight Wake Up Inception Essence 2ml", "MZ SKIN 5-Day White Rejuvenating Ampere 2ml*2","MZ SKIN10% Vitamin C Whitening Serum 5ml", "Mz Skin 5-Day White Rejuvenating Ampere 10*2ml","Mz Skin Perfect Repair Mask sheet"]analyse(demo, 5)

运行后的json文件里有聚集点的原始字符串在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统一所有 LLM API:支持预算与速率限制 | 开源日报 No.229

BerriAI/litellm Stars: 6.7k License: NOASSERTION litellm 是一个使用 OpenAI 格式调用所有 LLM API 的工具。它支持 Bedrock、Azure、OpenAI、Cohere、Anthropic 等 100 多种 LLMs,提供企业级代理服务器和稳定版本 v1.30.2。 主要功能和优势包括: 将…

javaEE初阶——多线程(八)——常见的锁策略 以及 CAS机制

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享分治算法关于多线程进阶的章节——关于常见的锁策略以及CAS机制 如果有不足的或者错误的请您指出! 目录 多线程进阶1.常见的锁策略1.1乐观锁和悲观锁1.2重量级锁 和 轻量级锁1.…

【大数据】分布式数据库HBase

目录 1.概述 1.1.前言 1.2.数据模型 1.3.列式存储的优势 2.实现原理 2.1.region 2.2.LSM树 2.3.完整读写过程 2.4.master的作用 1.概述 1.1.前言 本文式作者大数据系列专栏中的一篇文章,按照专栏来阅读,循序渐进能更好的理解,专栏…

JS实现对用户名、密码进行正则表达式判断,按钮绑定多个事件,网页跳转

目标&#xff1a;使用JS实现对用户名和密码进行正则表达式判断&#xff0c;用户名和密码正确时&#xff0c;进行网页跳转。 用户名、密码的正则表达式检验 HTML代码&#xff1a; <button type"submit" id"login-btn" /*onclick"login();alidate…

精益思想赋能数字化转型:落地策略与实践路径

当下&#xff0c;数字化转型已不再是选择题&#xff0c;而是关乎企业生存与发展的必答题。然而&#xff0c;转型过程中如何确保效率、降低成本并快速实现价值创造&#xff0c;成为了摆在众多企业面前的难题。精益思想作为一种追求精益求精、持续改进的管理思维&#xff0c;为数…

2024最新版JavaScript逆向爬虫教程-------基础篇之面向对象

目录 一、概念二、对象的创建和操作2.1 JavaScript创建对象的方式2.2 对象属性操作的控制2.3 理解JavaScript创建对象2.3.1 工厂模式2.3.2 构造函数2.3.3 原型构造函数 三、继承3.1 通过原型链实现继承3.2 借用构造函数实现继承3.3 寄生组合式继承3.3.1 对象的原型式继承3.3.2 …

stm32HAL库-GPIO

一 什么是 GPIO: GPIO(general porpose intput output), 通用输入输出端口 . 二 我们先认识芯片控制 GPIO 输出控制。 2.1LED 硬件原理如图&#xff1a; 当电流从这根电线流通&#xff0c; LED 亮。当电流不通过这根电线&#xff0c; LED 灭。 上面 PF** &#xff0c;芯片电…

MySQL面试——聚簇/非聚簇索引

存储引擎是针对表结构&#xff0c;不是数据库 引擎层&#xff1a;对数据层以何种方式进行组织 update&#xff1a;加索引&#xff1a;行级锁&#xff1b;不加索引&#xff1a;表级锁

固态继电器:推进可再生能源系统

随着可再生能源系统的发展&#xff0c;太阳能系统日益成为现代能源解决方案的先锋。在这种背景下&#xff0c;固态继电器&#xff08;SSR&#xff09;&#xff0c;特别是光耦固态继电器的利用变得日益突出。本文旨在深入探讨SSR在可再生能源系统中的多方位应用&#xff0c;重点…

【学习笔记】Python 使用 matplotlib 画图

文章目录 安装中文显示折线图、点线图柱状图、堆积柱状图坐标轴断点参考资料 本文将介绍如何使用 Python 的 matplotlib 库画图&#xff0c;记录一些常用的画图 demo 代码 安装 # 建议先切换到虚拟环境中 pip install matplotlib中文显示 新版的 matplotlib 已经支持字体回退…

SD-WAN:灵活、低成本、便于管理

近年来&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;技术成为企业网络领域的新趋势&#xff0c;其带来的变革性影响备受瞩目。凭借出色的灵活性、高效的可管理性以及显著的成本优势&#xff0c;SD-WAN技术为企业网络注入了新的活力。 首先&#xff0c;SD-WAN技术的…

如何利用diskpart命令界面在win10/win11上解除U盘写保护

背景 在把U盘作为系统盘装了一次后&#xff0c;惊讶的发现自己U盘的一个1M的小卷被写保护了。不能格式化&#xff0c;不能删除文件&#xff0c;在给用户拷文件的时候&#xff0c;小卷还会提示病毒告警&#xff0c;非常的尴尬&#xff0c;因此展开了研究。 失败的尝试 尝试了网…

58、回溯-组合总和

思路&#xff1a; 数组内的每一个元素都可以无线使用只要最后可以拼接成target就可以。那么如何限制呢&#xff1f; &#xff08;target-已经拼接的和 &#xff09;/当前元素 就是你可以利用的数量。代码如下&#xff1a; class Solution {public static List<List<I…

触发器的基本概念及分类

目录 触发器的基本概念 作用对象 触发事件 触发条件 触发时间 触发级别或者触发频率 触发器的分类 DML 触发器 INSTEAD OF 触发器 系统触发器 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 触发器的基本概念 …

2024年电商视频号夏令营(第四期)零基础带你玩转微信视频号

教学内容&#xff1a; 下 载 地 址&#xff1a; laoa1.cn/1821.html 1.剪辑软件整套实例教程0基本一小时懂得视频编辑 1.上课前必看 1.如何获实拍视频的原创素材 2.怎样运送视频水印&#xff0c;提取图片文案脚本 2.如何发布爆款短视频 2.微信视频号基本功能解读 2.直播的时…

软件物料清单(SBOM)生成指南 .pdf

如今软件安全攻击技术手段不断升级&#xff0c;攻击数量显著增长。尤其是针对软件供应链的安全攻击&#xff0c;具有高隐秘性、追溯难的特点&#xff0c;对企业软件安全威胁极大。 同时&#xff0c;软件本身也在不断地更新迭代&#xff0c;软件内部成分安全性在持续变化浮动。…

第十二届蓝桥杯C/C++ B组 杨辉三角形(二分查找+思维)

3418. 杨辉三角形 - AcWing题库 题目描述: 思路&#xff1a; 从上图片中&#xff0c;我们可以看出来这是一个对称图形&#xff0c;所以我们只看左半部分就可以了&#xff0c;我们一行一列去做数据量是1e9这样会很麻烦&#xff0c;所以我们这里做一个思想转换&#xff0c;斜着…

WiTUnet:一种集成CNN和Transformer的u型架构,用于改进特征对齐和局部信息融合

WiTUnet:一种集成CNN和Transformer的u型架构&#xff0c;用于改进特征对齐和局部信息融合 摘要IntroductionRelated workMethod WiTUnet: A U-Shaped Architecture Integrating CNN and Transformer for Improved Feature Alignment and Local Information Fusion. 摘要 低剂量…

天锐绿盾 | 如何防止开发部门源代码泄露、外泄?

天锐绿盾是一款专为企业设计的数据防泄密解决方案&#xff0c;尤其针对软件开发部门的源代码保护提供了多维度、全方位的防护措施。 PC访问咨询地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是如何利用天锐绿盾防止公司…

C++ 之 string类的模拟实现

这学习我有三不学 昨天不学&#xff0c;因为昨天是个过去 明天不学&#xff0c;因为明天还是个未知数 今天不学&#xff0c;因为我们要活在当下&#xff0c;我就是玩嘿嘿~ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–…