或许,只有我在坐地铁的时候才有时间去写一点东西。最近来到了新的公司,我们老大是做AI的,很荣幸我能加入到这个团队,这个方向也是我非常喜欢的,这一点很难得,还有一点我觉得很难得的就是现在的业务都是做金融,顺便恶补一下这方面的知识。
每天早晨7点起床,做一趟公交,换乘2趟地铁,历经一个半小时才到公司。。。高峰期在地铁上胳膊都抬不起来。其实蛮好的,这一段时间也是一个学习的机会,可以看一些资料作为自己每日的提升。前几天准备写一个spring mvc源码分析的文章,最近因为租房等一系列事情也就搁置了。寒假回家写吧,顺便把论文也好好整理一下。
说一说最近做的事情吧,最近几天在做金融数据的分析。主要是把变化比较大的股票信息给爬取下来,然后先存到数据库中。然后再去爬一些这些股票北后公司最近发布的信息。因为股票的涨跌和公司公布的心意有很大的关系。最后需要建立一个模型,当然模型建立的时候离不开样本数据。这里的样本数据就是我们爬的数据,然后把数据分成两份,一份是训练集,另一份是测试集。
然后模型建立好以后,当我往模型中通入一条新的数据的时候,比如某公司发布的消息,那么模型就会给出一个结果,该公司对应的股票是跌还是涨。因为公司一般都是先发布信息,所以让机器帮我们去做预测是个很好的idea。如今在互联网金融里面,AI选股已成为一种趋势。
但是把上面这个做好并不是一件简单的事情,没有一个多月以及经过几个版本的迭代不会有好结果。
爬虫用的pyspider,国人做的一个开源的爬虫库,很好用。但是今天遇到了一个问题,不过这个问题和框架没有关系。问题是这样的,因为我要爬特定的数据,所以我需要先获取整个html页面,然后再做其他处理,简单的页面数据都很好取,先获取整个dom,然后一层层提取,或者用选择器提取就可以了,框架里自带的这个提取库,类似于jquery,只不过这里放在了python中调用解析html。但是我去爬另一个页面的时候,发现页面上有数据,但是页面源码没有,想了一下这些数据应该是异步加载的,应该是页面加载的时候通过ajax来调用的。既然数据不在页面,那异步调用肯定有接口,对我来说应该是好事情,但是看了接口本以为返回的是json,其实开始我当成json来解析了,发现有问题,没办法,调试的时候发现返回的的确有json数据,只不过返回的是一个语句,var str=json数据,卧槽,真尼玛坑,也没去细看网页是如何处理这个语句的,我直接处理这个语句,先split一下,然后取第二个,因为split返回的是字符串数组,去其中的第二个就是一个字符串,然后调用python中把字符串转换成json的一个方法,叫做json.loads,不过调试的时候出错,把错误信息贴到google,提示json合适不对,我就先把string打印出来,觉得没问题,然后又把这个json字符串copy到网页中的在线json格式化工具中,发现还是没问题。查了N多资料,还是没什么头绪,最后我又仔细看了一下json字符串,发现key上面没有双引号,我也是醉了。最后得知,python解析json字符串的时候,key和value必须被双引号围起来。还好key就两个,也没有递归嵌套,所以replace加了双引号,最后调用json.loads才解析成json。本以为没事了,但是字符编码问题又出来了,尝试各种decode和encode都不行,最后就回来了。其实机器学习最难处理的就是数据,最重要的也是数据,一个是数据量,一个是数据的质量,反正这些坑肯定是要走的,step by step吧,今天在公司打了三局台球,哈哈,赢了一局。