数据科学家是怎样提升效率的5个技巧教给你

中科白癜风公认好口碑医院 http://disease.39.net/yldt/bjzkbdfyy/index.html

「来源:|大数据应用ID:Datalaus」

今日份知识你摄入了么?

我进入数据科学领域有一年多了,在这里,我想与大家分享一些在工作过程中学到的一些我觉得有用的知识,可以帮助大家提高工作效率。

希望这些建议能对你的人生有所帮助。

摄影:BoitumeloPhetla图片来源:Unsplash

1

使用Pandas处理时间序列数据

如果你需要处理时间序列数据,那么你可能会花大量时间通过SQL查询或编写自定义函数来处理丢失的记录、或聚合特定时间粒度的数据。Pandas中,有一个resample函数,可以帮助你以特定的频率处理数据,它的运行效率极高,只需将DataFrame索引设置为时间列。

我将使用房间入住率数据集来举例说明这个函数。你可以点击此处找到数据集。该数据集以分钟为单位记录了观察结果。

首先,我展示了一个简单的聚合,来获得以小时为单位的数据。

虽然这个数据集并不稀疏,但却经常遇到缺少记录的数据。考虑这些记录很重要,因为,如果没有记录,或使用上一个或下一个时间步骤进行插补,你可能需要输入0值来替换。下面,我删除了第15小时的记录,以展示如何使用第14小时的数据来估算缺失值:

2

通过PlotlyExpress快速实现可视化

从分析,到模型训练,再到模型报告,可视化是不可或缺的。特别是对于时间序列图,我注意到我在matplotlib中花了很长时间去自定义x轴刻度的大小和角度。在我改用PlotlyExpress后,花费在让图表看起来更清晰的时间减少了大约70%。如果我想在可视化中实现特定的细节,我仍然可以通过使用PlotlyGraphObjects来实现。此外,Plotly还通过Express提供了许多简单的选项,例如,在图中设置成组的颜色,从而产生更强大的可视化效果。

使用上面提到的入住率数据集,通过PlotlyExpress,我创建了带有颜色分组的线图。我们可以看到,仅用两个函数就可以轻松创建这些图。

3

通过Swifter加速pandasapply()

即使在性能很高的笔记本上运行处理Pandas列,我有时也会遇到需要花费很久时间的情况。对此,只需添加一个简单的词,就可加速PandasDataFrame中的应用功能。你只需导入Swifter这个library。

我创建了一个万行的DataFrame,并比较了swifterapply()和普通的vanillaapply()处理代码所花费的时间。我还创建了一个带有简单ifelse条件的虚拟函数,来测试这两种方法。

我们能够将处理时间从7分53秒减少至2分38秒,减少了64.4%。

4

Python中的多进程

当我们讨论降低时间复杂度的问题时,我总是会用多进程来处理多粒度下的数据集,因为python的多进程通过使用多个工作线程,可以为我节省很多时间。

同时,我使用上面创建的万行的数据框演示了多进程的有效性。但这次我添加了一个分类变量,它是从一组元音中选择的一个随机值。

我使用了来自concurrent.futures的for循环,与ProcessPoolExecutor来演示我们运行时减少的时间。

我创建了一个函数,用来分别处理每个元音的分组:

我们可以看到,CPU时间减少了99.3%。但是数据科学家也必须记住,要谨慎使用这些方法,因为数据无法序列化输出,因此,分组使用数据才能更好地利用此功能。

5

将MASE作为指标

随着使用机器学习、深度学习方法来预测时间序列的兴起,有一点变得很重要,那就是,你使用的指标不能仅仅基于预测值和实际值之间的差距。预测模型的指标还应使用时间趋势中的误差,而不是仅用时间点误差,来评估模型的执行情况。你还需输入平均绝对比例误差(MeanAbsoluteScaledError)!

这个指标考虑到了我们使用随机游走方法得到的误差,即上一个时间戳的值将用来预测下一个时间戳。它将模型的误差与朴素预测的误差进行比较。该指标还比较了模型和随机游走的误差。

如果MASE1,则模型的性能比随机游走差。MASE越接近0,预测模型越好。

在本文中,我们介绍了我作为数据科学家经常使用的一些技巧,这些技巧使我的工作生活更轻松。评论分享你的一些技巧!我也很想更多地了解其他数据科学家在他们的工作中使用的技巧。感谢阅读!

原文作者:ShreeVandana

翻译作者:Lia

美工编辑:过儿

校对审稿:JiaweiTong

原文链接:


转载请注明:http://www.aierlanlan.com/rzdk/1079.html