# 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. Yii框架请求

    $request = Yii::$app->request; $get = $request->get(); // 等价于: $get = $_GET; $id = $request-&g ...

  2. arduino 驱动电调

    #include <TimerOne.h> #define PPMPIN 7 ; //0-9 ; void setup() { // put your setup code here, t ...

  3. SSH整合 第二篇 工程初建

    SSH整合,第二篇. 创建工程 这里只是测试和理解hibernate.建立Java工程就好了. 1.hibernate-4.2.21.jar hibernate包下的required,即\hibern ...

  4. (最大上升子序列) Super Jumping! Jumping! Jumping! -- hdu -- 1087

    http://acm.hdu.edu.cn/showproblem.php?pid=1087   Super Jumping! Jumping! Jumping! Time Limit:1000MS  ...

  5. android图形系统概述

    简介 本文讲解的内容是Android4.1以后的系统机制,将从整体上分析Android图形显示系统的结构,不深入分析每一层内部的代码实现,更多的是使用流程图和结构图来让大家理解Android是如何绘制 ...

  6. [Ubuntu Version] 如何在terminal 查看当前 ubuntu的版本号

    命令: locate locate /etc/*release/etc/lsb-release/etc/os-release 命令: catcat /etc/os-releaseNAME=" ...

  7. delphi 动态加载dll

    引入文件 DLL比较复杂时,可以为它的声明专门创建一个引入单元,这会使该DLL变得更加容易维护和查看.引入单元的格式如下: unit MyDllImport; {Import unit for MyD ...

  8. Android-Java-Thread的使用

    main线程跑三个任务: package android.java.thread2; class Demo { private String name; public Demo(String name ...

  9. Android SQLiteOpenHelper Sqlite数据库的创建与打开

    Android Sqlite数据库是一个怎样的数据库? 答:是一种嵌入式小型设备,移动设备,的数据库,应用在穿戴设备(例如:智能手表,计算手环 等等),移动设备(例如:Android系统类型的手机 等 ...

  10. Thread in depth 4:Synchronous primitives

    There are some synchronization primitives in .NET used to achieve thread synchronization Monitor c# ...