工欲善其事,必先利其器。
本文针对小团队,建立AI大数据量化应用,提供最佳实践。人多钱多的公司可忽略。
对于后端语言,排在前面的java,php,显然不合适大数据。AI大数据应用,从技术栈的角度,首推python。
大数据应用,基础是机器学习以及相关运算包。python里的numpy,scipy, sckit-learn,matplotlib,功能已大于或等于matlab。加上pandas(DataFrame,Series), 就全面超越R。再加上最新深度学习包tensorflow的原生支持。大数据模型从建立到生产环境部署,python显然是不二选择。
再看数据来源,大数据应用离不开爬虫。爬虫应用最丰富是java和python。但java的应用门槛不低,最新的nutch需要依赖hadoop,部署起来都费劲。但python的scrapy,是渐进式,轻量但可以方便扩展的爬虫框架。几行代码就可能定向采集一个网站。
下面就是采集huxiu.com的一个简单例子。
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from eagle.items import EagleItem
from bs4 import BeautifulSoup
class ArticleSpider(CrawlSpider):
name = 'huxiu'
allowed_domains = ['huxiu.com']
start_urls = ['http://www.huxiu.com']
rules = (
# Extract links matching 'category.php' (but not matching 'subsection.php')
# and follow links from them (since no callback means follow=True by default).
Rule(LinkExtractor(allow=('/channel/', ))),
# Extract links matching 'item.php' and parse them with the spider's method parse_item
Rule(LinkExtractor(allow=('/article/', )), callback='parse_item'),
)
def parse_item(self, response):
self.logger.info('Hi, this is an item page! %s', response.url)
soup = BeautifulSoup(response.text,'lxml')
item = EagleItem()
item['title'] = soup.select('h1')[0]
item['datetime'] = soup.select('.article-time')[0]
item['content'] = soup.select('.article-content-wrap')[0]
print(item)
return item
后端比较流行的是java,php和python。但从快速交付的角度,python的django简直是无敌了。内置ORM,支持主流数据库,各种数据操作无需一行sql语句,更重要的是自带的后台系统,在项目初期,根本不需要一行代码就拥有一个强大的管理后台,支持所有model的CURD。
PC WEB可以考虑vue或angular框架,方便实现前后端分离。这两种现代框架,很好解决了前端数据的双向绑定。很多后端程序员很怵的javascript则不需要了,因为数据驱动的框架,根本无需用js操作dom。现在两种框架都内置支持typescript,写前端的体验和python体验很像。就只需解析json,然后填充数据结构即可。
APP则可以考虑基于angular的ionic框架。基于cordova对app开发做了很多优化,一套H5,可以打包成ios/android/win phone版本。小的应用只需要1-2个前端几天即可搞定,周期和维护成本大大缩小。
如上,团队成员的技术能力要求也很集中,就是python/简单的js。专注在业务模型而非在语言本身。
人生苦短,就用python!
关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
联系客服