大数跨境
0
0

机器学习之Python在垃圾分类中的小应用

机器学习之Python在垃圾分类中的小应用 数据皮皮侠
2019-10-20
0
导读:震惊!垃圾分类居然能用python搞定!


是什么垃圾呢?

自2019年7月1日开始,各大媒体上突然出现了上海市人民群众围绕“垃圾分类”发生的各种故事。上海群众已经身先士卒帮我们“内测”了一下垃圾分类功能。但是现在全国范围内已经要开始“公测”啦。


其实自20世纪60年代以来,世界范围内的环境污染与生态破坏日益严重,环境问题和环境保护逐渐为国际社会所关注。进入21世纪,全球的环保建设已经提上日程。目前的中国虽是世界第二大经济体,却面临着严重的资源浪费及环境污染问题。我国目前不仅积极培养环境工程人才,推进环保研究,也开始尝试从政策方面引导居民提高环保意识。


作为我国“身先士卒”的第一批居民,上海市人民群众最直观的感受就是每天早上拎着袋垃圾下楼,朝垃圾厢房走去。总会有个阿姨守候在那里,并发出“直击灵魂的拷问”——“你是什么垃圾?”







垃圾如何分类成为了当下一个重点话题,你会分类吗?你是怎么分类呢?万能的网友甚至总结了一首猪记“能吃的叫湿垃圾,都不吃的叫干垃圾,吃了会死的叫有害垃圾,能卖钱换的叫可回收垃圾。



但是,即便有了顺口溜,也依旧无法完全解决大家的大量生活垃圾分类问题。所以近日,苹果公司推出了一款针对垃圾分类的限免APP---“垃圾分类助手”,这款App旨在帮助大家更好的进行垃圾分类。该软件加入Core ML机器学习训练智能识别模型,识别准确率高达90%(未查到准确率确定标准,经实际使用检测30余次后,准确率未达90%,故存疑)左右。只需要对着垃圾照一张,就可以识别。

PS:需要注意的是别对着自己照一张。

在试用过华为的三款垃圾分类app和苹果的三款垃圾分类app 后,发现图像及语音识别的垃圾分类内容有限,垃圾分类app的可学习资源有限,那我们换一换可操作的学习方向



打开现代(总是缺钱)年轻人的最流行学习途径——b站,搜索“垃圾分类”,上来就有“在上海丢人的正确姿势”;当然,此丢人非彼丢人,指的是丢垃圾的丢。点开一看两个萌妹子(AI)对口相声,阐述如何进行垃圾分类。


视频链接:

https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/av57129646%3Ffrom%3Dsearch%26seid%3D9101123388170190749


视频很好玩,弹幕感觉更好玩!独乐乐不如众乐乐,可以用python把弹幕保存下来,做个词云图耶



制作词云图步骤



01    

通过<F12>开发调试工具,

查询这条视频的弹幕的cid数据。


02  

拿到cid,填入以下链接中

http://comment.bilibili.com/{cid}.xml


03    

打开,可看见该视频弹幕列表


04    

保存弹幕数据到本

方便进一步加工处理

如制作成词云图进行展示。


05    

代码实现

获取网页的请求:使用requests模块;

解析网址借助:beautifulsoup4模块;

保存为CSV数据:借用pandas模块


06    

模块安装好后,进行导入

因为读取文件用了panda模块,所以一并导入即可


07    

自行选择一张图片,

并基于此图片来生成一张定制的词云图。

定义词云图样式。

代码如下:



import requestsimport matplotlib.pyplot as pltimport pandas as pdimport jiebaimport tracebackfrom lxml import etreefrom wordcloud import WordCloud, ImageColorGenerator
# 获取弹幕数据并保存本地csv文件
def getWords2locals(comment_cid):
try:
# 请求弹幕数据
base_url = 'http://comment.bilibili.com/{}.xml'
now_url = base_url.format(comment_cid)
res = requests.get(now_url)
xml_dom = etree.XML(res.content)
comment_list = xml_dom.xpath('//d/text()')
# 解析弹幕数据 comments = [comment for comment in comment_list]
    comments_dict = {'comments': comments} 
# 将弹幕数据保存在本地
br = pd.DataFrame(comments_dict)
wordFile_name = str(comment_id) + '.csv'
br.to_csv(wordFile_name, encoding='utf-8')
# 调用制作词云的函数     makeWordClound(wordFile_name)
except:
print('获取弹幕数据发生错误', traceback.format_exc())

# 读取得到的弹幕并制作词云图
def makeWordClound(wordFileName):
try:
# 加载背景图
mask_img = plt.imread('timg.jpg')

'''设置词云样式'''
wc = WordCloud(
# 设置字体
font_path='/Users/zhanghuining/Desktop/msyh.ttf',
# 允许最大词汇量
max_words=200000,
# 设置最大号字体大小
max_font_size=80,
# 设置使用的背景图片
mask=mask_img,
# 设置输出的图片背景色
background_color=None, mode="RGBA",
# 设置有多少种随机生成状态,即有多少种配色方案
random_state=30) # 读取文件内容
br = pd.read_csv(wordFileName, header=None)
text = ' ' for line in br[1]:
text += ' '.join(jieba.cut(line, cut_all=False))
# 打印用于制作词云的字符串
print(text)
# 生成词云 wc.generate_from_text(text)
# 改变字体颜色
img_colors = ImageColorGenerator(mask_img)
# 字体颜色为背景图片的颜色
wc.recolor(color_func=img_colors)
# 显示词云图
plt.imshow(wc)
# 关闭坐标轴
plt.axis('off') # 将图片保存到本地
clound_id = wordFileName.split('.')[0]
wordClound_name = clound_id + '.png'
wc.to_file(wordClound_name)
print('生成词云图成功!')
except:
error = traceback.format_exc()
print('制作词云图片时发送错误 ---错误信息', error)
if 'cannot open resource' in error:
print('可能是font_path参数错误,请设置当前系统中已有的字体,并且是支持中文的')

if __name__ == '__main__': # 99768393---->弹幕id comment_id = input('请输入弹幕id:')
  getWords2locals(comment_id)


08    

效果图


图参考文章:知乎之《震惊!垃圾分类居然能用python搞定》



虽然垃圾分类带来了一定麻烦,一片哀声,但当提出撤垃圾分类桶时,有百分之九十以上的人是反对的。为了我们的蓝天白云、青山绿水,垃圾分类还是值得被肯定的,分清垃圾分类还是需要学习。“垃圾分类之路漫漫其修远兮,为了美好明天的我们将上下而求索”

 

小课外:听说同样来自苹果公司的人工智能语音系统Siri 其实加剧了全球变暖,感兴趣的同学欢迎在“知乎”搜索“Siri 加剧了全球变暖,你知错吗?”进一步了解呀~






本期作者:范诗悦

本期编辑校对:李嘉楠


扫描左侧二维码

发现更多精彩内容~

【声明】内容源于网络
0
0
数据皮皮侠
社科数据综合服务中心,立志服务百千万社科学者
内容 2137
粉丝 0
数据皮皮侠 社科数据综合服务中心,立志服务百千万社科学者
总阅读615
粉丝0
内容2.1k