公司法
当前位置: 首页 法律大全

数据挖掘聚类的算法有哪些(机器学习聚类实现AAAI)

时间:2023-06-14 作者: 小编 阅读量: 1 栏目名: 法律大全

机器学习聚类实现AAAI任务介绍每年国际上召开的大大小小学术会议不计其数,发表了非常多的论文在计算机领域的一些大型学术会议上,一次就可以发表涉及各个方向的几百篇论文按论文的主题、内容进行聚类,有助于人们高效地查找和获得所需要。

任务介绍

每年国际上召开的大大小小学术会议不计其数,发表了非常多的论文。在计算机领域的一些大型学术会议上,一次就可以发表涉及各个方向的几百篇论文。按论文的主题、内容进行聚类,有助于人们高效地查找和获得所需要的论文。本案例数据来源于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. 高维向量做聚类,降维可视化后若有同一类的点不在一起,是正常的。在高维空间中它们可能是在一起的,降维后损失了一些信息。

import pandas as pdfrom collections import Counterarticle = pd.read_csv(r"./data/[UCI] AAAI-14 Accepted Papers - Papers.csv")article

根据abstract的内容对论文进行聚类

article.abstract[0]Out:'Transfer learning considers related but distinct tasks defined on heterogenous domains and tries to transfer knowledge between these tasks to improve generalization performance. It is particularly useful when we do not have sufficient amount of labeled training data in some tasks, which may be very costly, laborious, or even infeasible to obtain. Instead, learning the tasks jointly enables us to effectively increase the amount of labeled training data. In this paper, we formulate a kernelized Bayesian transfer learning framework that is a principled combination of kernel-based dimensionality reduction models with task-specific projection matrices to find a shared subspace and a coupled classification model for all of the tasks in this subspace. Our two main contributions are: (i) two novel probabilistic models for binary and multiclass classification, and (ii) very efficient variational approximation procedures for these models. We illustrate the generalization performance of our algorithms on two different applications. In computer vision experiments, our method outperforms the state-of-the-art algorithms on nine out of 12 benchmark supervised domain adaptation experiments defined on two object recognition data sets. In cancer biology experiments, we use our algorithm to predict mutation status of important cancer genes from gene expression profiles using two distinct cancer populations, namely, patient-derived primary tumor data and in-vitro-derived cancer cell line data. We show that we can increase our generalization performance on primary tumors using cell lines as an auxiliary data source.'from sklearn.feature_extraction.text import CountVectorizer# 建立模型类count_vect = CountVectorizer()# 根据训练数据fit模型X_train_counts = count_vect.fit_transform(list(article.abstract))print('词表:\n',count_vect.vocabulary_)#的词汇表,有多少个,词向量就是多少维度print('词向量矩阵:\n',X_train_counts.toarray())#fit_transform后查看具体向量词向量矩阵: [[0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] ... [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0]]

根据词语的出现次数来构建词袋会出现一个问题:长的文章词语出现的次数会比短的文章要多,而实际上两篇文章可能谈论的都是同一个主题。

于是乎,我们用tf(term frequencies)

  • 单词出现次数除以文章总单词数,来代替出现次数来构建词袋字典。

除此之外,还有一个问题就是一个词如果在很多文章中都有出现,那么它对于区分文章的类别效果就微乎其微了。也就是说它对于我们识别文章所提供的信息就非常地少了。

于是乎就有了——tf-idf(Term Frequency times Inverse Document Frequency

  • 每个词再加上权重来构建词标记。

from sklearn.feature_extraction.text import TfidfTransformertfidfer = TfidfTransformer()tfidf = tfidfer.fit_transform(X_train_counts)print('tfidf向量矩阵:\n',tfidf.toarray())#fit_transform后查看具体向量矩阵tfidf向量矩阵: [[0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]]

进行聚类

from sklearn.cluster import KMeanskmeans = KMeans(n_clusters=10)kmeans.fit(tfidf)y_kmeans = kmeans.predict(tfidf)print("k = 10聚类结果:",y_kmeans)k = 10聚类结果: [2 2 1 7 1 5 1 0 2 5 8 1 2 1 1 8 1 1 2 5 1 1 1 2 2 7 1 1 7 1 1 8 0 1 4 1 1 4 0 7 5 8 7 2 7 1 1 1 0 1 7 1 1 1 1 1 2 1 1 0 1 0 7 1 0 9 1 6 2 0 6 8 1 1 7 2 1 4 1 1 1 2 1 5 1 1 1 2 1 0 5 4 1 1 1 1 2 1 1 1 0 7 2 7 0 1 1 1 2 0 1 1 1 7 1 8 7 1 1 1 1 1 1 8 1 2 0 7 7 1 1 5 1 1 1 6 7 5 2 5 1 0 0 0 2 1 0 0 1 4 1 0 8 1 1 1 7 1 2 1 1 7 1 2 1 7 1 1 1 1 0 1 1 2 2 1 1 1 1 9 1 1 2 0 5 3 1 8 1 1 1 6 8 1 2 1 2 1 9 1 1 8 1 1 2 1 1 0 2 8 1 5 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 1 1 0 1 0 1 8 8 1 8 1 3 1 2 7 1 1 8 1 5 1 5 1 0 1 1 2 1 0 2 2 7 7 0 1 4 8 5 1 7 6 2 1 2 1 7 2 5 2 7 1 1 0 8 1 5 1 1 1 8 2 1 8 2 0 1 2 1 2 2 1 1 1 1 1 0 7 6 1 1 1 1 1 7 8 1 0 1 2 8 8 1 1 8 0 2 1 0 1 2 1 2 0 9 9 2 0 7 1 1 1 1 7 1 1 8 1 4 2 0 2 1 2 2 8 1 1 1 1 1 0 1 0 1 0 0 6 0 0 1 4 0 2 1 2 1 1 1 0 1 1 1 1 1 1 5 3 8 0 8 4 1 0 7 7 1 3 2]

聚类结果评价指标一一轮廓系数 某个点的轮廓系数定义为:

其中disMean int为该点与本类其他点的平均距离,disMeanout为该点与非本类点的平均距离。该值取值范围为 [−1,1][−1,1]

[−1,1][−1,1]

,越接近1则说 明分类越优秀。在 sklearn 中函数 si lhouette_score() 计算所有点的平均轮廓系数,而 silhouette_samples() 返回每个点的轮庪系数。

# 评估指标——轮廓系数,前者为所有点的平均轮廓系数,后者返回每个点的轮廓系数from sklearn.metrics import silhouette_score, silhouette_sampless = silhouette_score(tfidf, y_kmeans)s

0.0021600981161913014

def metrics_n(data,n):'''传入聚类数据以及类的个数n,返回聚类结果以及轮廓系数'''kmeans = KMeans(n_clusters=n,random_state=0)kmeans.fit(data)y_kmeans = kmeans.predict(data)s = silhouette_score(data, y_kmeans)return y_kmeans,sscore = []result = []for i in range(2,20):tmp_result = metrics_n(tfidf,i)score.append(tmp_result[1])result.append(tmp_result[0])import matplotlib.pyplot as pltimport matplotlib.pylab as pylabplt.style.use("ggplot")params = {'legend.fontsize': 25,#'x-large','figure.figsize': (15, 8),'axes.labelsize': 25,#'x-large','axes.titlesize': 25,#'x-large','xtick.labelsize': 25,#'x-large','ytick.labelsize': 25,}#'x-large'}pylab.rcParams.update(params)#matplotlib基础设置plt.plot(range(2,20),score)plt.xlabel("$n$")plt.ylabel("$s$");

可以看到n取7时,效果较好

降维我们采用PCA

len(result)

18

tfidf.toarray()array([[0., 0., 0., ..., 0., 0., 0.],[0., 0., 0., ..., 0., 0., 0.],[0., 0., 0., ..., 0., 0., 0.],...,[0., 0., 0., ..., 0., 0., 0.],[0., 0., 0., ..., 0., 0., 0.],[0., 0., 0., ..., 0., 0., 0.]])from sklearn.decomposition import PCAclf2=PCA(2)clf2.fit(tfidf.toarray())result_MDS=clf2.fit_transform(tfidf.toarray())result_MDS

result_MDS = pd.DataFrame(result_MDS,columns=['x','y'])result_MDS['label'] = result[5]result_MDS

import seaborn as snssns.scatterplot(x="x", y="y", hue="label",data=result_MDS)plt.title("n = 7")Text(0.5, 1.0, 'n = 7')

plt.figure(figsize=(36,36))n_col = 3n_line = 6position = 1n = 2for i in range(n_line):for j in range(n_col):plt.subplot(n_line,n_col,position)result_MDS['label'] = result[position-1]sns.scatterplot(x="x", y="y", hue="label",data=result_MDS)plt.title("k-means n = " str(n))n =1position =1plt.tight_layout()

取n=7进行结果分析

" ".join(list(article.abstract[np.array(result[5]) == 5]))

import numpy as npfrom wordcloud import WordCloudwordcloud = WordCloud(background_color='white',scale=1.5).generate(" ".join(list(article.abstract[np.array(result[5]) == 0])))plt.imshow(wordcloud)plt.axis('off')

(-0.5, 599.5, 299.5, -0.5)

第0类主要内容

n_line = 3n_col = 3position = 1plt.figure(figsize=(16,16))for i in range(7):plt.subplot(n_col,n_line,position)position =1wordcloud = WordCloud(background_color='white',scale=1.5).generate(" ".join(list(article.abstract[np.array(result[5]) == i])))plt.title("label = " str(i))plt.imshow(wordcloud)plt.axis('off')plt.tight_layout()

    推荐阅读
  • 怎样烧红烧肉(家常红烧肉的做法)

    怎样烧红烧肉原料:精品五花肉、炖肉料包、葱、冰糖、茶叶。五花肉切条放入凉水中撇去血沫。焯水定型;捞出后晾凉切一样大的方块。锅中放少许油倒入白砂糖炒糖色。糖色的气泡由大变小迅速关火,倒入开水。加少许绍酒,加开水烧,熟得快,加入茶叶水,可以去腥味。改回炒锅大火,放冰糖,使汁粘稠即可出锅,香葱段点缀。

  • 2022杭州径山茶圣节时间、地点、活动一览

    最终集齐所有铜币的游客可至“大宋钱庄”兑换神秘礼物。今来茶韵生活01、陆羽说论坛为进一步挖掘径山茶宴有关历史文化,本届茶圣节特邀请茶学专家交流讨论如何更好保护和传承国家非物质文化遗产。为打造文化传播年,第二十一届中国茶圣节以春迎、夏凉、秋韵、冬福四大主题贯穿全年。

  • 《重生之门》给罗队发短信的人身份

    但是通过前文,不难推测应该是庄文杰发给罗队的短信,只是没有暴露自己的身份。罗坚来到青檀假日酒店排查,没有发现任何异常,庄文杰和许正清乔装改扮随后赶来,他们一出现就被人盯上,庄文杰和许正清来到地下停车场,庄文杰巧妙引开那些人,混进游客中进入酒店。这件事情把十二年前的洛神案串联起来了。

  • 爱情名著哪个好看(随侃名著佳作第6期)

    言下之意,他主动向周晓白提出分手。钟跃民成为一个军人,上了战场,并且是在战斗中受伤,被送到战地医疗帐篷内救治。而周晓白和钟跃民在时隔十多年后的相遇一刻,也是被编剧以及导演,安排得相当的特别,并不是那种悲情欲绝又或者是感动无比的相遇时刻。

  • 板栗可以保存多久 板栗怎么能保存时间长

    如果是晒干的板栗可以存放3-4个月,生板栗在常温下合理贮存可以存放1-2个月,煮熟的栗子大概可以放一周,熟板栗放冰箱冷冻能保存30天左右,熟板栗放冰箱冷藏保存可以存放5天。

  • 贾宝玉与红楼梦的关系(贾宝玉的春梦到底在暗示什么)

    贾宝玉与红楼梦的关系?要知道,贾琏这个人极其好色,而且好的就是熟女,那么从这个曲折的描述中,我们可以推断出,秦可卿应该是那种熟女中的极品。这个问题在书中得不到直接的答案,因为在后面的文章中,秦可卿一共只出现三个镜头:介绍弟弟秦钟与贾宝玉相见,秦可卿病后王熙凤带贾宝玉去探病,秦可卿临死前在梦里向王熙凤交代后事。

  • 简单又好看的剪纸适合儿童(孩子能学会的幼儿简单剪纸教程)

    接下来我们就一起去研究一下吧!简单又好看的剪纸适合儿童幼儿园的孩子经常要做各种各样的手工,通过做手工,提高孩子的审美能力,锻炼孩子的动手能力,培养孩子的专注力和耐心,让孩子更聪明。用蓝天白云绿色的草地,太阳、小兔子和小蘑菇,可以贴出一幅画,也可以用这个画面编出一个小故事,带孩子度过愉快的亲子时光。欢迎关注,学习更多幼儿小手工。

  • 摩尔庄园钓鲤鱼的最佳方法(摩尔庄园钓鲤鱼的有什么最佳方法)

    以下内容希望对你有帮助!摩尔庄园钓鲤鱼的最佳方法工具/原料:华为手机、安卓系统、摩尔庄园游戏。进入游戏后操纵游戏角色进行移动了。去商店购买钓鱼的诱饵。来到池塘边进行的钓鱼。等待的水面出现波动即可钓到鲤鱼了。

  • 国外的懒人产品(歪国产品咖在用哪些可爱的小工具)

    quotes=trueUsabilityHub我通常使用UsabilityHub来帮助确定设计方案。

  • 一年四季水果时间表(一年四季的时令水果是什么)

    3月(春季):枇杷、红香蕉、樱桃、杨桃、番荔枝、青枣、甘果蔗、草莓、番石榴、牛奶蕉、柑桔、观赏南瓜、果桑、鹤首瓜。12月(冬季):樱桃、番茄、红香蕉、鸡蛋果、木瓜、草莓、百香果、杨桃、无花果、番石榴、牛奶蕉、鹤首瓜、观赏南瓜、果蔗、台湾青枣、黑提子、人心果、柠檬、菠萝、油梨、柑橘、橙子。