过去,国王和领导人使用神谕和魔术师来帮助他们预测未来——或者至少得到一些好的建议,因为他们应该有能力感知隐藏的信息。 如今,我们生活在一个痴迷于量化一切的社会中。 所以我们有数据科学家来做这项工作。
数据科学家使用并非来自统计学科的统计模型、数值技术和高级算法,以及数据库中存在的数据,来查找、推断和预测尚不存在的数据。 有时这些数据是关于未来的。 这就是我们进行大量预测分析和规范分析的原因。
以下是数据科学家帮助寻找答案的一些问题:
- 哪些学生有较高的辍学倾向? 对于每一个,离开的原因是什么?
- 哪个房子的价格高于或低于公允价格? 某栋房子的公允价格是多少?
- 我的客户自己分类的隐藏组是什么?
- 这个早产儿将来会出现哪些问题?
- 明天上午 11:43 我的呼叫中心会接到多少电话?
- 我的银行应该或不应该借钱给这个客户?
请注意所有这些问题的答案如何不在任何等待查询的数据库中。 这些都是仍然不存在的数据,必须进行计算。 这是我们数据科学家所做工作的一部分。
在本文中,您将学习如何准备一个 Fedora 系统作为数据科学家的开发环境和生产系统。 大多数基本软件都是 RPM 打包的,但现在只能使用 Python 的 pip 工具安装最高级的部分。
Jupyter — IDE
大多数现代数据科学家使用 Python。 他们工作的一个重要部分是EDA(探索性数据分析)。 EDA 是一个手动和交互式的过程,它检索数据、探索其特征、搜索相关性,并使用绘制的图形来可视化和了解数据是如何形成的,并构建预测模型的原型。
Jupyter 是一个非常适合此任务的 Web 应用程序。 Jupyter 与 Notebooks 一起使用,这些文档混合了富文本,包括精美呈现的数学公式(感谢 数学贾克斯)、代码块和代码输出,包括图形。
Notebook 文件的扩展名为 .ipynb,表示交互式 Python Notebook。
设置和运行 Jupyter
首先,为 Jupyter 安装必要的软件包(使用 sudo):
$ sudo dnf install python3-notebook mathjax sscg
您可能需要安装数据科学家常用的附加和可选 Python 模块:
$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk
设置密码以登录 Notebook Web 界面并避免使用那些长令牌。 在终端的任意位置运行以下命令:
$ mkdir -p $HOME/.jupyter
$ jupyter notebook password
现在,为自己输入一个密码。 这将使用您的加密密码创建文件 $HOME/.jupyter/jupyter_notebook_config.json。
接下来,通过为 Jupyter 的 Web 服务器生成自签名 HTTPS 证书来准备 SSL:
$ cd $HOME/.jupyter; sscg
通过编辑 $HOME/.jupyter/jupyter_notebook_config.json 文件完成 Jupyter 的配置。 让它看起来像这样:
{
"NotebookApp": {
"password": "sha1:abf58...87b",
"ip": "*",
"allow_origin": "*",
"allow_remote_access": true,
"open_browser": false,
"websocket_compression_options": {},
"certfile": "/home/aviram/.jupyter/service.pem",
"keyfile": "/home/aviram/.jupyter/service-key.pem",
"notebook_dir": "/home/aviram/Notebooks"
}
}
里面的零件 红色的 必须更改以匹配您的文件夹。 零件在 蓝色的 创建密码后就已经存在了。 零件在 绿色 是 sscg 生成的加密相关文件。
按照上面 notebook_dir 设置中的配置,为您的笔记本文件创建一个文件夹:
$ mkdir $HOME/Notebooks
现在你们都准备好了。 只需在系统上的任何位置运行 Jupyter Notebook,只需键入:
$ jupyter notebook
或者将此行添加到您的 $HOME/.bashrc 文件中以创建一个名为 jn 的快捷命令:
alias jn='jupyter notebook'
运行 jn 命令后,从网络上的任意浏览器访问 https://your-fedora-host.com:8888 即可看到 Jupyter 用户界面。 您需要使用之前设置的密码。 开始输入一些 Python 代码和标记文本。 这是它的外观:
除了 IPython 环境,您还将获得由 terminado 提供的基于 Web 的 Unix 终端。 有些人可能会觉得这很有用,而另一些人则觉得这不安全。 您可以在配置文件中禁用此功能。
JupyterLab — 下一代 Jupyter
JupyterLab 是下一代 Jupyter,具有更好的界面和对工作区的更多控制。 它目前没有为 RPM 打包 Fedora 在撰写本文时,但您可以使用 pip 轻松安装它:
$ pip3 install jupyterlab --user
$ jupyter serverextension enable --py jupyterlab
然后运行您的常规 jupiter notebook 命令或 jn 别名。 可以从 https://your-linux-host.com:8888/ 访问 JupyterLab实验室.
数据科学家使用的工具
在本节中,您可以了解其中的一些工具,以及如何安装它们。 除非另有说明,否则该模块已打包用于 Fedora 并作为先前组件的先决条件安装。
麻木的
Numpy 是一个高级且经过 C 优化的数学库,旨在处理大型内存数据集。 它提供了先进的多维矩阵支持和运算,包括数学函数,如 log()、exp()、三角函数等。
熊猫
在作者看来,Python 之所以成为数据科学平台,主要是因为 Pandas。 Pandas 建立在 numpy 之上,使准备和显示数据的工作变得轻松。 您可以将其视为无 UI 电子表格,但可以处理更大的数据集。 Pandas 有助于从 SQL 数据库、CSV 或其他类型的文件、列和行操作、数据过滤以及在某种程度上使用 matplotlib 进行数据可视化的数据检索。
Matplotlib
Matplotlib 是一个绘制 2D 和 3D 数据的库。 它对图形、标签和覆盖中的符号有很好的支持
海博恩
Seaborn 的图形建立在 matplotlib 之上,经过优化,可以对数据进行更多的统计理解。 它自动显示绘制数据的回归线或高斯曲线近似值。

统计模型
StatsModels 提供用于统计和计量经济学数据分析的算法,例如线性和逻辑回归。 Statsmodel 也是古典家庭的家 时间序列算法 称为 ARIMA。

Scikit-学习
机器学习生态系统的核心部分, scikit 提供预测算法 回归 (弹性网络、梯度提升、随机森林等)和 分类 和聚类(K-means、DBSCAN 等)。 它具有精心设计的 API。 Scikit 还提供用于高级数据操作、数据集拆分为训练和测试部分、降维和数据管道准备的课程。
XGBoost
XGBoost 是当今使用的最先进的回归器和分类器。 它不是 scikit-learn 的一部分,但它遵循 scikit 的 API。 XGBoost 未包装为 Fedora 并且应该使用 pip 安装。 XGBoost 可以使用您的 nVidia GPU 加速,但不是通过它的 pip 包。 如果你自己针对 CUDA 编译它,你可以得到这个。 得到它:
$ pip3 install xgboost --user
不平衡学习
不平衡学习 提供了对数据进行欠采样和过采样的方法。 它在与非欺诈数据相比已知欺诈数据非常小的欺诈检测场景中很有用。 在这些情况下,需要对已知的欺诈数据进行数据增强,以使其与训练预测器更相关。 使用 pip 安装它:
$ pip3 install imblearn --user
NLTK
这 自然语言工具包,或 NLTK,可帮助您处理人类语言数据以构建聊天机器人(仅引用 example)。
形状
机器学习算法非常擅长预测,但不擅长解释为什么做出预测。 形状 通过分析训练有素的模型来解决这个问题。

使用 pip 安装它:
$ pip3 install shap --user
喀拉斯
Keras 是一个用于深度学习和神经网络的库。 使用 pip 安装它:
$ sudo dnf install python3-h5py
$ pip3 install keras --user
TensorFlow
TensorFlow 是一种流行的神经网络构建器。 使用 pip 安装它:
$ pip3 install tensorflow --user
照片由 福尔松自然 在 弗里克 (CC BY-SA 2.0)。