【机器学习】实验5,AAAI 会议论文聚类分析

news2024/11/17 17:54:29

本次实验以AAAI 2014会议论文数据为基础,要求实现或调用无监督聚类算法,了解聚类方法。

任务介绍

每年国际上召开的大大小小学术会议不计其数,发表了非常多的论文。在计算机领域的一些大型学术会议上,一次就可以发表涉及各个方向的几百篇论文。按论文的主题、内容进行聚类,有助于人们高效地查找和获得所需要的论文。本案例数据来源于AAAI 2014上发表的约400篇文章,由UCI公开提供,提供包括标题、作者、关键词、摘要在内的信息,希望大家能根据这些信息,合理地构造特征向量来表示这些论文,并设计实现或调用聚类算法对论文进行聚类。最后也可以对聚类结果进行观察,看每一类都是什么样的论文,是否有一些主题。

基本要求:

  1. 将文本转化为向量,实现或调用无监督聚类算法,对论文聚类,例如10类(可使用已有工具包例如sklearn);

  2. 观察每一类中的论文,调整算法使结果较为合理;

  3. 无监督聚类没有标签,效果较难评价,因此没有硬性指标,跑通即可,主要让大家了解和感受聚类算法,比较简单。

扩展要求:

  1. 对文本向量进行降维,并将聚类结果可视化成散点图。

注:group和topic也不能完全算是标签,因为

  1. 有些文章作者投稿时可能会选择某个group/topic但实际和另外group/topic也相关甚至更相关;

  2. 一篇文章可能有多个group和topic,作为标签会出现有的文章同属多个类别,这里暂不考虑这样的聚类;

  3. group和topic的取值很多,但聚类常常希望指定聚合成出例如5/10/20类;

  4. 感兴趣但同学可以思考利用group和topic信息来量化评价无监督聚类结果,不作要求。

提示:

  1. 高维向量的降维旨在去除一些高相关性的特征维度,保留最有用的信息,用更低维的向量表示高维数据,常用的方法有PCA和t-SNE等;

  2. 降维与聚类是两件不同的事情,聚类实际上在降维前的高维向量和降维后的低维向量上都可以进行,结果也可能截然不同;

  3. 高维向量做聚类,降维可视化后若有同一类的点不在一起,是正常的。在高维空间中它们可能是在一起的,降维后损失了一些信息

实验结果 

from sklearn.feature_extraction.text import  CountVectorizer
from sklearn.metrics import  calinski_harabasz_score
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import pandas as pd
import numpy as np

def load_data(path='data/[UCI] AAAI-14 Accepted Papers - Papers.csv'):
    df_data = pd.read_csv(path)
    df_data = df_data.dropna()
    return df_data

df = load_data()
df.describe() 
# 去除不好的特征
df_selected = df.drop(['groups', 'topics'], axis=1)
cv = CountVectorizer()
X_features = np.array([[i] for i in range(df.shape[0])])

for col in df_selected.columns:
    tmp = cv.fit_transform(df_selected[col].tolist())
    feature = tmp.toarray()
    X_features = np.concatenate((X_features, feature), axis=1)

print("特征矩阵的形状:", X_features.shape)

 特征矩阵的形状: (392, 9899)

# 取出group和topics特征作为评价指标
df_cls = df[['groups', 'topics']]
cv = CountVectorizer()
X_cls = [[i] for i in range(df.shape[0])]
for col in df_cls.columns:
    tmp = cv.fit_transform(df_cls[col])
    feature = tmp.toarray()
    X_cls = np.concatenate((X_cls, feature), axis=1)
    

SSE(Sum of Squared Errors)测量聚类结果中每个样品与所属聚类中心距离的平方和。SSE越小,聚类样品越致密,聚类效果越好。SSE是衡量簇内密度的指标,越小越好。

CH指标(Calinski-HarabaszIndex)是综合考虑集群内密度和集群间分辨率的指标。计算集群间分散度与集群内密度之比。CH指标越大,集群之间的距离越大,集群内的距离越小,集群效果越好。

for pca_num in [2, 5, 7, 10, 30]:
    X_pca = PCA(n_components=pca_num).fit_transform(X_features)
    X_cs = PCA(n_components=pca_num).fit_transform(X_cls)
    print(X_pca.shape)
    for k in range(5, 16):
        kmeans = KMeans(n_clusters=k)
        labels = kmeans.fit_predict(X_pca)
        # 获取聚类中心
        centroids = kmeans.cluster_centers_
        # 计算每个样本与所属簇中心的距离的平方
        distances = np.sum((X_cs - centroids[labels])**2, axis=1)
        # 计算 SSE
        sse = np.sum(distances)
        # CH指标
        ch = calinski_harabasz_score(X_cs, labels)
        score = sse/ch
        print('k:', k, 'ch:', ch, 'SSE:', sse, 'score:', score)

从结果可以看出降维度在2,k为15的时候聚类效果更好。这里我用了sse和ch的比值作为成绩,越小证明聚类效果越好。 

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

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

相关文章

虚幻4 | 制作游戏——学习记录(一)

1. 启动Epic后下载虚幻4,打开虚幻4后新建一个第三人称游戏项目,效果如下: (1)内容/ThirdPersonBP/Blueprints中的ThirdPersonCharacter(左下角人物) 这是模板中使用的主要蓝图类,它…

云手机:网页运行?易用性分析

云手机作为一种新兴的技术,近年来在移动互联网领域备受关注。它通过云计算技术,将手机的操作系统和应用程序运行在远程服务器上,用户通过网络连接访问和操作云手机,从而实现了在任何设备上都能够享受手机的功能和体验。本文将探讨…

软考信息系统项目管理师零基础怎么学习?

软考考信息系统项目管理师,零基础怎么入手高项? 要我说对于没有基础的人群来说零基础考信息系统项目管理师还是有一定的难度的,难就难在需要时间去了解基础,而相对于系统分析师、系统构架设计师、网络规划设计师、系统规划与管理…

基于Spring Boot的图书个性化推荐系统 ,计算机毕业设计(带源码+论文)

源码获取地址: 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1765769136268455938

【读书笔记】针对ICS的ATTCK矩阵详解(一)

Techniques - ICS | MITRE ATT&CK 一、初始入口(Initial Access) 1.水坑攻击 当用户访问网站时,攻击者可能会在会话劫持期间获得对系统的访问权限。使用此技术时,只需访问被感染的网站,即可锁定并利用用户的Web浏…

【Flutter 面试题】dart是值传递还是引用传递?

【Flutter 面试题】dart是值传递还是引用传递? 文章目录 写在前面解答补充说明值传递示例引用传递示例总结 写在前面 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主…

ChonBlockTM Blocking/Sample Dilution ELISA Buffer

酶联免疫吸附测定(enzyme linked immunosorbent assay,ELISA/ELASA)是一种方便灵敏的抗体和抗原检测方法,目前已经被广泛应用于多个领域。但是,在研究和临床领域,实验过程中出现的假阳性常会被误判为真实的…

非线形优化 Matlab和Python (含01规划)

MATLAB:fmincon 在matlab中,一般使用fmincon来解决非线性优化问题 [x,fval,exitflag,output,lambda,grad,hessian]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 一般使用: [x,fval,exitflag]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,non…

【JavaScript 漫游】【032】Navigator 对象和 Screen对象总结

文章简介 本篇文章为【JavaScript 漫游】专栏的第 032 篇文章,对浏览器模型中 Navigator 对象和 Screen 对象的知识点进行了总结。 Navigator 对象 window.navigator 属性指向一个包含浏览器和系统信息的 Navigator 对象。脚本通过这个属性了解用户的环境信息。 …

基于LSTM实现春联上联对下联

按照阿光的项目做出了学习笔记,pytorch深度学习实战项目100例 基于LSTM实现春联上联对下联 基于LSTM(长短期记忆网络)实现春联上联对下联是一种有趣且具有挑战性的任务,它涉及到自然语言处理(NLP)中的序列…

校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序

项目描述: 校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序 功能介绍: 表白墙 卖舍友 步数旅行 步数排行榜 情侣脸 漫画脸 个人主页 私信 站内消息 今日话题 评论点赞收藏 服务器环境要求:PHP7.0 MySQL5.7 效果…

开启AI绘画新纪元:让创意在指尖绽放

文章目录 一、了解AI绘画的基本原理二、选择合适的AI绘画工具三、掌握AI绘画的基本技巧四、借鉴与创新:从模仿到创作五、参与社区交流,共同成长《AI绘画教程:Midjourney使用方法与技巧从入门到精通》亮点推荐内容简介作者简介目录 在科技日新…

unicloud 项目创建

什么是unicloud uniCloud为每个开发者提供一个免费的服务空间,更低门槛按量付费是serverless的特色,如果没有消耗硬件资源,就完全不用付款serverless比传统的云主机更便宜传统云主机一旦被攻击,高防价格非常昂贵。而uniCloud无需…

深入探索Transformer时代下的NLP革新

《基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理》主要聚焦于如何使用Python编程语言以及深度学习框架如PyTorch和TensorFlow来构建、训练和调整用于自然语言处理任务的深度神经网络架构,特别是以Transformer为核心模型的架构。 书中详细介绍了Transf…

Windows环境下搭建chatGLM-6B-int4量化版模型(图文详解-成果案例)

目录 一、ChatGLM-6B介绍 二、环境准备 1. 硬件环境 2. TDM-GCC安装 3.git安装 4.Anaconda安装 三、模型安装 1.下载ChatGLM-6b和环境准备 方式一:git命令 方式二:手动下载 2.下载预训练模型 方式一:在Hugging Face HUb下载&…

STM32day2

1.思维导图 个人暂时的学后感,不一定对,没什么东西,为做项目奔波中。。。1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度。 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */adc_val HAL_ADC_GetValue(&a…

中华环保联合会-- 工业废水处理设施等运维服务认证介绍

为适应市场发展需要,规范环境服务业市场,中华环保联合会[中环联兴(北京)认证中心]于2023年8月经国家认证认可监督管理委员会正式批准增加“工业废水处理、城镇污水处理、农村污水处理设施运维服务认证”等认证领域,并完善环保领域服务认证体系。 一、认…

【PowerMockito:编写单元测试过程中原方法使用@Value注解注入的属性出现空指针】

错误场景 执行到Value的属性时会出现空指针,因为Value的属性为null 解决方法 在测试类调用被测试方法前,提前设置属性值,属性可以先自己定义好 ReflectionTestUtils.setField(endpointConnectionService, "exportUdpList", lis…

飞行汽车首飞成功?一文讲解飞行汽车与其代表的立体交通形式

中国的“飞行汽车”从深圳跨越大湾区到珠海首飞成功,既是一次重要尝试,更是交通运输行业发展史中一个全新的起点 关注我,共同交流,一起成长 前言一、基本认识飞行汽车二、发展飞行汽车必要性三、飞行汽车所形成的影响 前言 2月27…

kmc密钥管理的基本功能是什么

KMC(密钥管理中心)在公钥基础设施中占据着举足轻重的地位,它是专门负责为CA(证书授权)系统提供一系列密钥服务的核心组件。这些服务包括但不限于密钥的生成、保存、备份、更新、恢复以及查询等,旨在解决分布式企业应用环境中大规模密码技术应用所带来的密…