您的位置:首页 > 编程语言 > Python开发

2017 Top 15 Python 数据科学类库;时间序列异常点检测;如何加入开源项目

2017-09-06 10:07 881 查看

2017 Top 15 Python 数据科学类库



近年来,Python 在数据科学领域得到了越来越多的关注,本文整理归类了使用率最高的数据科学类库,供大家参考。

NumPy、SciPy、Pandas 是 Python 数据科学的核心类库。NumPy 提供了 N 维数组、矩阵、向量等数据结构,能够进行高性能的数学运算;SciPy 包含了线性代数、拟合优化、统计学习的通用方法;Pandas 则一般用于数据清洗、探索型分析等工作。

可视化方面,Matplotlib 是最早流行的类库,提供了丰富的图形化接口,但 API 的使用方式偏底层,需要编写较多代码;Seaborn 构建在 Matplotlib 之上,重新定义了图表样式,更适合在报告、演示文档中使用,并且它还预置了诸多探索型分析函数,可以快速地对数据进行描述性可视化;Bokeh 主打交互性,它运行在浏览器中,让使用者可以方便地调节可视化参数;Plotly 也是一款基于页面的可视化工具,但因为是商业软件,需要授权后才能使用。

SciKit-Learn 是公认的 Python 机器学习标准类库,它提供了准确、统一的接口,可以方便地使用各种机器学习算法;深度学习领域,Theano 是比较老牌的类库之一,特点是能够运行于不同的系统架构之上(CPU、GPU);Tensorflow 则是最近较火的基础类库,使用它提供的各种算子和数据流工具,我们可以构建出多层神经网络,在集群上对大数据进行运算;Keras 则是一款较上层的工具库,底层使用 Theano 或 Tensorflow 作为引擎,可以通过快速构建实验来验证模型。

自然语言处理领域中,NLTK 提供了文本标记、分词、构建语料树等功能,用以揭示句中或句间的依赖关系;Gensim 则擅长构建向量空间模型、话题建模、挖掘大量文本中重复出现的模式,其算法都属于非监督学习,因此只需提供语料库就能得到结果。

原文:http://www.kdnuggets.com/2017/06/top-15-python-libraries-data-science.html

时间序列数据异常点检测算法



异常点检测是指寻找那些偏离标准值或正常值的数据点。异常点有几种常见的类型:短期内产生的峰值,包括最大值、最小值、以及零值;长期的数据合计与上一周期的比较等。检测方法也可以归类为两种:对数据点进行分类,标记异常与否;或是对未来数据走势做预测,给出置信区间。

使用 STL 分解法将时间序列数据表示成三个要素:季节性、趋势、残差。通过分析残差的背离程度,引入一定的阈值,就可以作为预警依据了。我们可以使用绝对中位差来作为阈值,推特使用并开源了相关类库(链接)。这种方法的优点是简单,对峰值异常较敏感,并能结合滑动平均来检测周期性的异常。缺点是需要进行调参,且不能检测剧烈变动的指标。

分类和回归树算法有两种使用方式:一种是准备好已标记过异常点的数据集,进行监督型的机器学习;另一种则是让 CART 算法自动寻找数据集中的模式,预测异常点的置信区间。最常用的开源库是 xgboost。这一方法可以用各种特征进行学习和预测,当然计算量也会因此上升。

ARIMA 是一种较为简单的算法,通过历史值来预测下一个数据点的动向。它的特点是每接收一个新的数据点都需要重新构建一次预测模型,并且你的数据必须和时间是无关的。和该算法相似的是指数平滑法,比较有趣的实现是 Holt-Winters 季节性指标,用于检测阶段性长期趋势的异常。

人工神经网络也能够进行异常检测,只是这一方式还处于科研阶段。不过我们想要提醒读者的是,尽量从简单的模型开始,针对你的具体问题进行优化,因为通用的算法并不一定是最优的。

原文:https://blog.statsbot.co/time-series-anomaly-detection-algorithms-1cef5519aef2

如何加入开源项目



已经蠢蠢欲动了吗?不如马上开始!找一个你正在使用的开源项目,Fork 源码仓库。先从修复 Bug 开始,或者为现有代码编写单元测试。过程中你需要学会读懂别人的代码,遵循代码规范。提交补丁后,你一定会受到猛烈的抨击,千万不要因此胆怯。熟悉代码之后,可以寻求一些更重要的职责,比如提出一个新的特性,或者认领新特性的开发工作。最后,你也可以开启自己的开源项目。

如何寻找自己想做贡献的开源项目?首先你可以在邮件列表、论坛、Bug 跟踪系统中找到这样的项目,问问自己是否喜欢这里的社区氛围。一开始不要在一棵树上吊死,多观察几个开源项目,找到自己对味的。从小处着手,比如重现 Bug、提交测试代码、改进文档等等。中途不要放弃!

最直接的加入方式其实是当正在使用的某个项目出现 Bug,或者你有用的不爽的地方,对它加以改进。此外,加入一个对开源项目友好的公司也是不错的选择。

原文:https://arstechnica.com/information-technology/2012/03/ask-stack-how-can-i-find-a-good-open-source-project-to-join/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: