python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析
#!/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算法——对文本进行聚类分析相关推荐
- 机器学习实验(一):运用机器学习(Kmeans算法)判定家庭用电主因
声明:版权所有,转载请联系作者并注明出处 http://blog.csdn.net/u013719780?viewmode=contents 博主简介:风雪夜归子(Allen),机器学习算法攻城狮, ...
- python聚类分析案例_python 聚类分析实战案例:K-means算法(原理源码)
K-means算法: 关于步骤:参考之前的博客 关于代码与数据:暂时整理代码如下:后期会附上github地址,上传原始数据与代码完整版, 各种聚类算法的对比:参考连接 Kmeans算法的缺陷 1.聚类 ...
- 【项目实战】Python基于KMeans算法进行文本聚类项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 随着计算机技术的发展.Web 应用的逐步普及,大量的电子文本已经 ...
- Python之机器学习K-means算法实现
一.前言: 今天在宿舍弄了一个下午的代码,总算还好,把这个东西算是熟悉了,还不算是力竭,只算是知道了怎么回事.今天就给大家分享一下我的代码.代码可以运行,运行的Python环境是Python3.6以上 ...
- python 数学期望_python机器学习笔记:EM算法
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote EM算法也称期望最大化 ...
- python 聚类分析实战案例:K-means算法(原理源码)
K-means算法: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvV44zrK-1573127992123)(https://img-blog.csdn.net/ ...
- python datasets 下载_Python机器学习·微教程
Python目前是机器学习领域增长最快速的编程语言之一. 该教程共分为11小节.在这个教程里,你将学会: 如何处理数据集,并构建精确的预测模型 使用Python完成真实的机器学习项目 这是一个非常简洁 ...
- AI K-means算法对数据进行聚类分析-实验报告
1. 问题描述及实验要求 K-means算法对data中数据进行聚类分析 (1)算法原理描述 (2)算法结构 (3)写出K-means具体功能函数(不能直接调用sklearn.cluster(Mean ...
- python文本编辑器_python最好的ide和文本编辑器
python文本编辑器 I cannot stress enough how important the right IDE (Integrated Development Environment) ...
最新文章
- Java 参数后面跟三个... 的作用
- java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
- LeetCode - Reorder List
- IE 8兼容小妙招~~
- ms17-010 php版本,那年MS17-010
- 探秘音视频网络优化与全球化部署最佳实践
- 难过的时候看一看 再坏能有多坏!
- Spring Security 3.0控制一个帐号只允许登录一次的问题
- ImportError: cannot import name ‘XGBClassifier‘
- 转帖:MySql日期格式化
- 矩阵标准型的系数是特征值吗_高等代数|第五章 二次型二次型及其标准型
- 西安游记(钟楼 -- 回民街 -- 西安古城墙)
- python 100以内的奇数和_python入门:输出1-100之内的所有奇数和偶数
- 2019开发者调查报告出炉
- JS之获取银行卡信息
- jadx-gui-1.4.4 反编译工具使用教程
- 收集的英语资源(不断更新)
- html元素背景与雪碧图
- lenovo服务器换系统重装系统_thinkserver服务器怎么重装系统?
- 状态栏的工具类(支持多种版本类型)
热门文章
- 【剑指offer】面试题48. 最长不含重复字符的子字符串(java)
- 命令行设置dns_dos命令netsh图文教程,设置修改IP地址子网掩码网关命令行改dns...
- java右移位_java中的左移 右移
- 创建启动oracle快捷方式,GNOME3创建连接OracleFS管理软件启动快捷方式
- java 16 binary_【图片】【困扰】java(tm) platform se binary 已停止工作该如何是好【minecraft吧】_百度贴吧...
- python图片显示中文
- GIOU loss+DIOU loss+CIOU loss
- python selenium 用法 和 Chrome headless
- Vim自动补全神器:YouCompleteMe
- 掌控谈话~重复对方的话