数据科学与大数据技术是一门偏向应用的学科领域,因此工具就成为重要的组成部分。在工作中,数据科学家如果选择有效的工具会带来事半功倍的效果。一般来说,数据科学家应该具有操作数据库、数据处理和数据可视化等相关技能,还有很多人还认为计算机技能也是不可或缺的,可以提高数据科学家工作的效率。
开源社区多年来对数据科学工具包开发有着巨大贡献,这也让数据科学领域得以不断进步。这里我们收集了一些在数据库、编程语言、机器学习、可视化、计算机等方面的开源工具。希望可以帮助到更多数据科学家及对这个领域感兴趣的人。
1. 数据库
1.1 MongoDB
MongoDB是一个以可伸缩性和高性能著称的NoSQL数据库。它提供了传统数据库的强大替代品,并使特定应用程序中的数据集成更加容易。特别适用于构建大型web应用程序。
1.2 Apache HBase
Apache HBase(Hadoop数据库)是一个分布式、可扩展的大数据存储。数据科学家在需要对大数据进行随机、实时读/写访问时,可以使用这个开源工具。
2. 编程语言
2.1 R
R是一种用于数据处理和图形处理的编程语言,是数据科学家和分析人员使用的一种流行工具。根据数据科学家的说法,R语言是最容易学习的语言之一,因为有大量的包和指南可供用户使用。
2.2 Python
Python是数据科学家中另一种广泛使用的语言,它是一种通用编程语言,着眼于可读性和简单性。而且python中有非常多可以用于数据处理、机器学习和可视化的代码库。
* 数据科学中常用的库见文章:https://mp.weixin.qq.com/s/dLrZWsqrZW7XqG6phS3R7g
2.3 Scala
Scala是一种运行在Java平台上的通用编程语言。它适用于大型数据集,主要用于Apache Spark和Apache Kafka等大数据工具。这种函数式编程风格带来了速度和更高的生产率,这导致越来越多的公司慢慢地将其作为数据科学工具包的重要组成部分加以适应。
2.4 SQL
SQL是用于存储在关系数据库中的数据的专用编程语言。SQL用于更基本的数据分析,可以执行组织和操作数据或从数据库检索数据等任务。在数据科学工具中,它是在数据库中过滤和选择数据的最佳工具之一。
2.5 Julia
Julia是一种用于技术计算的动态编程语言。它没有被广泛使用,但由于其灵活性、设计和性能,在数据科学工具中越来越受欢迎。
3. 数据挖掘
3.1 RapidMiner
RapidMiner是一个具有可视化和统计建模功能的预测分析工具。该软件的基础是RapidMiner Studio,它是一个免费的开源平台。
3.2 Data Melt
Data Melt是一款数学软件,拥有先进的数学计算、统计分析和数据挖掘功能,而且可以通过编程语言进行补充,甚至包含一个广泛的教程库。
此外,Python和R中都有很多用于数据挖掘的库,这里就不再赘述了。
4. 机器学习
4.1 Weka
Weka是由怀卡托大学用Java编写的机器学习软件。它用于数据挖掘,允许用户处理大数据集。Weka的一些特性包括预处理、分类、回归、聚类、实验、工作流和可视化。
4.2 TensorFlow
TensorFlow是一个用于数值计算的软件库,它允许程序员在不需要理解其背后的一些复杂原理的情况下的应用深度学习,并被列为帮助数千家公司应用深度学习的数据科学工具之一。
4.2 Apache Mahout
Apache Mahout是一种构建可伸缩机器学习算法的环境。算法是在Hadoop上编写的。Mahout实现了三个主要的机器学习任务:协同过滤、聚类和分类。
4.3 Orange
Orange一个是简单的数据科学工具,它致力于使数据科学变得有趣和交互式,允许用户在不需要编码的情况下分析和可视化数据,也为初学者提供机器学习选项。
4.4 MLBase
MLBase是加州大学伯克利分校的AMP(算法机器人)实验室开发的一个开源项目。背后的核心思想是为机器学习应用于大规模问题提供一个简单的解决方案。
5. 数据可视化
5.1 D3
5.2 Axiis
在数据科学工具中,Axiis是一个鲜为人知的数据可视化框架。它允许用户以一种富有表现力和简洁的形式使用预先构建的组件构建图表和探索数据。
6. 其他工具
6.1 Linux
Bash脚本是计算机科学中最基本的工具,并且数据科学中很大一部分需要编程,必须用一些命令行来处理包、框架管理、环境变量、访问路径($PATH)等等,因此Linux是必要的。
6.2 Git
在团队中编码时,可以借助 git解决团队成员代码冲突、修复bug、更新。将代码提交到开源或私有的repo(如Github)时,可以使用Coveralls之类的东西进行代码测试,还有帮助部署代码到生产中的其他框架。
6.3 REST APIs
REST APIs可以让本地的训练模型和可用程序无缝衔接。通过标准API调用或开发可用的应用程序真正让数据科学模型进行预测。这也是其在数据科学中的巨大作用。
6.4 Docker & Kubernetes
Docker让用户拥有一个生产就绪(production ready)的应用环境,不需要为每个运行的单个服务集中配置生产服务器。与需要安装完整操作系统的虚拟机不同,docker容器在与主机相同的内核上运行,并且轻量得多。一些高级的机器学习库(如Tensorflow)需要特定的配置,很难在某些主机上进行故障排除,docker就是一个很好地选择。
Kubernetes(K8s)是一个在多主机上进行规模管理和部署容器化服务的平台。本质上,这意味着您可以轻松地通过跨水平可扩展集群,管理和部署docker容器。
6.5 Apache Airflow
Airflow是一个较为小众的Python平台,可以使用有向无环图(DAG)程序化地创建、调度和监控工作流。它能让你可以随时根据需要轻松地设置Python或bash脚本,并在用户友好的GUI中控制调度作业。
6.6 Elasticsearch
Elasticsearch也是一个比较小众的工具。Elastic通过Python客户端便捷地提供了所需的一切,让你可以轻松地以容错和可扩展的方式索引和搜索文档。你拥有的数据越多,启动的节点就越多,查询执行的速度就越快。它有很多功能,甚至支持多语言分析器等定制插件。
6.7 Homebrew
Homebrew是一个Mac OS系统的工具,可以帮助不能开箱即用的OS系统通过终端命令进行安装, 弥补了OS系统无包管理的缺陷。