聚类之k-means附代码

摘要:
importosimportsysassys#reload(sys)#sys.setdefaultencoding('utf-8')from sklearn。clusterimportKMeansfromsklearnimportfeature_ extractionofromsklearn。feature_ extraction.textimportTfidfTransformerfromsklearn

聚类之k-means附代码第1张

聚类之k-means附代码第2张

 聚类之k-means附代码第3张

 import os
import sys as sys
#reload(sys)
#sys.setdefaultencoding('utf-8')
from sklearn.cluster import KMeans
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import numpy as np

def tfidf_vector(corpus_path):
    corpus_train=[]
    #利用train-corpus提取特征
    target_train=[]
    for line in open(corpus_path):
        line=line.strip().split(' ')
        if len(line)==2:
            words=line[1]
            category=line[0]
            target_train.append(category)
            corpus_train.append(words)
    print ("build train-corpus done!!")
    count_v1= CountVectorizer(max_df=0.4,min_df=0.01)
    counts_train = count_v1.fit_transform(corpus_train)  
    
    word_dict={}
    for index,word in enumerate(count_v1.get_feature_names()):
        word_dict[index]=word
    
    print ("the shape of train is ")
    print (repr(counts_train.shape))
    tfidftransformer = TfidfTransformer()
    tfidf_train = tfidftransformer.fit(counts_train).transform(counts_train)
    return tfidf_train,word_dict

def best_kmeans(tfidf_matrix,word_dict):  
    K = range(1, 10)
    meandistortions = []
    for k in K:
        print (k),('****'*5)
        kmeans = KMeans(n_clusters=k)
        kmeans.fit(tfidf_matrix)    
        meandistortions.append(sum(np.min(cdist(tfidf_matrix.toarray(), kmeans.cluster_centers_, 'euclidean'), axis=1)) / tfidf_matrix.shape[0])
    plt.plot(K, meandistortions, 'bx-')
    plt.grid(True)
    plt.xlabel('Number of clusters')
    plt.ylabel('Average within-cluster sum of squares')
    plt.title('Elbow for Kmeans clustering')
    plt.show()

corpus_train = "corpus_train.txt"
cluster_docs = "cluster_result_document.txt"
cluster_keywords = "cluster_result_keyword.txt"
num_clusters = 7
tfidf_train,word_dict=tfidf_vector(corpus_train)
best_kmeans(tfidf_train,word_dict)
cluster_kmeans(tfidf_train,word_dict,cluster_docs,cluster_keywords,num_clusters)

免责声明:文章转载自《聚类之k-means附代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Scala(七)集合nginx 开启x-forward下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

聚类-31省市居民家庭消费水平-city

===分三类的===== ======分四类的======== 直接写文件名,那么你的那个txt文件应该是和py文件在同一个路径的 ============code=========== import numpy as npfrom sklearn.cluster import KMeansdef loadData(filePath):fr = ope...

ros自定义消息的时候报错ImportError: No module named em

Traceback (most recent call last):  File "/opt/ros/kinetic/share/gencpp/cmake/../../../lib/gencpp/gen_cpp.py", line 41, in <module>    import genmsg.template_tools  File "/o...

RBF神经网络

1.RBF径向基函数 本质上和RBF核函数的SVM很相似,使用径向基函数对数据重新构建,利用 Φ(||X- Xp||)来代替原始的数据向量表示,一共有P个中心,所以获得的新数据有P个维度,此时再对数据进行分类。输出等于W Φ(||X- Xp||),W为需要求解的权重。 数学上是可以对W求解求解的,但是Φ的选取有要求,同时还不包含正则,使求解的曲面可能有过...

实验1:基于Weka的典型数据挖掘应用

一、实验目标 理解数据挖掘的基本概念,掌握基于Weka工具的基本数据挖掘(分类、回归、聚类、关联规则分析)过程。 二、实验内容 下载并安装Java环境(JDK 7.0 64位)。 下载并安装Weka 3.7版。 基于Weka的数据分类。 基于Weka的数据回归。 基于Weka的数据聚类。 基于Weka的关联规则分析。 三、实验步骤 1.下载并安装Jav...

Faiss流程与原理分析

 1、Faiss简介   Faiss是Facebook AI团队开源的针对聚类和相似性搜索库,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的Pytho...

R学习之R层次聚类方法(tm包)

1、距离计算  ## method for class 'TermDocumentMatrix' dissimilarity(x, y = NULL, method) ## method for class 'PlainTextDocument' dissimilarity(x, y = NULL, method) 参数说明:    x:文档-词矩阵或...