[python]机器学习 k-mean 聚类分析

1.聚类代码:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @File  : 聚类2.py
 4 # @Author: 赵路仓
 5 # @Date  : 2020/3/19
 6 # @Desc  :
 7 # @Contact : [email protected]
 8
 9 import csv
10 import re
11 import jieba.analyse
12 from sklearn.cluster import KMeans
13 from sklearn.feature_extraction.text import TfidfTransformer
14 from sklearn.feature_extraction.text import CountVectorizer
15
16 labels = []
17 corpus = []  # 空语料库
18 # 这是三个要处理的文本 csv格式 需要修改
19 f = csv.reader(open("E:/Jingjinji3.csv", ‘r+‘, encoding=‘utf-8‘))
20 f1 = csv.reader(open("E:/Tianjin3.csv", ‘r+‘, encoding=‘utf-8‘))
21 f2 = csv.reader(open("E:/Hebei3.csv", ‘r+‘, encoding=‘utf-8‘))
22 count = 0
23
24 # 三个文件依次读取
25 for i in f:
26     count += 1
27     if count == 1:
28         continue
29     # 成果名称所在的列,从0开始 下面相同,需要修改
30     labels.append(i[1])
31     # 关键字所在的列 从0开始 下面相同,需要修改
32     corpus.append(i[24])
33
34 for i in f1:
35     count += 1
36     if count == 1:
37         continue
38     labels.append(i[2])
39     corpus.append(i[20])
40
41 for i in f2:
42     count += 1
43     if count == 1:
44         continue
45     labels.append(i[1])
46     corpus.append(i[19])
47
48 vectorizer = CountVectorizer()  # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频 
49 transformer = TfidfTransformer()  # 该类会统计每个词语的tf-idf权值
50 tfidf = transformer.fit_transform(
51     vectorizer.fit_transform(corpus))  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
52 weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
53 word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词
54
55 for i in range(len(labels)):  # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
56     print(u"-------这里输出第", i, u"类文本的词语tf-idf权重------")
57     list = weight[i].tolist()
58     print(word[list.index(max(list))], max(weight[i]))
59
60 # 可以修改,n_clusters 要聚类的类数,n_init 初始化质心的迭代次数 init 选择为随机选取质心 n_jobs并发运行 5
61 mykms = KMeans(n_clusters=100, max_iter=300, n_init=100,
62                init=‘k-means++‘, n_jobs=5)
63 y = mykms.fit_predict(weight)
64
65 # 要写入的文件,可以修改
66 f = csv.writer(open("E:/result.csv", ‘w‘, encoding=‘utf-8‘, newline=‘‘))
67 f.writerow(["类别", "名称", "领域"])
68 f = csv.writer(open("E:/result.csv", ‘a+‘, encoding=‘utf-8‘, newline=‘‘))
69
70 # 标签用0-100的数组区分
71 for i in range(0, 20):
72     label_i = []
73     for j in range(0, len(y)):
74         if y[j] == i:
75             label_i.append(labels[j])
76     text = " ".join(label_i)
77     Key = jieba.analyse.extract_tags(text, topK=5)
78     print(Key)
79     print(‘label_‘ + str(i) + ‘:‘, len(label_i), str(label_i))
80
81     for a in label_i:
82         f.writerow([str(i), a, ‘ ‘.join(Key)])

函数以及用法见代码。

原文地址:https://www.cnblogs.com/zlc364624/p/12548865.html

时间: 2024-10-08 03:51:28

[python]机器学习 k-mean 聚类分析的相关文章

吴裕雄 python 机器学习——K均值聚类KMeans模型

import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics import adjusted_rand_score from sklearn.datasets.samples_generator import make_blobs def create_data(centers,num=100,std=0.7): X, labels_true = make_b

机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

(一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>=1)个距离近期的邻居进行分类推断(投票法)或者回归.假设K=1.那么新数据被简单分配给其近邻的类.KNN算法算是监督学习还是无监督学习呢?首先来看一下监督学习和无监督学习的定义.对于监督学习.数据都有明白的label(分类针对离散分布,回归针对连续分布),依据机器学习产

《Python机器学习及实践:从零开始通往Kaggle竞赛之路》

<Python 机器学习及实践–从零开始通往kaggle竞赛之路>很基础 主要介绍了Scikit-learn,顺带介绍了pandas.numpy.matplotlib.scipy. 本书代码基于python2.x.不过大部分可以通过修改print()来适应python3.5.x. 提供的代码默认使用 Jupyter Notebook,建议安装Anaconda3. 最好是到https://www.kaggle.com注册账号后,运行下第四章的代码,感受下. 监督学习: 2.1.1分类学习(Cla

python机器学习实战(四)

python机器学习实战(四) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7364317.html 前言 这篇notebook是关于机器学习中logistic回归,内容包括基于logistic回归和sigmoid分类,基于最优化方法的最佳系数确定,从疝气病症预测病马的死亡率.操作系统:ubuntu14.04  运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码   noteb

python机器学习实战(一)

python机器学习实战(一) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7140974.html  前言 这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统.操作系统:ubuntu14.04    运行环境:anaconda-python2.7-notebook    参考书籍:机器学习实战      notebook  writer ----方阳  k-

Python机器学习:5.6 使用核PCA进行非线性映射

许多机器学习算法都有一个假设:输入数据要是线性可分的.感知机算法必须针对完全线性可分数据才能收敛.考虑到噪音,Adalien.逻辑斯蒂回归和SVM并不会要求数据完全线性可分. 但是现实生活中有大量的非线性数据,此时用于降维的线性转换手段比如PCA和LDA效果就不会太好.这一节我们学习PCA的核化版本,核PCA.这里的"核"与核SVM相近. 运用核PCA,我们能将非线性可分的数据转换到新的.低维度的特征子空间,然后运用线性分类器解决. 核函数和核技巧 还记得在核SVM那里,我们讲过解决非

Python机器学习中文版

Python机器学习简介 第一章 让计算机从数据中学习 将数据转化为知识 三类机器学习算法 第二章 训练机器学习分类算法 透过人工神经元一窥早期机器学习历史 使用Python实现感知机算法 基于Iris数据集训练感知机模型 自适应线性神经元及收敛问题 Python实现自适应线性神经元 大规模机器学习和随机梯度下降 第三章 使用Scikit-learn进行分类器之旅 如何选择合适的分类器算法 scikit-learn之旅 逻辑斯蒂回归对类别概率建模 使用正则化解决过拟合 支持向量机 使用松弛变量解

Python机器学习:6.3 使用学习曲线和验证曲线 调试算法

这一节我们学习两个非常有用的诊断方法,可以用来提高算法的表现.他们就是学习曲线(learning curve)和验证曲线(validation curve).学习曲线可以判断学习算法是否过拟合或者欠拟合. 使用学习曲线判别偏差和方差问题 如果一个模型相对于训练集来说过于复杂,比如参数太多,则模型很可能过拟合.避免过拟合的手段包含增大训练集,但这是不容易做到的.通过画出不同训练集大小对应的训练集和验证集准确率,我们能够很轻松滴检测模型是否方差偏高或偏差过高,以及增大训练集是否有用. 上图的左上角子

《Python机器学习基础教程》高清版免费PDF下载

Python机器学习基础教程-[德] 安德里亚斯·穆勒(Andreas C.Müller)[美]莎拉·吉多(Sarah Guido) 著,张亮(hysic) 译 下载地址1:网盘下载 下载地址2:网盘下载 内容简介本书是机器学习入门书,以Python语言介绍.主要内容包括:机器学习的基本概念及其应用:实践中常用的机器学习算法以及这些算法的优缺点:在机器学习中待处理数据的呈现方式的重要性,以及应重点关注数据的哪些方面:模型评估和调参的方法,重点讲解交叉验证和网格搜索:管道的概念:如何将前面各章的方

Python机器学习和常见算法

Python机器学习 学习意味着通过学习或经验获得知识或技能.基于此,我们可以定义机器学习(ML)如下 - 它可以被定义为计算机科学领域,更具体地说是人工智能的应用,其为计算机系统提供了学习数据和从经验改进而无需明确编程的能力. 基本上,机器学习的主要焦点是允许计算机自动学习而无需人为干预.现在问题是如何开始和完成这种学习?它可以从数据的观察开始.数据可以是一些示例,指令或一些直接经验.然后在此输入的基础上,通过查找数据中的某些模式,机器可以做出更好的决策. 机器学习类型(ML) 机器学习算法帮