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 很重要,就是哪个方面的数据会影响到模型,这个在大多数模型的建立中只能靠人工和经验去筛选了;
  • 当前比较热门的业务态势感知,应该也是用了业务模型来预测变化的吧,比如根据导量数和流量来建立机器资源的使用模型。