幻象客 - 博客分类页面

    [准确率:98%] 改进朴素贝叶斯自动分类食品安全新闻


    in Python , 机器学习 , 神经网络及深度学习 , 程序语言 , 算法 2018-11-29

    这是本系列第二篇文章,位于源代码的 2. NB_Weights 中:

    https://github.com/Ckend/NLP_DeepLearning_CN_Tutorial

    前一篇文章中,我们学习了如何使用朴素贝叶斯自动分类食品安全新闻,准确率为97%,这一篇文章将教大家如何改进这个模型。阅读本篇文章之前,建议先阅读前一篇文章:[准确率:97%] 朴素贝叶斯自动分类食品安全新闻,否则有些概念可能无法理解。

    在那篇文章中,在训练的时候,朴素贝叶斯模型中所有词语都是相同的权重,而事实上真的如此吗?我们怎么样才可以知道哪些词语更加重要呢?这时候,数理统计就派上用场了。

    我们先对所有的食品安全新闻和非食品安全新闻使用结巴(jieba)分词, 然后统计各个词性在这分别在这两个类别中的数量,比如说名词的结果如下表(使用SPSS得到,其他词性就不一一展示了),显然食品安全新闻中名词的数量多于非食品安全新闻,这也是在人意料之中的结果,但是这并不代表着对于食品安全新闻,名词的重要性就大于其他的词性:

    改进朴素贝叶斯-1

    那么如何确定各个词性对分类的重要性呢?单纯根据频率和频数确定是比较复杂的,我们可以尝试使用我们的模型,比如说,先得到一个基准的准确值,然后尝试去除掉名词得到一个准确值,观察这两个准确值的差距,如果非常大,说明名词具有比较重要的地位。我们可以试一下:

    在所有词性权重都为1的情况下(基准)进行训练

    阅读更多...

    爬取淘宝某关键词的所有商品及其信息


    in Python , 爬虫 , 程序语言 2018-11-24

    源代码:https://github.com/Ckend/taobao_scrapy

    语言:Python3

    爬取平台:手机端

    PS:在当前文件夹下先创建好result文件夹

    源代码包含两个Python文件,get_items.py 用于通过关键词获得商品基本信息,包括商品名称、店铺、销量、评论数、图片、优惠、出货地、原价等等。输出格式为.csv文件。

    另一个Python文件: get_review_cloud.py 用于通过userID和itemID (从get_items.py中获得这两个信息) 获得某商品的评论云。输出.csv文件。

    源代码很简单,十几行,逻辑如下:

    1. 访问接口(f=urllib.request.urlopen(url))

    2. 读取源代码并解码为utf-8然后转化为json

    3. 写入至.csv文件。

    以下给出get_items.py的内容,其他的请见GitHub,如果你有收获,请帮忙点个Star~

    get_items.py:

    
    import urllib.request
    
    import urllib.parse
    
    import json
    
    import csv
    
    def write_csv(data, filename):
    
        count = 0
    
        with open(filename, 'a') as outf:
    
            dw...

    阅读更多...

    [准确率:97%] 朴素贝叶斯自动分类食品安全新闻


    in Python , 机器学习 , 算法 2018-11-08

    教程源代码点击阅读原文或访问:

    https://github.com/Ckend/NLP_DeepLearning_CN_Tutorial

    利用朴素贝叶斯来分类食品安全新闻(标题)这种短文本其实精确度并不高,在实际的生产中,由于食品安全和非食品安全的数量差异,我们会发现1000条新闻中可能才出现2条食品安全新闻,也就是说,即便你的模型准确率为95%,1000条新闻中依然会有许多新闻 (50条) 会被错分类,这是一个非常糟糕的结果。因此在生产环境中,如果模型准确率不能高达99%,甚至都无法使用。在我们的研究下,使用朴素贝叶斯,我们的准确率能提高到97%,使用改进的朴素贝叶斯准确率能达到98%以上,使用字符级的卷积神经网络甚至能达到99%,后续的教程我会介绍这两种方法。

    为了后续的教程,我们还是先利用最简单的朴素贝叶斯来理解“训练”这个概念。为了尽量简化教程的难度,我尽量不使用数学公式进行讲解,更多的以自然语言和Python代码进行分析。在这个教程中,你所需要的东西有:

    python 3

    jieba 分词

    numpy

    sklearn (用joiblib保存模型)

    训练

    朴素贝叶斯的训练,其实就是遍历整个训练集,算出每个词语在不同的分类下出现的概率(该词语/该分类总词数)。最后得到两个向量,这两个向量分别代表了每个词语在食品安全新闻和非食品安全新闻中出现的概率。

    for i in r...

    阅读更多...

    利用股市找到已有或潜在食品安全问题的上市企业


    in Python , 程序语言 , 算法 , 闲谈 2018-05-26

    当某个股票保持下跌的时候,你可以肯定该股票一定有什么地方不对,要么是它的市场,要么是它的公司。——利弗莫尔

    最近食品安全项目成功升到国家级,对我而言真的是个挑战,无论是朴素贝叶斯分类新闻还是数据分析其实都到了瓶颈阶段(即便过了瓶颈还有瓶盖),真的是绞尽脑汁都不知道问题出现在哪里。因此想换一个思路,结合自己最近的研究,提出了这个比较新颖的想法:利用股票市场找到已有或潜在食品安全问题的企业。

    为什么会有这个想法呢?我们知道食品安全事故发生的时间点和媒体报道的时间点之间实际上是有一个间隔的,然而相关利益人士、内部人士却能提前知道事件的发生。比如说,2012年11月19日,酒鬼酒被国家质检总局爆出塑化剂超标247%,但是在19号之前,酒鬼酒的收盘价却神奇地从2012年11月2日的55元回落到2012年11月16号的46元。然而国家质检总局的消息是在2012年11月19号才发布的。而且这样的下跌,明显违背该股票当时上涨的趋势,在10月底时,它的股价已突破周K的压力线,却很不自然地下跌了?而且还违背了许多技术指标,如1号、14号、16号,KDJ和BOLL指标明显提示上涨,在股市这种情绪化的市场中,有人却不为所动,仍然售出大量股票导致其不正常下跌。

    股市 食品安全

    2012年11月19号消息公布时紧急停牌,复牌后有三个跌停,股价暴跌48%,但我相信某些人已经成功躲开了这场股灾。

    找到已有或潜在食品安全问题

    阅读更多...

    使用决策树判断各种标准对新生加入社团的影响


    in Python , 机器学习 , 程序语言 , 算法 2017-09-23

    决策树 新生 社团 加入 标准

    倘若我们拥有许多数据,而且能够恰当地使用决策树,我相信将能创造不小的价值

    由于微信编辑器的问题,没办法上传源代码上来若您需要源代码进行参考请访问https://alltoshare.com/dt_judge/

    在尝试的过程中,您或许会发现很多问题,比如Python中文编码问题,matplotlib编码问题等等,希望在这过程中您可以妥善地利用搜索引擎解决问题

    其实决策树的应用非常广泛,尤其是在预测方面,我所介绍的不过其冰山一角。更详细的参考文献,请看维基百科https://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91

    幻象客 二维码

    阅读更多...

    使用BeautifulSoup爬取新浪所有国内要闻


    in Python , 爬虫 , 程序语言 2017-09-10

    教你如何用beautifulSoup和lxml解析器爬取新浪新闻

    阅读更多...

    使用python破解一些密码问题的例子


    in Python , 程序语言 2017-02-23

    这是pythonchallenge上的第二关,比较简单。

    题目给了下面这个HINT:

    Python 破解密码

    以及一串看起来很乱的字母:

    g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyr

    q ufyr amknsrcpq ypcdmp. bmgle gr gl zw fyl

    b gq glcddgagclr ylb rfyr'q ufw rfgq rcvr g

    q qm jmle. sqgle qrpgle.kyicrpylq() gq pcam

    kkclbcb. lmu ynnjw ml rfc spj.

    根据图片里的规律,我们得知其是字母向右移动两位。那么原文也就是ASCII码减二的加密方式。这就是凯撒密码。

    你如果有耐心的话,可以一个一个的往右移两个字母,从而得出答案。但我们应该更追求更高效的方法。

    Python中有这样的两个函数:

    ord():返回一个字符的ASCII码

    chr():获取一个ASCII码,将它转换为字符

    我们或许可以利用这两个函数解密。

    核心代码:

    for each in text:
    
        if ord(each) >= ord('a') and ord(each) <= ord('z'):
    
            answer = answer + chr(ord(each) + 2)

    代码意思是这样的:检测字符串内的每一个字符,若它是小

    阅读更多...

    使用“向量空间搜索引擎”做字符识别


    in Python , 程序语言 2017-02-09

    参考文档:http://ondoc.logand.com/d/2697/pdf

    不要被这标题吓到了,其实核心内容非常简单。

    如果我们想要确认验证码是什么,就要有一个识别图片字符的过程。我们这里使用向量空间搜索引擎进行识别。

    参考文档中举了一个例子。三篇文章中cat,dog,mouse出现的频率分别是(3,1,4),(1,2,5),(2,3,0).那怎么计算哪两篇比较相似呢?

    参考文档给了一个解决方案是将文章cat、dog、mouse出现的频率看做“向量”,然后计算两个向量之间的余弦值(cos),越接近1则越相似。

    cos<文章1,文章2> = 0.895

    cos<文章2,文章3> = 0.405

    cos<文章1,文章3> = 0.490

    因此可以看出文章1和文章2更相似。

    把它转化成python代码:

    class VectorCMP:
    
        def ValueOfVector(self,Vector):
    
            total = 0.0
    
            for count in Vector.items():
    
                total = total + count ** 2
    
            return math.sqrt(total)
    
        def relation(self,Vector1,Vector2):
    
            DotP...

    阅读更多...

    使用python求出图片每一个像素的RGB颜色


    in Python , 程序语言 2017-02-07

    使用Python识别出图片中的每个像素的颜色,能够用来攻克验证码。

    阅读更多...

    爬虫抓取个人课表


    in Python , 爬虫 , 程序语言 2017-01-09

    今天突发奇想爬了一次课表。或许以后会有大作用。

    语言:python包:BeautifulSoup,requests, re.

    除了re,其他的都是以前讲过的,可以参加之前的推送:<技术向>爬取一个网站的信息

    re是python进行正则表达式所需要的包,我们爬取完课表需要用正则表达式进行格式化。

    下面开始呗。

    我们需要先得到cookie、User-Agent、Referer.Referer参数的作用:告诉服务器我是从哪个页面链接过来的User-Agent参数的作用:判断客户端使用的是什么浏览器的版本及类型

    首先登录你的教务网站,提取Cookie和User-Agent信息:

    爬虫抓取个人课表

    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36''Cookie': 'ASP.NET_SessionId=dvzzem55duqbn245omfbmi55'

    然后我们还需要课表网站的链接,右键学生个人课表,复制链接地址:

    http://jwc.scnu.edu.cn/xskbcx.aspx?xh='这里会是你的学号'&xm='你的名字'&gnmkdm=N121603

    接下来就可以正式开始了:

    首先引入包

    from bs...

    阅读更多...