机器学习入门-文本数据-使用聚类增加文本的标签属性

通过对特征做一个kmeans聚类,将聚类的结果做为文本的标签值,可以使得样本的特征更多

我们从sklearn.cluster中导入Kmeans建立模型进行聚类

代码:

第一步:使用Dataframe格式化数据和使用数据格式化数据

第二步:对字符串进行分词和去除停用词,并使用‘ ‘.join完成连接

第三步:使用np.vectorizer向量化函数,调用函数进行分词和去除停用词

第四步:使用Tfidfvectorizer构造词袋模型

第五步:使用cosine_similarity构造相关性矩阵

第六步:对相关性矩阵进行聚类操作,将增加的聚类标签添加到原始数据中

import pandas as pd
import numpy as np
import re
import nltk #pip install nltk

corpus = [‘The sky is blue and beautiful.‘,
          ‘Love this blue and beautiful sky!‘,
          ‘The quick brown fox jumps over the lazy dog.‘,
          ‘The brown fox is quick and the blue dog is lazy!‘,
          ‘The sky is very blue and the sky is very beautiful today‘,
          ‘The dog is lazy but the brown fox is quick!‘
]

labels = [‘weather‘, ‘weather‘, ‘animals‘, ‘animals‘, ‘weather‘, ‘animals‘]

# 第一步:构建DataFrame格式数据
corpus = np.array(corpus)
corpus_df = pd.DataFrame({‘Document‘: corpus, ‘categoray‘: labels})

# 第二步:构建函数进行分词和停用词的去除
# 载入英文的停用词表
stopwords = nltk.corpus.stopwords.words(‘english‘)
# 建立词分割模型
cut_model = nltk.WordPunctTokenizer()
# 定义分词和停用词去除的函数
def Normalize_corpus(doc):
    # 去除字符串中结尾的标点符号
    doc = re.sub(r‘[^a-zA-Z0-9\s]‘, ‘‘, string=doc)
    # 是字符串变小写格式
    doc = doc.lower()
    # 去除字符串两边的空格
    doc = doc.strip()
    # 进行分词操作
    tokens = cut_model.tokenize(doc)
    # 使用停止用词表去除停用词
    doc = [token for token in tokens if token not in stopwords]
    # 将去除停用词后的字符串使用‘ ‘连接,为了接下来的词袋模型做准备
    doc = ‘ ‘.join(doc)

    return doc

# 第三步:向量化函数和调用函数
# 向量化函数,当输入一个列表时,列表里的数将被一个一个输入,最后返回也是一个个列表的输出
Normalize_corpus = np.vectorize(Normalize_corpus)
# 调用函数进行分词和去除停用词
corpus_norm = Normalize_corpus(corpus)

# 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
from sklearn.feature_extraction.text import TfidfVectorizer

Tf = TfidfVectorizer(use_idf=True)
Tf.fit(corpus_norm)
vocs = Tf.get_feature_names()
corpus_array = Tf.transform(corpus_norm).toarray()
corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
print(corpus_norm_df.head())
# 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
from sklearn.feature_extraction.text import TfidfVectorizer

Tf = TfidfVectorizer(use_idf=True)
Tf.fit(corpus_norm)
vocs = Tf.get_feature_names()
corpus_array = Tf.transform(corpus_norm).toarray()
corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
print(corpus_norm_df.head())

# 第五步:使用cosine_similarity构造相关性矩阵
from sklearn.metrics.pairwise import cosine_similarity

similarity_matrix = cosine_similarity(corpus_array)
similarity_matrix_df = pd.DataFrame(similarity_matrix)

# 第六步:构造聚类特征,这里主要是对相关性矩阵做的一种聚类,也可以对词袋模型特征做

from sklearn.cluster import KMeans

model = KMeans(n_clusters=2)
model.fit(np.array(similarity_matrix))
print(model.labels_)
corpus_norm_df[‘k_labels‘] = np.array(model.labels_)
print(corpus_norm_df.head())

原文地址:https://www.cnblogs.com/my-love-is-python/p/10325326.html

时间: 2024-08-09 10:13:50

机器学习入门-文本数据-使用聚类增加文本的标签属性的相关文章

Tensorflow机器学习入门——读取数据

TensorFlow 中可以通过三种方式读取数据: 一.通过feed_dict传递数据: input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.multiply(input1, input2) with tf.Session() as sess: feed_dict={input1: [[7.,2.]], input2: [[2.],[3.]]} print(sess.run(out

机器学习入门-文本数据-构造词频词袋模型 1.re.sub(进行字符串的替换) 2.nltk.corpus.stopwords.words(获得停用词表) 3.nltk.WordPunctTokenizer(对字符串进行分词操作) 4.np.vectorize(对函数进行向量化) 5. CountVectorizer(构建词频的词袋模型)

函数说明: 1. re.sub(r'[^a-zA-Z0-9\s]', repl='', sting=string)  用于进行字符串的替换,这里我们用来去除标点符号 参数说明:r'[^a-zA-Z0-9\s]' 配对的模式,^表示起始位置,\s表示终止位置,[]表示取中间部分,这个的意思是找出除字符串大小写或者数字组成以外的东西,repl表示使用什么进行替换,这里使用'',即直接替换,string表示输入的字符串 2. stopwords = nltk.corpus.stopwords.word

文本数据的机器学习自动分类方法(转)

http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类."文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程"(达观数据科技联合创始人,张健).文本分类有着广泛的应用场景,例如: 新闻网站包含大量报道文章,基于文章内容,

机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count=min_count, window=window, sample=sample) 参数说明:corpus_token已经进行切分的列表数据,数据格式是list of list , size表示的是特征向量的维度,即映射的维度, min_count表示最小的计数词,如果小于这个数的词,将不进行统计,

文本数据的机器学习自动分类方法

文本数据的机器学习自动分类方法(上): http://www.infoq.com/cn/articles/machine-learning-automatic-classification-of-text-data?utm_source=tuicool&utm_medium=referral 文本数据的机器学习自动分类方法(下): http://www.infoq.com/cn/articles/machine-learning-automatic-classification-of-text-

《机器学习系统设计》之应用scikit-learn做文本分类(上)

前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源:http://download.csdn.net/detail/solomon1558/8971649 第3章通过词袋模型+K均值聚类实现相关文本的匹配.本文主要讲解文本预处理部分内容,涉及切分文本.数据清洗.计算TF-IDF值等内容. 1. 统计词语 使用一个

《机器学习系统设计》之应用scikit-learn做文本分类(下)

前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源:http://download.csdn.net/detail/solomon1558/8971649 第3章通过词袋模型+K均值聚类实现相关文本的匹配.本文主要讲解K-均值聚类相关知识以及在20newsgroup数据集上使用K-均值聚类进行测试.     相关

商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

UEditor富文本编辑器:http://ueditor.baidu.com/website/ 相应页面展示: 商品添加: 商品修改: 前台商品展示: 商品表建表语句: 1 create table TEST.GOODS_TABLE 2 ( 3 gid NUMBER not null, 4 gname VARCHAR2(90), 5 gdetails CLOB, 6 gpicture VARCHAR2(100), 7 gprice NUMBER, 8 gleixing NUMBER, 9 gpi

机器学习入门之五:机器学习的应用--大数据(转载)

转自 飞鸟各投林 说完机器学习的方法,下面要谈一谈机器学习的应用了.无疑,在2010年以前,机器学习的应用在某些特定领域发挥了巨大的作用,如车牌识别,网络攻击防范,手写字符识别等等.但是,从2010年以后,随着大数据概念的兴起, 机器学习大量的应用都与大数据高度耦合,几乎可以认为大数据是机器学习应用的最佳场景. 譬如,但凡你能找到的介绍大数据魔力的文章,都会说大数据如何准确准确预测到了某些事.例如经典的Google利用大数据预测了H1N1在美国某小镇的爆发. 这些实在太神奇了,那么究竟是什么原因