当前位置: 首页 > 科技观察

在Fedora上设置Jupyter和数据科学环境

时间:2023-03-21 13:34:15 科技观察

过去,神谕和魔术师被认为有发现奥秘的能力,国王和统治者用它们来预测未来,或者至少听取一些建议。现在我们生活在一个痴迷于量化一切的社会中,这项工作落到了数据科学家身上。数据科学家使用统计模型、数值分析和除统计之外的高级算法来结合数据库中已经存在的数据来发现、推断和预测尚不存在的数据(有时是关于未来的数据)。这就是我们进行如此多的预测分析和规划分析的原因。以下是一些可以在数据科学家的帮助下回答的问题:哪些学生容易旷课?每次旷课的原因是什么?哪些房屋的售价高于或低于其公允价值?房子的合理价格是多少?如何根据潜在特征对客户进行分组?这个孩子的早熟会给以后带来什么问题呢?明天上午11点43分,我们的呼叫中心将接到多少个电话?我们的银行是否应该向该客户发放贷款?请注意,这些问题的答案在任何数据库中都不可用,因为它们尚不存在,需要计算。这就是我们数据科学家所做的。在本文中,您将学习如何使用Fedora系统作为数据科学家的开发环境和生产系统。大部分基础软件都有RPM包,但是最高级的组件目前只能通过Python的pip工具安装。JupyterIDE大多数现代数据科学家都在Python中工作。他们工作的一个重要部分是探索性数据分析(EDA)。EDA是一个手动的交互式过程,包括提取数据、探索数据特征、查找相关性、绘制图形以可视化和理解数据分布,以及实施原型预测模型。Jupyter是一个完全有能力完成这项工作的网络应用程序。Jupyter使用的笔记本文件支持富文本,包括呈现精美的数学方程式(感谢mathjax)、代码块和代码输出(包括图形输出)。Notebook文件的后缀为.ipynb,代表“InteractivePythonNotebook”。构建并运行Jupyter首先,使用sudo安装Jupyter核心包:$sudodnfinstallpython3-notebookmathjaxsscg您可能需要安装一些数据科学家常用的附加可选模块:$sudodnfinstallpython3-seabornpython3-lxmlpython3-basemappython3-scikit-imagepython3-scikit-learnpython3-sympypython3-dask+dataframepython3-nltk设置用于登录笔记本网络界面的密码,避免冗长的令牌。您可以在终端的任意位置运行以下命令:$mkdir-p$HOME/.jupyter$jupyternotebookpassword并输入您的密码,然后将自动创建文件$HOME/.jupyter/jupyter_notebook_config.json,包括一个您密码的加密版本。接下来,使用SSLby为Jupyter的Web服务器生成一个自签名的HTTPS证书:$cd$HOME/.jupyter;sscg配置Jupyter的最后一步是编辑$HOME/.jupyter/jupyter_notebook_config.json文件。根据以下模板编辑文件:{"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"}}/home/aviram/应替换为您的文件夹。sha1:abf58...87b这部分是在您创建密码后自动生成的。service.pem和service-key.pem是sscg生成的加密相关文件。接下来创建一个存放Notebook文件的文件夹,该文件夹要和上面配置中的notebook_dir保持一致:$mkdir$HOME/Notebooks您已经完成配置。现在你可以从系统中的任何地方使用以下命令启动JupyterNotebook:$jupyternotebook或将以下代码行添加到$HOME/.bashrc文件中以创建一个名为jn的快捷命令:aliasjn='jupyternotebook'之后运行jn命令,可以通过内网任意浏览器访问(LCTT译注:请将域名替换为服务器的域名),即可看到Jupyter显示的用户界面,需要使用之前设置的密码登录。您可以尝试输入一些Python代码和标记文本,它看起来像这样:带有简单笔记本的Jupyter除了IPython环境之外,安装过程还生成了一个由terminado提供的基于Web的Unix终端。有些人认为这很实用,而另一些人则认为这不是很安全。您可以在配置文件中禁用此功能。JupyterLab:下一代JupyterJupyterLab是下一代Jupyter,具有更好的用户界面和更好的工作区控制。在撰写本文时,JupyterLab没有可用的RPM包,但您可以使用pip轻松安装它:$pip3installjupyterlab--user$jupyterserverextensionenable--pyjupyterlab然后运行??jupiternotebook命令或jn快捷方式命令。访问(LCTT译注:将域名替换为服务器的域名)即可使用JupyterLab。数据科学家使用的工具在下一节中,您将了解数据科学家使用的一些工具以及如何安装它们。除非另有说明,否则这些工具应该已经具有Fedora软件包版本,并作为上述组件所需的软件包进行安装。NumpyNumpy是一个针对C语言优化的高级库,用于处理大型内存数据集。它支持高级多维矩阵及其运算,包括数学函数,如log()、exp()和三角函数。Pandas在我看来,正是Pandas让Python成为数据科学的最佳平台。Pandas建立在Numpy之上,这使得数据准备和数据呈现变得更加容易。您可以将其视为没有用户界面但能够处理更大数据集的电子表格程序。Pandas支持从SQL数据库或CSV等格式的文件中提取数据,按列或按行操作,数据过滤,通过Matplotlib实现数据可视化的部分功能。MatplotlibMatplotlib是一个用于绘制2D和3D数据图像的库,对图像注释、标签和叠加层提供了不错的支持。matplotlib一对图形显示成本函数通过梯度下降算法寻找其最优值SeabornSeaborn建立在Matplotlib之上,其绘图功能进行了优化,更适合数据的统计研究,例如,它可以自动显示近似回归线绘制的数据或正态分布曲线。使用SeaBornStatsModelsStatsModels可视化的线性回归为统计和计量经济学数据分析问题(例如线性回归和逻辑回归)以及经典的时间序列算法ARIMA系列提供算法支持。跨时间的归一化乘客数量\(蓝色\)和ARIMA预测的乘客数量\(红色\)Scikit-learn作为机器学习生态系统的核心组件,Scikit提供了针对不同类型问题的预测算法,包括回归问题(algorithm包括Elasticnet、GradientBoosting、RandomForest等),分类问题和聚类问题(算法包括K-means和DBSCAN等),并有设计良好的API。Scikit还定义了一些专门的Python类来支持高级数据操作技术,例如将数据集拆分为训练集和测试集、降维算法、数据准备管道等。XGBoostXGBoost是当今最先进的回归器和分类器。它不是Scikit-learn的一部分,但遵循ScikitAPI。XGBoost没有适用于Fedora的软件包,但可以使用pip安装。使用Nvidia显卡可以提高XGBoost算法的性能,但这不能通过pip包实现。如果要使用这个特性,可以自己编译CUDA(LCTT译注:NVIDIA开发的并行计算平台)。使用以下命令安装XGBoost:$pip3installxgboost--userImbalancedLearnImbalanced-learn是一个解决数据欠采样和过采样问题的工具。例如,在反欺诈问题中,与正常数据相比,欺诈数据的数量非常少。这时候就需要对欺诈数据进行增强,让预测器更好的适应数据集。使用pip安装:$pip3installimbleearn--userNLTKNaturalLanguagetoolkit(简称NLTK)是一个处理人类语言数据的工具,例如可以用来开发聊天机器人。SHAP机器学习算法具有很强的预测能力,但它并不能很好地解释为什么会做出这样或那样的预测。SHAP可以通过分析训练好的模型来解决这个问题。SHAP适合数据分析过程的地方使用pip安装:$pip3installshap--userKerasKeras是深度学习和神经网络模型的库,使用pip安装:$sudodnfinstallpython3-h5py$pip3installkeras--userTensorFlowTensorFlow是一个非常流行的神经网络模型构建工具,使用pip安装:$pip3installtensorflow--user