#!/usr/bin/env python#-*- coding: utf-8 -*-#@File : kmeans.py#@Author: 田智凯#@Date : 2020/3/19#@Desc :机器学习kmeans算法,对科技成果项目进行聚类分析

from __future__ importprint_functionimporttimefrom sklearn.feature_extraction.text importTfidfVectorizerimportmatplotlib.pyplot as pltfrom sklearn.cluster importKMeans, MiniBatchKMeansimportpymssql#读取sqlserver数据库

defget_dbdata():

conn_read= pymssql.connect("127.0.0.1", "sa", "###", "test", charset="GBK")

dataset=[]

sql= "select guanjianci from julei_test"cursor=conn_read.cursor()

cursor.execute(sql)

data_count=0for line incursor:

data_count+=1dataset.append(line[0])

cursor.close()

conn_read.close()print(dataset)returndatasetdef transform(dataset, n_features=1000):

vectorizer= TfidfVectorizer(max_df=0.5, max_features=n_features, min_df=2, use_idf=True)

X=vectorizer.fit_transform(dataset)returnX, vectorizerdef train(X, vectorizer, true_k=10, minibatch=False, showLable=False):#使用采样数据还是原始数据训练k-means,

ifminibatch:

km= MiniBatchKMeans(n_clusters=true_k, init='k-means++', n_init=1,

init_size=1000, batch_size=1000, verbose=False)else:

km= KMeans(n_clusters=true_k, init='k-means++', max_iter=300, n_init=1,

verbose=False)

km.fit(X)ifshowLable:print("Top terms per cluster:")

order_centroids= km.cluster_centers_.argsort()[:, ::-1]

terms=vectorizer.get_feature_names()print(vectorizer.get_stop_words())for i inrange(true_k):print("Cluster %d:" % i, end='')for ind in order_centroids[i, :10]:print('%s' % terms[ind], end='')print()

result=list(km.predict(X))print('Cluster distribution:')print(dict([(i, result.count(i)) for i inresult]))return -km.score(X)#指定簇的个数k

defk_determin():'''测试选择最优参数'''dataset=get_dbdata()print("%d documents" %len(dataset))

X, vectorizer= transform(dataset, n_features=500)

true_ks=[]

scores=[]#中心点的个数从3到200(根据自己的数据量改写)

for i in range(3, 200, 1):

score= train(X, vectorizer, true_k=i) /len(dataset)print(i, score)

true_ks.append(i)

scores.append(score)

plt.figure(figsize=(8, 4))

plt.plot(true_ks, scores, label="error", color="red", linewidth=1)

plt.xlabel("n_features")

plt.ylabel("error")

plt.legend()

plt.show()defmain():'''在最优参数下输出聚类结果'''dataset=get_dbdata()

X, vectorizer= transform(dataset, n_features=500)

score= train(X, vectorizer, true_k=25, showLable=True) /len(dataset)print(score)if __name__ == '__main__':

start=time.time()#k_determin()#先确定k值

main()

end=time.time()print('程序运行时间',end-start)

python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析相关推荐

  1. 机器学习实验(一):运用机器学习(Kmeans算法)判定家庭用电主因

    声明:版权所有,转载请联系作者并注明出处  http://blog.csdn.net/u013719780?viewmode=contents 博主简介:风雪夜归子(Allen),机器学习算法攻城狮, ...

  2. python聚类分析案例_python 聚类分析实战案例:K-means算法(原理源码)

    K-means算法: 关于步骤:参考之前的博客 关于代码与数据:暂时整理代码如下:后期会附上github地址,上传原始数据与代码完整版, 各种聚类算法的对比:参考连接 Kmeans算法的缺陷 1.聚类 ...

  3. 【项目实战】Python基于KMeans算法进行文本聚类项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 随着计算机技术的发展.Web 应用的逐步普及,大量的电子文本已经 ...

  4. Python之机器学习K-means算法实现

    一.前言: 今天在宿舍弄了一个下午的代码,总算还好,把这个东西算是熟悉了,还不算是力竭,只算是知道了怎么回事.今天就给大家分享一下我的代码.代码可以运行,运行的Python环境是Python3.6以上 ...

  5. python 数学期望_python机器学习笔记:EM算法

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote EM算法也称期望最大化 ...

  6. python 聚类分析实战案例:K-means算法(原理源码)

    K-means算法: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvV44zrK-1573127992123)(https://img-blog.csdn.net/ ...

  7. python datasets 下载_Python机器学习·微教程

    Python目前是机器学习领域增长最快速的编程语言之一. 该教程共分为11小节.在这个教程里,你将学会: 如何处理数据集,并构建精确的预测模型 使用Python完成真实的机器学习项目 这是一个非常简洁 ...

  8. AI K-means算法对数据进行聚类分析-实验报告

    1. 问题描述及实验要求 K-means算法对data中数据进行聚类分析 (1)算法原理描述 (2)算法结构 (3)写出K-means具体功能函数(不能直接调用sklearn.cluster(Mean ...

  9. python文本编辑器_python最好的ide和文本编辑器

    python文本编辑器 I cannot stress enough how important the right IDE (Integrated Development Environment) ...

最新文章

  1. Java 参数后面跟三个... 的作用
  2. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
  3. LeetCode - Reorder List
  4. IE 8兼容小妙招~~
  5. ms17-010 php版本,那年MS17-010
  6. 探秘音视频网络优化与全球化部署最佳实践
  7. 难过的时候看一看 再坏能有多坏!
  8. Spring Security 3.0控制一个帐号只允许登录一次的问题
  9. ImportError: cannot import name ‘XGBClassifier‘
  10. 转帖:MySql日期格式化
  11. 矩阵标准型的系数是特征值吗_高等代数|第五章 二次型二次型及其标准型
  12. 西安游记(钟楼 -- 回民街 -- 西安古城墙)
  13. python 100以内的奇数和_python入门:输出1-100之内的所有奇数和偶数
  14. 2019开发者调查报告出炉
  15. JS之获取银行卡信息
  16. jadx-gui-1.4.4 反编译工具使用教程
  17. 收集的英语资源(不断更新)
  18. html元素背景与雪碧图
  19. lenovo服务器换系统重装系统_thinkserver服务器怎么重装系统?
  20. 状态栏的工具类(支持多种版本类型)

热门文章

  1. 【剑指offer】面试题48. 最长不含重复字符的子字符串(java)
  2. 命令行设置dns_dos命令netsh图文教程,设置修改IP地址子网掩码网关命令行改dns...
  3. java右移位_java中的左移 右移
  4. 创建启动oracle快捷方式,GNOME3创建连接OracleFS管理软件启动快捷方式
  5. java 16 binary_【图片】【困扰】java(tm) platform se binary 已停止工作该如何是好【minecraft吧】_百度贴吧...
  6. python图片显示中文
  7. GIOU loss+DIOU loss+CIOU loss
  8. python selenium 用法 和 Chrome headless
  9. Vim自动补全神器:YouCompleteMe
  10. 掌控谈话~重复对方的话