精选文章 实验室作业之英文文本聚类

实验室作业之英文文本聚类

作者:EnemyGodlike 时间: 2020-08-05 09:11:35
EnemyGodlike 2020-08-05 09:11:35

给出已经分好的英文数据集,数据集中没有重复的单词,进行文本聚类

聚类就是先把英文单词转化为向量,根据要聚成多少类,随机选择点,用欧氏距离或者余弦距离进行计算,把随机选择的中心点附近的点跟他归为一类,所以要先计算tdidf的值,

关于pycharm中kmeans包中的函数介绍

  1. n_clusters: 簇的个数,即你想聚成几类

  2. init: 初始簇中心的获取方法

  3. n_init: 获取初始簇中心的更迭次数,为了弥补初始质心的影响,算法默认会初始10个质心,实现算法,然后返回最好的结果。

  4. max_iter: 最大迭代次数(因为kmeans算法的实现需要迭代)

  5. tol: 容忍度,即kmeans运行准则收敛的条件

  6. precompute_distances:是否需要提前计算距离,这个参数会在空间和时间之间做权衡,如果是True 会把整个距离矩阵都放到内存中,auto 会默认在数据样本大于featurs*samples 的数量大于12e6 的时候False,False 时核心实现的方法是利用Cpython 来实现的

  7. verbose: 冗长模式(不太懂是啥意思,反正一般不去改默认值)

  8. random_state: 随机生成簇中心的状态条件。

  9. copy_x: 对是否修改数据的一个标记,如果True,即复制了就不会修改数据。bool 在scikit-learn 很多接口中都会有这个参数的,就是是否对输入数据继续copy 操作,以便不修改用户的输入数据。这个要理解Python 的内存机制才会比较清楚。

  10. n_jobs: 并行设置

  11. algorithm: kmeans的实现算法,有:’auto’, ‘full’, ‘elkan’, 其中 ‘full’表示用EM方式实现

  12. 虽然有很多参数,但是都已经给出了默认值。所以我们一般不需要去传入这些参数,参数的。可以根据实际需要来调用。



import time

import re

import os

import sys

import codecs

import shutil

import numpy as np

from sklearn import feature_extraction

from sklearn.feature_extraction.text import TfidfTransformer

from sklearn.feature_extraction.text import CountVectorizer

if __name__ == "__main__":

    #########################################################################

    #                           第一步 计算TFIDF

    # 文档预料 空格连接

    corpus = []

    # 读取预料 一行预料为一个文档

    for line in open(r'D:\实验室项目练习\Tweet').readlines():
        # print(line)

        corpus.append(line.strip())

    # print corpus

    # time.sleep(1)

    # 将文本中的词语转换为词频矩阵 矩阵元素a[i][j] 表示j词在i类文本下的词频

    vectorizer = CountVectorizer()

    # 该类会统计每个词语的tf-idf权值

    transformer = TfidfTransformer()

    # 第一个fit_transform是计算tf-idf 第二个fit_transform是将文本转为词频矩阵

    tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))

    # 获取词袋模型中的所有词语

    word = vectorizer.get_feature_names()

    # 将tf-idf矩阵抽取出来,元素w[i][j]表示j词在i类文本中的tf-idf权重

    weight = tfidf.toarray()

    # 打印特征向量文本内容

    print('Features length: ' + str(len(word)))

    resName = r"D:\实验室项目练习\kmeans\tdidf.txt"

    result = codecs.open(resName, 'w','utf-8')

    for j in range(len(word)):
        result.write(word[j] + ' ')

    result.write('\r\n\r\n')

    # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重

    for i in range(len(weight)):

        print( u"-------这里输出第",i,"类文本的词语tf-idf权重------"  )

        for j in range(len(word)):
            #print( weight[i][j],)
            result.write(str(weight[i][j]) + ' ')
        result.write('\r\n\r\n')



    ########################################################################

    #                               第二步 聚类Kmeans

    print('Start Kmeans:')

    from sklearn.cluster import KMeans
    """调用KMeans算法 进行聚类 ,分类"""
    #clf = KMeans()
    """对数据进行拟合,训练模型"""
    #clf.fit

    clf = KMeans(n_clusters=300,max_iter=600)

    s = clf.fit(weight)

    # print( s)

    # 20个中心点

    print(clf.cluster_centers_)

    # 每个样本所属的簇

    print(clf.labels_)

    i = 1

    while i <= len(clf.labels_):
        # print( i, clf.labels_[i-1])

        print(clf.labels_[i - 1])

        i = i + 1

    # 用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数

    print(clf.inertia_)

https://www.cnblogs.com/foremostxl/p/11923852.html

这篇文章关于函数介绍的比较详细,贴在这里方便以后查找,之前记得找过一篇介绍函数的但是找不到了。。。。就把这个放这里吧/

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:SIP语音环境中十大经典问题及解决办法

下一篇:oracle 裸磁盘扩容

您可能感兴趣

  • 芯片破壁者(十.上):风起樱花之地

    在不断升级的中美科技战中,每个人都很容易发现,在芯片上受制于人似乎是一个最难解的谜题。面对这种情况,很多国人可能都在思考:我们到底有没有可能打破“芯片枷锁”? 而从历史里寻找答案是文明的天性,在审视国家间的半导体博弈时,有一个无法绕开的话题,就是上世纪60年到到90年代,横跨数十年、关系错综复杂的美日半导体纠葛。这段历史中最为人津津乐道的有两点。一是日本在80年代一跃超过美国成为全球半导体产...

  • 如何避免被以太坊天价 gas 费 PUA?

    近日,随着 ETH 价格突破年内新高一度甚至超过 400 美元(截稿日前价格),ETH2.0 多客户端测试网 Medalla 即将启动,Yield Farming 热潮持续火爆等多重利好,让很多重仓 ETH 的朋友喜笑颜开的同时,涨势更加“喜人”的 gas 费也让一众 DeFi 用户叫苦不迭。 某资深用户“吐槽”道,“为了把我的 15 美元抵押进 Curve,我已经花了 14 美元的 gas...

  • 对云桌面、桌面云、私有云的一些看法

    最近整理了一下自2017年以来自己对私有云服务平台构建的一些认识,并以刚刚为某后勤保障部队单位提供的小规模私有云服务平台为例阐述。 私有云平台、云计算服务与虚拟化: 我个人认为这三个名称分别指涉了三个不同的事物: 私有云平台:在实践中,私有云平台时包含了服务端软硬件集成和客户端软硬件集成的一整套特定业务需求场景的、已经处于落地实施阶段的解决方案项目。 比如某后勤保障部队为简化征兵流程、节省相...

  • 学计算机必看:程序员部落酋长,给计算机专业学生的 6 个建议!

    如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以自己喜欢的事谋生。大多数人没有这么幸运。你认为理所当然的观念“热爱你的工作”,其实是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得不去上班。 你工作的目的是为了攒下钱去干那些自己真正喜欢干的事,但是前提是你得等到65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,...

  • 抢滩直播基地:有人黯然退场,有人闪亮进场,还有人只当跳板

    图片来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 一支穿云箭,千军万马来相见;两副忠义胆,刀山火海提命现。 当年因星爷《功夫》爆红网络的经典台词,正成为如今火爆天际的直播经济的真实写照。 受疫情影响,众多城市和平台纷纷加码直播电商,各路英雄齐聚直播带货——明星、企业家、政府官员、学者、网红和草根接连登场,全民直播迅速燎原。正是众人拾柴,将直播经济这把火越烧越旺。...

  • 「鹿班智能设计平台」是如何工作的

    目录 商业设计大脑的三大挑战 可控的视觉生成过程 机器如何学习设计 组成一,设计框架。 组成二,元素中心。 组成三,行动器。 组成四,评估网络。 视觉设计的四个层次 最基础的:临摹拓展。 第二层:场景表达。 第三层:创意洞见。 最后一层:创造趋势。 商业设计大脑的三大挑战 在开始做事情之前,我们遇到了三个比较严峻的挑战。 第一个挑战,缺少标注数据。今天所有的人工智能都基于大量的结构化标注数据...

  • 大数据分析和数据挖掘区别_大数据分析和数据挖掘之间的区别,大数据的未来范围...

    大数据分析和数据挖掘区别 There arises a confusion among most of the people between Big Data and Data mining. In this article, I will try to make you understand the difference between both and later on we will ...

  • 基于生物特征信息的身份识别(指纹、面部识别的方式和原理)的使用问题的思考

    1.应用现状及应用案例介绍 近年来,随着互联网的飞速发展,各式各样的应用也不断发展,给我们的生活带来了极大的便捷。生活中,我们日常使用我们个人的指纹以及面部信息来识别个人身份,还有虹膜技术和声纹识别技术。 以上提到的四种技术,都是将我们的个人身份特征信息用于身份识别,但严格来说,我们的个人身份信息都是属于我们的个人隐私,个人隐私的界定是在个人生活中不愿为他人公开或知悉的秘密,判断是否属于个人...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。