标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。