学了下怎么用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()

最新文章

  1. Docker上ubuntu新建用户的网络访问不通问题
  2. command shell 的知识整理
  3. Visual Studio(VS2012) Project&(Solution) 虚拟文件夹 & 物理文件夹
  4. Android Studio tips1
  5. [模板]tarjan求强连通分量
  6. 微信自定义菜单说php json_encode不转义中文汉字的方法
  7. OpenCV_轮廓的查找、表达、绘制、特性及匹配
  8. Asp.net中全局缓存的几种方式
  9. Yet Another Scheme Introduction学习
  10. mojo 默认use utf8;
  11. PHP中array_merge函数与array+array的区别
  12. Linux OpenSSH后门的添加与防范
  13. HttpInvoker http请求工具类
  14. Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql
  15. 获得32位UUID字符串和指定数目的UUID
  16. ADO.NET介绍2
  17. Asp.net 中高亮显示搜索关键字简单方法
  18. [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性
  19. Kotlin------数据类型和语法
  20. Shiro的 rememberMe 功能使用指导(为什么rememberMe设置了没作用?)

热门文章

  1. Winform打砖块游戏制作step by step第三节---移动挡板
  2. Android-Adapter-View复用机制
  3. DirectoryServicesCOMException
  4. 基本数据类型,包装类型,String类型数据之间的转换
  5. CURL简单使用
  6. functor
  7. Node.js模块导出exports 和 module.exports 的区别
  8. 2017.4.18 慕课网-spring事务管理总结
  9. Android 完美退出 App 方法
  10. 页面加载后累加,自加1&&判断数字是否为两位数