# 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. js 验证input 输入框

    <h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...

  2. MATLAB实现截位的问题

    讨论MATLAB怎样提取10进制中的位的方法,因为做FFT时要用到截位,相去验证它,向同庆请教, 原来只是除以2的N次方,取模取余就行了,可恨我还想了一下午,也没有一个好办法. 接下来的问题是,对于负 ...

  3. BSD Socket (java)

    服务器 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java ...

  4. Google Map API申请

    https://code.google.com/apis/console 当然需要先有个Google账户登录. 然后需要建一个项目. 然后根据package+sha1码获取密钥key 然后就可以创建凭 ...

  5. Hdu1548 A strange lift 2017-01-17 10:34 35人阅读 评论(0) 收藏

    A strange lift Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  6. hdu1251 && hud 1247 (字典树)

    hdu1251 题目 这道题,主要是在主函数的输入输出上犹豫了. #include<stdio.h> #include<cstring> #include<iostrea ...

  7. 阿里巴巴集团2013实习生招聘技术类笔试卷(B)

    一.单选题 1.在常用的网络协议中,___是面向连接的.有重传功能的协议. A.IP   B.TCP    C.UDP    D.DXP 2.500张多米诺骨牌整齐地排成一列,依顺序编号为1.2.3… ...

  8. LeetCode143:Reorder List

    题目: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must d ...

  9. System.IO.FileLoadException:“混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。”

    解决方案: 在app.config新增如下配置节: <?xml version="1.0"?> <configuration> <startup us ...

  10. 关于STM32位带操作随笔

    以前在学习STM32时候关注过STM32的位带操作,那时候只是知道位带是啥,用来干嘛用,说句心里话,并没有深入去学习,知其然而不知其所以然.但一直在心中存在疑惑,故今日便仔细看了一下,写下心得供日后参 ...