# coding=utf-8    

"""  

#K-means  

"""    

    

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('D:/pyfenlei/p2-1-fenci.txt', 'r').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 = "D:/pyfenlei/p2-1-tfidf.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 ("-------这里输出第",i,u"类文本的词语tf-idf权重------")

        for j in range(len(word)):  

            #print weight[i][j],  

            result.write(str(weight[i][j]) + ' ')  

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

  

    result.close()  

  

  

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

    #                               第二步 聚类Kmeans  

  

    print ('Start Kmeans:')  

    from sklearn.cluster import KMeans  

    clf = KMeans(n_clusters=10)  

    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])  

        i = i + 1  

  

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

    print(clf.inertia_)

python kmeans实战 - 单机一层聚类(小玩具哦),下次再弄个分布式多次聚类的更多相关文章

  1. 【Python机器学习实战】聚类算法(1)——K-Means聚类

    实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...

  2. Python数据分析实战视频教程【小蚊子数据分析实战课程】

    点击了解更多Python课程>>> Python数据分析实战视频教程[小蚊子数据分析实战课程] [课程概述] Python数据分析实战' 适用人群:适合需提升竞争力.提升工作效率.喜 ...

  3. 【Python机器学习实战】聚类算法(2)——层次聚类(HAC)和DBSCAN

    层次聚类和DBSCAN 前面说到K-means聚类算法,K-Means聚类是一种分散性聚类算法,本节主要是基于数据结构的聚类算法--层次聚类和基于密度的聚类算法--DBSCAN两种算法. 1.层次聚类 ...

  4. Python 机器学习实战 —— 监督学习(上)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

  5. Python 机器学习实战 —— 无监督学习(上)

    前言 在上篇<Python 机器学习实战 -- 监督学习>介绍了 支持向量机.k近邻.朴素贝叶斯分类 .决策树.决策树集成等多种模型,这篇文章将为大家介绍一下无监督学习的使用.无监督学习顾 ...

  6. Python 机器学习实战 —— 无监督学习(下)

    前言 在上篇< Python 机器学习实战 -- 无监督学习(上)>介绍了数据集变换中最常见的 PCA 主成分分析.NMF 非负矩阵分解等无监督模型,举例说明使用使用非监督模型对多维度特征 ...

  7. python机器学习实战(二)

    python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇noteboo ...

  8. Python—kmeans算法学习笔记

    一.   什么是聚类 聚类简单的说就是要把一个文档集合根据文档的相似性把文档分成若干类,但是究竟分成多少类,这个要取决于文档集合里文档自身的性质.下面这个图就是一个简单的例子,我们可以把不同的文档聚合 ...

  9. Python 机器学习实战 —— 监督学习(下)

    前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...

随机推荐

  1. 2018.09.11 bzoj47214721: [Noip2016]蚯蚓(单调队列)

    传送门 好题. 目测只会多带一个log2(n+m)" role="presentation" style="position: relative;"& ...

  2. Java的进阶之道

    Java的进阶之道 一.温馨提示 尽量用google查找技术资料.(条件允许的话) 有问题在stackoverflow找找,大部分都已经有人回答. 多看官方的技术文档. ibm developerwo ...

  3. python nan 变成0

    在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误.这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值. numpy.nan_t ...

  4. ScrollView嵌套listview ,滚动问题。设置listview不滚动

    对于ListView内部的ListView,一般用来展示少量的列表数据. 内部的ListView的高度看起来是一个固定值且无法滑动,这个就比较蛋疼了.. 提供两种解决方案,方案的核心都是重新设置内部L ...

  5. APUE(5)---标准I/O库 (3)

    十.定位流 #include <stdio.h> long ftell(FILE *fp); //若成功,返回当前文件位置指示:若出错,返回-1L int fseek(FILE *fp, ...

  6. bootstrap 问题

    less; sass: css预处理:可以直接使用.css,也可以修改.less,生成定制化的css CDN: 服务,使用这个效果会更好.theme一般不引入,jquery一般在js之前引入. 使用b ...

  7. Time&Patience

    “时间和耐心,是世间最强大的两个勇士.” “对未来越有信心,对今天越有耐心,坚持做正确的事.” 每日必做清单 每天六组俯卧撑    活在当下    接收脆弱    一万小时理论(罗马不是一天建成的,胖 ...

  8. 最佳编程字体:M+

    英文原文:The Best Font for Programming: M+ 程序员的最佳等宽字体是 M+. 一个偶然机会遇到了这个字体,在命运多舛的  kod 编辑器体验了.这个字体非比寻常,我坚持 ...

  9. 拷贝构造函数——防篡改

    对于普通类型的对象来说,他们之间的复制是简单的,比如: int a = 88; int b = a; 而类和普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量. #include <io ...

  10. 【Win10】开发中的新特性及原有的变更

    声明:本文内容适用于 Visual Studio 2015 RC 及 Windows 10 10069 SDK 环境下,若以后有任何变更,请以新的特性为准. 一.Password 控件的小眼睛属性的变 ...