tensorflow初体验
这两年人工智能火得一塌糊涂。微信公众号、技术APP等推送了好多 google 开源的 tensorflow 的内容。
这两天接触了 tensorflow ,跟着网上的资料跑了下程序,发现真的是使用门槛超低,方便我这种数学没学好、人工智能零基础的学渣应用深度学习。
安装
在我的 Macbook Pro 上进行的测试,直接使用 pip 来安装:
pip install tensorflow --user
另外搜索到了一个更高层次封装 tensorflow 的 tflearn
pip install --upgrade git+https://github.com/tflearn/tflearn.git --user
示例
tflearn 有个 quickstart 示例,使用了 titanic 乘客存活的数据集,通过预处理数据、建立深度神经网络、训练样本得出模型,然后模拟 jack 和 rose 的存活率,挺有意思的。
直接拷贝 quickstart 最后的 source code 下来运行即可,结果如下:
DiCaprio Surviving Rate: 0.144554823637
Winslet Surviving Rate: 0.908187091351
每次运行,其实结果不是一样的,但是 rose 从来没有低过 80% ,而 jack 从来没有高于 20% , 可怜的小李子!
改造上面的示例
我的上篇文章提到了收集了好几年的广州市菜篮子,最后提到了空心菜的价格与天气情况息息相关,所以这次我顺便收集了这几年广州的天气情况,使用这些天气数据,结合空心菜价格,看看能不能利用 tflearn 建立价格与天气的模型,然后根据天气来预测空心菜的价格。
天气数据收集
历史数据比较难找,最后抓取了这个网站,从 2013-01-01 到 2016-12-31 的数据,整理成如下格式:
2016-12-31,21,11,0
第一列是日期,第二列是当天最高温度,第三列是最低温度,最后一列是是否下雨,0 表示不下雨, 1 表示下雨。为什么要关注是否下雨,是因为生活经验告诉我们,连续的雨天菜价会大概率飙升。
整理数据集
因为菜价通常是联系到前一天的天气 (毕竟菜是前一天收割的吧) ,因此我取了 2013-01-02 到 2017-01-01 的空心菜价格数据,整合最后的数据集格式如下:
0,24,18,0
1,11,9,1
前面的第一列表示当天的价格是否超过了 7.7 元/公斤 (为什么是这个数?其实只是为了方便我验证),超过了为 1,没超过为 0。第二到第四列分别为前一天的最高温度、最低温度和是否有雨。
修改示例程序
- 由于上一步已经整理好的数据,不需要 ignore 不必要的数据,所以 preprocess 函数直接返回
np.array(data, dtype=np.float32)
- features (不知道怎么翻译) 只有3个,所以
net = tflearn.input_data(shape=[None, 3])
测试数据
d1 = [24, 13, 0]
d2 = [15, 8, 0]
d3 = [13, 6, 0]
d4 = [11, 4, 0]
结果如下:
d1: 0.272275656462
d2: 0.462707459927
d3: 0.5154504776
d3: 0.567851483822
很明显可以看到,天气越冷空心菜的价格越大概率会高。
再测试下是否下雨的情况:
d1 = [24, 13, 0]
d2 = [24, 13, 1]
d3 = [15, 8, 0]
d4 = [15, 8, 1]
结果:
d1: 0.206400573254
d2: 0.243134364486
d3: 0.396896421909
d3: 0.448378354311
也明显可以得出,前一天下雨的情况下,价格会比不下雨要高。
PS
- 浪费了好多时间在数据清洗整理;
- features 很重要,就是哪个方面的数据会影响到模型,这个在大多数模型的建立中只能靠人工和经验去筛选了;
- 当前比较热门的业务态势感知,应该也是用了业务模型来预测变化的吧,比如根据导量数和流量来建立机器资源的使用模型。