ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

wordcloud使用

2019-06-24 18:42:05  阅读:394  来源: 互联网

标签:count plt attribute wordcloud dict 使用 line id2name


 

学了下怎么用wordcloud。

以imet的数据集为例

https://www.kaggle.com/c/imet-2019-fgvc6

读取“train.csv”,”label.csv”文件,得到id2name[] (label的id和label名称对应) 和 attribute_count(label出现次数统计)两个dict。

import matplotlib.pyplot as plt
import numpy as np import osimport csv

lines=csv.reader(open("train.csv"))
train_content = []
head_row =next(lines)
for line in lines:
    train_content.append(line)

attribute_ids = []
for line in train_content:
    attributes = line[1].split()
    for a in attributes:
        attribute_ids.append(a)

lines=csv.reader(open("labels.csv"))
attribute_content = []
head_row =next(lines)
for line in lines:
    attribute_content.append(line)
id2name = {}
for line in attribute_content:
    if line[0] not in id2name:
        id2name.update({line[0]:line[1]})
def count_list(lt):
    d={}
    for i in lt:
        if (i in d.keys()):
            continue
        count = lt.count(i)
        d[i] = count
    return d
attribute_count = count_list(attribute_ids)

对attribute_count进行排序,输出出现次数较多的标签(前十个)

sorted_attribute= sorted(attribute_count.items(),key = lambda item :item[1],reverse = True)
for i in range(10):
    print (sorted_attribute[i][0],':   ',id2name[sorted_attribute[i][0]])
    print (sorted_attribute[i][1])

结果为

然而这样还不够直观,使用wordcloud可以更直观展示词频。

需要的python库

seaborn、wordcloud

准备好dict

culture_count_dict = {}
tag_count_dict = {}
for i in range(1103):
    idx = str(i)
    if (id2name[idx][0:5] == 'tag::'):
        tag_count_dict.update({id2name[idx][5:]:attribute_count[idx]})
    else:
        culture_count_dict.update({id2name[idx][9:]:attribute_count[idx]})

  wordcloud 生成图像

import seaborn as sns
from wordcloud import WordCloud

culture_cloud = WordCloud(background_color='Black', colormap='Paired', width=1600, height=800, random_state=123).generate_from_frequencies(culture_count_dict)
tag_cloud = WordCloud(background_color='Black', colormap='Paired', width=1600, height=800, random_state=123).generate_from_frequencies(tag_count_dict)

plt.figure(figsize=(24,24))
plt.subplot(211)
plt.imshow(culture_cloud,interpolation='bilinear')
plt.axis('off')

plt.subplot(212)
plt.imshow(tag_cloud, interpolation='bilinear')
plt.axis('off')

plt.tight_layout()
plt.show()

 

标签:count,plt,attribute,wordcloud,dict,使用,line,id2name
来源: https://www.cnblogs.com/smartweed/p/11078722.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有