《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL用SQL做数据分析(4) https://developer.aliyun.com/article/1232907?groupCode=polardbforpg
(三)分析数据
前文演示了在PolarDB里做数据准备与处理数据的过程,现在正式进入第三步——分析数据。
1、降维
如前文所说,当前分析数据还非常依赖人工,因此需要通过数据可视化的方式分析数据的分布,即将表格形式转换成图片
形式。但原始数据包含花萼、花瓣的长度与宽度,就是4维数据,而图片一般只能展示2维数据。为了能在图片上展示高维
数据,需要先对数据降维,把四维的数据降低到二维数据。
如上图所示,使用降维方法之前,需要先修改一下flowers表:第一个ID是自增的唯一编号,因为降维算法运算结果,需要通过ID保存回来;后面还有feature1和feature2两个字段,用来保存降维后的两维数据。
有了保存的字段之后,就可以从插件里挑一个降维算法,把四维数据压缩成二维数据,然后再以散点图的方式呈现出来。
这里选择了一个比较常用的PCA降维算法,它包含四个参数:
1.第一个参数是一个字符串形式的表名,表明这个算法数据是存在哪张表。
2.第二个字段是一个唯一字段名。
3.第三个参数是一个字符串数组,告诉算法,原始的高维数据保存在哪些字段里。
4.第四个参数也是一个数组,告诉算法结果保存在哪些字段里。
上图的例子就是把flowers表里的数据,根据ID字段,把花瓣花萼的长度和宽度这四个字字段作为输入,降维完之后存到
feature1和feature2二维的数据里面。降维完成之后再通过散点图的函数展示出来,告诉散点图从哪个表里去拿x轴和y轴
的数据以及目标值的数据。如果一切顺利的话,大家能够看到上图右边这样一个散点图展示在终端。
2、可视化展示
同样的,咱们来实操一下。首先新增三个字段,一个是ID自增的,另外两个是feature1和feature2:
然后用PCA降维算法把这四个特征变量降维成两个特征变量:
此时,feature1与feature2已经有降维后的值了:
最后再用散点图去展示数据:
可以看到三个花分别用不同的颜色标记出来,并且大体上能够被区分开来。
3、预置算法与绘图函数
同样的,插件中已经预置了一些算法函数以及绘图函数,包括降维、分类、回归、聚类、绘图等。
这些函数都是封装了第三方的Python函数:算法函数就是封装了 Scikit Learn 这个Python机器学习库;函数函数则是封
装了Matplotlib。这就是PolarDB的UDF最强大的地方,它海纳百川,可以直接把其他编程语言的生态封装到自己的生态
里,并统一用SQL函数的方式提供给使用者。大家可以参考插件的文档,查看有哪些已经封装好的函数,或者也可以自己来尝试封装。
4、模型训练及预测
通过可视化展示,我们已经知道数据大概是什么样的分布情况,最后我们就可以挑一个聚类算法函数来训练模型,并且用
这个模型来预测新数据。
如上图所示,我选择了高斯混合模型,因为它用起来最简单,用法和前面的降维函数有点类似。如果训练成功,最后得到
类似上图右侧的分布图,可以把三个数据进行聚类,简单的高斯混合模型聚类后效果看起来也还不错。
苹果公司股价回归分析案例
鸢尾花的分析案例中,使用的是非监督学习的聚类方法,插件中还包含一些监督学习算法。可以试试用线性回归模型方法
分析苹果股价的走势。过程与鸢尾花的分析一样,也分成四步:
其中,在数据准备环节,直接调用预置的load函数加载苹果公司自2015年以来每天的股价收盘价格,并以点图把它展示出来;接着再选择线性回归模型进行训练;最后以折性图的方式把它呈现出来。如果一切顺利,你将能在终端看到如下的折线图:
上图是用自增的ID作为特征变量,与股价做拟合。真正的股价走势分析是非常严谨和复杂的,本示例只作为演示用途,切
勿当真!
苹果公司股价回归分析案例
总结前文中涉及到的PolarDB数据库功能:
本文用纯粹的SQL完成了鸢尾花聚类与苹果股价分析。其中,在准备数据时,用到了CREATE TABLE创建数据库表,COPY
命令导入数据,也学会了如何调用UDF;在处理数据阶段,学会了添加新的列、给列添加默认值、INSERT语句、触发器等。
除了本文罗列的功能,还有许多今天没涉及到的、但非常有用的功能,例如,像面向对象一样的继承表,还有条件索引、
表达式索引、倒排索引、全文检索等等。通过这些特性,大家应该能感受到PolarDB是一个非常开放的平台,几乎允许你
以任何你喜欢的方式来管理数据。大家可以下载PolarDB,探索一下更多更好玩的功能。