Python 如何正确使用TfidfVectorizer?

Python 如何正确使用TfidfVectorizer?,python,scikit-learn,k-means,tf-idf,Python,Scikit Learn,K Means,Tf Idf,在kmeans群集中使用TFIDFvectorier时,我总是出错 有3种情况: 我使用TfidfVectorizer中的tokenizer参数为我的数据集定制标记化过程。这是我的密码: vectorizer=TfidfVectorizer(stop\u words=stops,tokenizer=tokenize) X=矢量器。拟合变换(标题) 但是我得到了这个错误: ValueError: empty vocabulary; perhaps the documents only contai

在kmeans群集中使用TFIDFvectorier时,我总是出错

有3种情况:

  • 我使用TfidfVectorizer中的
    tokenizer
    参数为我的数据集定制标记化过程。这是我的密码:

    vectorizer=TfidfVectorizer(stop\u words=stops,tokenizer=tokenize)
    X=矢量器。拟合变换(标题)

  • 但是我得到了这个错误:

    ValueError: empty vocabulary; perhaps the documents only contain stop words
    
  • 我制作了一个词汇表,由标记化后的术语组成,因此代码如下所示:

    vectorizer=TfidfVectorizer(stop\u words=stops,tokenizer=tokenize,词汇=vocab)

  • 但我又犯了一个新错误:

    ValueError: Vocabulary contains repeated indices.
    
  • 最后,我删除了标记器和词汇表参数。代码如下所示:

    vectorizer=TfidfVectorizer(停止\u单词=停止)
    X=矢量器。拟合变换(标题)
    术语=矢量器。获取特征名称()
    真k=8
    model=KMeans(n_clusters=true_k,init='k-means++',max_iter=100,n_init=1)
    模型拟合(X)
    打印“每个群集的顶级术语:”
    order_centroids=model.cluster_centers_u.argsort()[:,:-1]
    对于范围内的i(真k):
    打印“群集%d:”%i,
    对于按质心[i,:10]顺序排列的ind:
    打印“%s”%terms[ind],
    打印

  • 程序运行成功,但聚类结果如下:

    集群0:班根、兰康、卢纳克、佩朗卡特、阿皮卡西、贝贝巴斯、孟古纳坎、服务、sistem、彭班古南、,
    集群1:sistem、aplikasi、berbasis、web、menggunakan、pembuatan、mobile、informasi、teknologi、Pengebangan、,
    集群2:android、berbasis、aplikasi、perangkat、rancang、bangun、bergerak、mobile、sosial、menggunakan、,
    集群3:实施、算法、蒙古纳坎、克拉西菲卡西、数据、游戏、模糊、向量、支持、机器、,
    集群4:metode、menggunakan、video、penerapan、implementasi、隐写术、pengenalan、berbasis、文件、分析、,
    集群5:citra、segmentasi、menggunakan、implementasi、metode、warna、tekstur、kembali、berwarna、temu、,
    集群6:jaringan、tiruan、protokol、voip、syaraf、saraf、menggunakan、implementasi、kinerja、流媒体、,
    集群7:studi、kasus、its、informatika、teknik、sistem、informasi、data、泗水、jurusan,

    一些术语被聚集到多个集群中,例如术语
    数据
    被放置到集群3和集群7中


    您能告诉我如何正确使用
    TFIDFvectorier
    KMeans
    吗?你的帮助就是我的幸福:)

    也许你的发音在第二步中包含了重复的值。你可以停止脱胶,并尝试清理它们。也许你的发音确实包含步骤2的重复值。你可以停止脱胶,并尝试清理它们。