全文搜索引擎ElasticSearch
全文搜索引擎 ElasticSearch
1. 介绍
ElasticSearch 简称 ES。
先来看它的用途:如果只是在多个机器同步,存储和检索大量数据,它与数据库的差别在哪儿,为什么非要使用
ES 呢?
ES
是目前全文搜索引擎的首选。全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。简单地说它的优势在于文本检索。ES
还可搭建成集群,有良好的扩展性。
如果把 ES 和数据库相比,ES 中包含多个索引
index(相当于数据库中的库),索引又包括多个类型
type(相当于数据库中的表)。
Kibana 是一个开源的分析与可视化平台,设计出来用于和 Elasticsearch
一起使用的。
2. ES 环境搭建
(1) 安装 8 以上的 Java 版本
ES 是由 java 编写的,所以先要安装与其版本匹配的 JAVA 工具
在以下网址下载 Java8 版本:
http://www.oracle.com/technetwork/ja ...
实战A股上市公司季度营收预测
实战 A
股上市公司季度营收预测
1. 说明
FDDC2018 金融算法挑战赛 01-A
股上市公司季度营收预测,是天池最近的一个算法比赛,7 月 15 是初赛提交的
deadline,就最后两天了,也没法做得太细,看看怎么用最短的时间,抓住最关键的值,搭个简单的架子。
2. 数据分析
1) 预测目标
2018 年二季度的营业收入。
2) 已知数据
题目提供的除了报表数据,提交格式以外,还有一些说明文档,这些文档都需要看一遍,很多对题目的疑问都可以从中找到答案。
3) 分析
营业收入 REVENUE 在利润表 Income_Statement.xls
中,先来看看这个文件,它把金融,保险,银行和一般工商业分成四个 sheet
分别存放。
下面分析一下其中占比最高的一般工商业(General Business)公司,数据约
20 万条左右。涉及 3500 多家公司。时间范围是 2009 年 4 月到 2018 年 7
月。
一般报表中的所有项目都是一起发布的,所以预测营收时,同期的其它数据也不知道。相对于用上期的其它数据预测本期的营收,还不如用历史的营收数据预测本期营收。
...
Docker集群
Docker 集群
#Docker
1. 说明
一般情况下,我们用 Docker run 命令将 docker
启成普通进程。有时候我们有多台运行 docker 的机器,希望 Docker
以集群方式运行。与手动启动不同
Docker,集群涉及统一管理,各服务的状态监控,负载均衡,日志文件,重启,统一向外暴露端口等等。
本篇介绍一些 Docker 集群相关的内容:包括集群管理工具 Smarm,卷
Volume,图形化管理工具 Portainer。
2. 安装 Docker 的最新版本
如果 ubuntu 版本较低,用 apt-get 只能安装 docker 的早期版本,像
docker service, docker volume 等工具都无法正常使用,需要下载 docker
较新的版本,方法如下:
123$ curl -fsSLO https://get.daocloud.io/docker/builds/Linux/x86_64/docker-17.05.0-ce.tgz$ sudo tar --strip-components=1 -xvzf docker-17.05 ...
Docker进阶
Docker 进阶
#Docker
说明
之前,基本是在单机上用
Docker,在不影响当前环境的前提下,创建和使用一些特殊环境。最近,涉及到多
Docker
的协作,比如:在同一服务器上启动和管理多个容器;在一台服务器上使用类似的镜像版本,在不同的机器之间复制镜像等等,积累了一些
docker 使用方法,和大家分享一下。
##环境搭建
要想了解整个流程,还是在自己机器上搭建环境,从头到尾过一遍,最为直接。
1$ sudo apt-get install docker.io
安装好之后,就可以使用 docker 命令了。此时还只能用 root
身份,如果想让某个用户操作 docker,则需要将其加入 docker 组。
12345$ sudo usermod -aG docker $your-user # 将新成员加入docker组$ sudo service docker restart # 重启docker服务$ newgrp - docker # 刷新docker成员从官网拉下ubuntu镜像$ docker run -it ubuntu bash # 如果本地不存在 ...
Python爬虫
Python 爬虫
1. 说明
做数据挖掘常常需要抓取网页内容,有些工具能通过分析 url
中的链接,把整个网站抓下来,也就是我们常说的爬虫工具。
有时候需要把交互网页的内容抓下来,比如:在 input
框中输入想查的内容,服务器端实时计算结果,或者从数据库中查询后返回结果。像整句翻译功能,查询食物的热量等等。下面介绍
Python 用 GET 和 POST 方式抓取实时内容的方法。
2. GET 方式
GET 方式把要查询的参数放在 url 地址中,非常简单。下例用 Python
程序,查询运单信息,写法如下:
123456import urllib.request url = 'http://cha.xxx.cn/?stype=kd&q=123456'req = urllib.request.Request(url) html = urllib.request.urlopen(req).read()print(html.decode("utf8"))
GET
方式,用问号和等号“addr?key=value”的方式 ...
数据挖掘之_后处理
数据挖掘之 _ 后处理
常常听说数据预处理,后处理相对少见,本篇来说说何时需要后处理,以及后处理的一些简单方法。
数据挖掘的流程一般是:输入数据 ->特征工程 ->模型训练/预测
->导出结果。后处理是将模型预测的结果进一步处理后,再导出。
先看一个例子:比如我们网购小包装的咖啡,一般的购买习惯是,在少量购买时,需要多少买多少:一包,两包,三包;买的较多的时候,可能是六包,八包,十包;买得更多的情况下,可能是十包,十五包,二十包;再往上是三十包,四十包,五十包,一百包……以此类推。
也就是说:数量大的时候,我们可能更倾向于取整,双数,五的倍数,十的倍数等等。如果不是针对人数买的话,一般不会出现
7, 19, 113
这样的购买数量。如下图示意:横轴代表购买数量,纵轴代表该数量出现的次数。蓝色为实际购买数据,橙色为预测数据。注意本图是结果
y 的分布图。
想在模型和预测处理中优化比较困难,因为对于测试集,并不知道预测的结果是多少,于是也无法将它是否靠近
2,5,10 的倍数作为特征代入模型。
此时可使用后处理,让橙线靠近蓝线,最简单的方法是手写判 ...
自然语言处理之_SentencePiece分词
自然语言处理之
_SentencePiece 分词
#自然语言处理
1、说明
SentencePiece 是一个 google
开源的自然语言处理工具包。网上是这么描述它的:数据驱动、跨语言、高性能、轻量级——面向神经网络文本生成系统的无监督文本词条化工具。
那么它究竟是干什么的呢?先举个例子:假设在数据挖掘时,有一列特征 T
是文本描述,我们需要将其转成枚举型,或者多个布尔型代入模型,即:需要从文本中提供信息构造新特征。
首先,我们可以用标点将长句长分成短句,以短句作为关键词,看每个实例的特征
T
中是否包含该关键词,从而构造新的布尔型特征。但有时候表达同一个意思所使用的文本并不完全一致,比如“买三送一”和“买三送一啦!”是一个意思。
此时,我们可以用 SnowNLP 或者 jieba 分词把描述拆成单个词,看 T
是否包括该关键词。但这样用也有一个问题:可能把一个意思拆成了多个特征,比如“袖子较短,领子较大”被拆成了四个独立的特征“袖子”“较短”“领子”“较大”,组合效果没有了。
我们想要的效果是:如果“袖子较短”这个组合经常出现,就把它当成一个词处理。jieba ...
时序预测之四_Prophet时序模型
时序预测之四 _Prophet
时序模型
1. 说明
Prophet 是 FaceBook
开源的时序框架。非常简单实用,你不需要理解复杂的公式,看图,调参,调用十几行代码即可完成从数据输入到分析的全部工作,可谓懒人之利器。
在效果方面,我在同一项目中尝试了 ARIMA,将星期和节假日作为特征代入
GBDT,Prophet,相对来说,Prophet
效果最好,当然这与数据有关,也不能一概而论。总之,Prophet
效果挺好的,训练速度也挺快。
Prophet
的原理是分析各种时间序列特征:周期性、趋势性、节假日效应,以及部分异常值。在趋势方面,它支持加入变化点,实现分段线性拟合。在周期方面,它使用傅里叶级数(Fourier
series)来建立周期模型
(sin+cos),在节假和突发事件方面,用户可以通过表的方式指定节假日,及其前后相关的
N 天。可将 Prophet 视为一种针对时序的集成解决方案。
使用 Prophet
具体使用步骤就是:根据格式要求填入训练数据,节假日数据,指定要预测的时段,然后训练即可。除了预测具体数值,Prophet
还将预测结果拆分成 trend, yea ...
Python编程_在Matplotlib图中显示中文字体
Python 编程 _ 在
Matplotlib 图中显示中文字体
1. 说明
本篇主要针对在 Ubuntu 系统中,matplotlib
显示不了中文的问题,尤其是在无法安装系统字体的情况下,解决 Python
绘图时中文显示的问题。
2. 在系统中安装字体
1$ fc-list :lang=zh # 查看中文字体名称及其安装路径,相对于英文字体,中文字体文件一般较大。
如果无中文字体,可使用 apt-get 安装,具体方法如下:
1234567$ apt-cache search font|grep Chinese # 查看可安装的中文字体$ sudo apt-get install fonts-wqy-zenhei # 安装字体, 一般字体会被安装到/usr/share/fonts/的某个子目录下,也可以从windows中把ttf,ttc复制到fonts目录下。$ cd /usr/share/fonts/truetype/xxx/ # cd到字体安装目录下$ sudo mkfontscale$ sudo mkfontdir$ fc-cache -v # 更新字体$ fc-li ...
实战美年健康AI大赛之四_复赛使用数加平台
实战美年健康 AI
大赛之四 _ 复赛使用数加平台
#算法实战
1. 说明
美年健康 AI
大赛的复赛是线上赛,只能使用数加平台。第一次用数加,也遇到一些问题,在此总结一下。
2. 问题及解答
(1) 如何登录?
得到复赛资格之后,天池赛题网页左侧的列表中就会多出一项“数加”,点击进入后,按提示得到
RAM
帐号,即可以登录“数据开发平台”和“机器学习平台”,注意登录帐号是用户名和企业别名的组合。
网页上提供的 Demo 有点旧了,是 2015
年的,那时候好像还叫“御膳房”。建议官方及时更新,这样大家可以节约点时间,技术支持人员也没那么累。
(2) 如何访问数据?
进入“数据开发平台”,点击上方的“数据管理”,即可进入数据界面,左侧的查找数据,可以通过关键字查找该项目下的表,像本题查找
meinian
就可以看到很多表,其中包括管理员建立的和其他参赛者建立的。具体的项目名和表名见“赛题与数据”中复赛的说明。需要注意的是一般先要把项目数据用
SQL
复制到自己的空间中,然后再进行下一步操作。详见“代码分享”部分。复制到自己空间后,就可以在“数据管理”->“个人帐号 ...