我将在四月份阅读的 4 本与数据相关的书
一定要看看这些书
苏珊·Q·尹在 Unsplash 上的照片
书籍确实是我的命根子;我认为自己是一个狂热的书虫,但每当谈到技术书籍时,我必须收回这句话。由于一些奇怪的原因,技术书籍总是让我感到更困倦而不是感兴趣。
然而,在过去,我设法变戏法似的鼓起勇气睁开眼睛,看完这些书。我已经意识到,每当我这样做了,我就在我所研究的学科或领域取得了巨大的进步,因此这个月我将再次这样做。
</5-free-books-to-take-your-data-science-skills-to-the-next-level-a2026c8cad71>
对于那些有兴趣了解我全年都在读什么书的人,可以看看我的 Instagram 页面,它专门给出我对我正在读的不同书籍的看法。
#1 实用自然语言处理:构建真实世界自然语言处理系统的综合指南
来源: 亚马逊图书页面
这本书是很久以前 Phillip Vollet 给我的,他是 LinkedIn 上非常受欢迎的 NLP 传播者(关注他,你不会后悔),但我不愿意打开它,因为我害怕技术书籍。
他提到,这本书是学习在商业环境中构建、迭代和扩展 NLP 系统,并为特定的行业垂直领域定制它们的最佳指南之一。
#2 信息检索简介
来源: 亚马逊图书页面
我真的不记得是谁向我推荐了这本书,但肯定有人推荐过——我知道这一点的原因是因为这本书已经在我的亚马逊购物篮里放了几个月了,当我在谈话中听到有人提到我觉得有趣的书时,我通常会这样做。我不太确定这本书能提供什么,但我在网上看到了非常好的评论,所以我期待着深入这本书。
这是亚马逊上的图书描述:
课堂测试和连贯,这本教科书教经典和网络信息检索,包括网络搜索和相关领域的文本分类和文本聚类的基本概念。它给出了收集、索引和搜索文档的系统的设计和实现的所有方面的最新处理;评估系统的方法;以及在文本集合上使用机器学习方法的介绍。所有重要的想法都用例子和数字解释,使它成为计算机科学的高年级本科生和研究生的信息检索入门课程的完美教材。基于大量课堂经验的反馈,这本书被精心组织以使教学更加自然和有效。幻灯片和额外的练习(包括给讲师的解答)也可以通过该书的支持网站获得,以帮助课程讲师准备他们的讲座。
#3 用于自然语言处理的转换器
来源: 亚马逊图书页面
对于任何加入 Harpreet Sahota 办公时间的人来说——每周五太平洋标准时间 4.30——那么你会熟悉某个不停地漫谈这本书的人。Thom 在他的数据职业生涯中取得了如此出色的成就,但他毫无疑问赢得了我的尊重,因为他分享了他在数据科学职业生涯中犯下的每一个错误,他都长出了一缕白发——现在这可能没有意义,但看看他的 LinkedIn,你就会明白为什么这让我感动。
变压器目前是许多自然语言处理任务(如机器翻译)的最先进的架构。我已经用 HuggingFace 框架对它们进行了一些涉猎,但是我确信深入研究它们没有坏处。
#4 机器学习工程
来源: 亚马逊图书页面
你们中的一些人可能还记得安德烈·布尔科夫,这本长达一百页的关于机器学习的书《T4》的作者。他带着另一个回来了。据说这本书充满了从最佳实践到构建可扩展的可靠机器学习解决方案的设计模式的金块。任何有助于我改进构建这种规模的 ML 解决方案的东西都会引起我的注意,而这一次,它恰好是安德烈·布尔科夫的一个可靠来源。
以下是谷歌首席决策科学家凯西·科兹尔科夫对这本书的评价:
“你现在看到的是为数不多的真正应用机器学习的书籍之一。没错,你找到了一个!一个真正的应用针在面向研究的东西的干草堆里。干得好,亲爱的读者……除非你实际上寻找的是一本帮助你学习设计通用算法的技能的书,在这种情况下,我希望作者不会因为我告诉你现在逃离并去拿起几乎任何其他机器学习书籍而感到太沮丧。这个不一样”
最后的想法
在 Q1,我大部分时间都在阅读一些我觉得鼓舞人心的人物传记。对 Q2 来说,我的目标是将更多的注意力放在与我的领域更相关的书籍上,这些书籍将帮助我发展和提高作为一名数据科学家的能力。再说一次,如果你有兴趣跟随我的阅读之旅,关注我的 Instagram 。
感谢您的阅读!在 LinkedIn 和 Twitter 上与我联系,了解我关于数据科学、人工智能和自由职业的最新帖子。
相关文章
https://pub.towardsai.net/7-free-online-resources-for-nlp-lovers-26b1e0bba343
Kaggle 之外的 4 个数据科学竞赛平台
以下是一些鲜为人知的 Kaggle 替代品
赛义德·哈桑·迈赫迪摄于佩克斯
Kaggle 是最受欢迎的数据科学社区之一,因举办顶级机器学习竞赛和诱人的奖金池而闻名。这里有 4 个其他快速增长的社区,它们具有挑战性的机器学习问题,您可能会感兴趣。
津迪
截图自 Zindi
Zindi 是一家社会企业,其使命是在非洲建立数据科学生态系统。因此,Zindi 的许多比赛都专注于解决非洲的问题,并涉及非洲数据集。在撰写本文时,有 5 场比赛正在进行,奖金从 3000 美元到 10,000 美元不等。与 Kaggle 类似,对上下文、问题描述、评估指标和数据都解释得很清楚。Zindi 还为每场比赛提供了一个专门的论坛,为参与者提供了一个讨论和与比赛赞助商或主办方互动的渠道。
与 Kaggle 不同,Zindi 不提供云托管的笔记本电脑,并要求参与者使用自己的计算资源来训练和评估机器学习模型。查看这篇文章,获取免费的云 GPU 计算资源。
数据驱动
来自数据驱动的屏幕截图
数据驱动旨在通过使用数据科学应对紧迫挑战来创造社会影响,因此许多比赛都与健康、气候变化、教育和保护有关。在撰写本文时,有两个奖金竞赛,奖金池分别为 20,000 美元和 500,000 美元。与 Kaggle 类似,对上下文、问题描述、评估指标和数据都解释得很清楚。还有一个论坛和排行榜。鼓励参与者在 github 或博客上分享他们的解决方案。DataDriven 没有像 Kaggle 这样的云托管笔记本电脑,因此参与者需要使用自己的计算资源来培训模型。
田驰
截图自田驰
天池是阿里巴巴集团云计算子公司阿里云打造的大数据竞赛平台。在撰写本文时,有 4 个奖金池从 10,000 美元到 1,000,000 日元(约 157,000 美元)不等的竞赛正在进行。多年来,天池主办了一些与学术会议相关的重大比赛,如 CVPR 2020 和 AAAI 2022。与 Kaggle 类似,对上下文、问题描述、评估指标和数据都解释得很清楚。还有一个论坛和排行榜。虽然论坛经常充满了热烈的讨论,但许多讨论都是中文的,因此谷歌翻译可能会派上用场。
与 Kaggle 类似,天池提供的云托管笔记本,CPU 运行时间不限,GPU 运行时间有限。参与者可以选择创建私人笔记本或在公共论坛上分享他们的解决方案。
机器黑客
机器黑客截图
Machine Hack 是一个为数据科学和人工智能爱好者提供训练营、模拟评估、实践和黑客马拉松的社区。黑客马拉松部分举办了各种机器学习挑战,参与者可以在其中竞争。在撰写本文时,有 1 个奖金为 70,000 印度卢比(约 1000 美元)的黑客马拉松和许多其他针对初学者的实践黑客马拉松。与 Kaggle 类似,向参与者清楚地解释了上下文、数据和评估指标。排行榜用于对参与者的解决方案进行排名,还有一个供社区互动的论坛。虽然 Machine Hack 并不像 Kaggle 那样托管云笔记本,但他们允许参与者上传 Jupyter 笔记本,以便与社区共享。
结论
大多数提到的数据科学竞赛平台都具有与 Kaggle 类似的功能,只有云托管笔记本除外。在 Kaggle 的 4 个替代品中,只有天池提供云托管笔记本电脑。我写过一篇关于如何获得免费 GPU 计算资源的文章。
据我所知,这些平台都有活跃的比赛和奖金池。欢迎在下面的评论中推荐其他平台。
4 个数据可视化工具,改变您的数据叙述方式
虽然 Tableau 很棒,但这不是唯一的选择。
杰森·库德里特在 Unsplash 上拍摄的照片
乍一看,数据科学似乎总是一个错综复杂的领域,或者我应该说是多个领域的集合。它非常宽泛模糊,而且可以争论复杂。但是,事实是,数据科学可以用一句话非常简单地定义。
数据科学是将从不同资源收集的数据解释成有用信息的领域。或者换句话说,这就是倾听和翻译一些数据试图传递的故事。
我喜欢将数据科学视为讲述数据故事的艺术。你越擅长讲故事,这个故事就越有吸引力。也就是说,找到数据所讲述的故事并不总是容易的。事实上,这从来都不容易。简化寻找故事过程的一种方法是通过数据可视化。
数据可视化不仅仅是数据科学项目的一个步骤;这是它的核心。然而,通常情况下,开发人员不希望花很长时间来设计可视化。这就是为什么像 Tableau 这样的工具为开发人员提供了一个很好的选择,让他们在代码上花更多的时间,同时产生有价值的、清晰的、引人注目的数据可视化。
Tableau 可能是最知名和最常用的数据可视化工具;它健壮、有效,可以用来生成你能想到的任何类型的可视化。然而,Tableau 并不是唯一优秀的数据可视化工具。
本文将介绍 4 种免费和付费的数据可视化工具,它们将帮助您创建引人注目的可视化效果,并让您以最佳方式讲述数据的故事。
№1:谷歌数据工作室
我们列表上的第一个工具是谷歌数据工作室。谷歌数据工作室是谷歌营销平台的一部分,旨在帮助开发人员构建、设计和使用交互式、引人注目的数据可视化和数据仪表板,可以在团队成员以及客户和公司之间共享。
Google Data Studio 允许您同时创建不同数据集的可视化,它是为团队访问相同的数据和仪表板而设计的,并且是免费的。Google Data Studio 可以与其他 Google 产品集成,如 Google Analytics、Ads、Google cloud 和 BigQuery,以创建强大、健壮的配对,可用于各种数据探索任务。
2 号:数据包装器
创建和设计引人注目的数据可视化本身就是一种艺术形式,但对于没有强大艺术技能的人来说,它也需要简单易用。我们列表中的第二个工具是 Datawrapper。这个工具是由艺术家、平面设计师、开发人员和记者设计的。它被设计成学习速度快,使用灵活,功能强大,足以创建美观、易于理解的可视化效果。
Datawrapper 是一个完全基于网络的服务,为不同需求的开发者提供付费和免费计划。免费计划允许你生成 10,000 个图表,这给你时间来决定这个工具是否适合你。Datawrapper 还提供了一些类和教程,教您如何最有效地使用该平台并尽可能创建最佳的可视化效果。
№3:信息图
十几年前,一种新的创建演示文稿的工具进入了市场,这种方法可以创建一个令人惊叹的充满动感的演示文稿,保证能抓住观众的注意力。那个工具就是 Prezi 。该工具后来扩展到包括其他致力于创建引人注目的可视化的服务。今天出现在我们名单上的工具是我一直以来最喜欢的工具之一,信息图。
Infogram 是一个界面友好的易用工具。它提供了 30 多种类型的图表和可视化,可以从 A 到 z 进行定制。Infogram 还为我们这些没有太多时间的人提供了使用预制模板创建数据仪表板的选项。Infogram 提供了选项有限的免费版本和每月 19 美元的付费版本。
№4:融合图表
名单上最后但同样重要的是融合图表。FusionCharts 是一个基于 JavaScript 的工具,允许您为 web 和移动用户创建通用的数据仪表板。fision charts 150 多种图表类型和 1000 多种地图类型。为了使该工具更加健壮,它可以与 React 和 jQuery 等其他 JavaScript 框架以及 Python(Django)和 Ruby on Rails 等其他编程语言集成。
如果您不想编写代码来生成可视化,FusionCharts 还为所有包含的图表和地图提供了现成的代码,以简化嵌入、设计和创建可视化的过程。
最后的想法
作为一名数据科学家,我们需要完成的主要任务是成功地解释数据讲述的故事,从故事中提取见解,然后使用它们做出更好的决策或预测未来的数据。这些任务是所有数据科学分支的核心,从简单的回归到自然语言处理、神经网络、计算机版本和深度学习。
寻找和讲述数据故事的最佳方式是将其可视化。数据可视化不仅仅是任何数据科学项目的另一个步骤。这是决定你整个项目成败的关键步骤之一。如果您在数据探索步骤中使用了错误的数据可视化技术,那么您可能会错过一些基本的模式、趋势或见解。
如果你花了这么多时间开发和训练你的模型,最后,你以一种枯燥的、不可描述的方式来可视化你的结果,你的客户可能会对你的结果不屑一顾,并努力寻找你工作的真正意义。这就是为什么数据可视化应该是每个数据科学家应该努力的主要技能之一。
幸运的是,有许多工具可以用来创建引人注目的、漂亮的、有意义的可视化和数据仪表板。这些工具将是您构建的数据科学工具的重要补充,可以帮助您构建更好、更健壮的项目。
4 种不同的时间序列分析方法
数据分析
一个现成的 Python 代码,包括用于时间序列分析的不同策略和库
图片由 Gerd Altmann 从 Pixabay 拍摄
在本教程中,我将使用以下 4 种不同的方法来说明如何分析时间序列:
- 手动设置模型参数和多步预测
- 手动设置模型参数和单步预测
- 模型参数的自动设置和多步预测
- 分解。
前三种方法利用差分使时间序列平稳。
你可以从我的 Github 库下载本教程的代码。
数据集导入
首先,我导入了 1990 年至 2019 年意大利入境游客的相关数据集,并将其转换为时间序列。数据摘自欧洲统计:旅游业年度数据。我将数据集作为一个pandas
数据帧加载。
import pandas as pddf = pd.read_csv('source/tourist_arrivals.csv')
df.head()
作者图片
构建时间序列
现在,我通过以下两个步骤将数据集转换为时间序列:
- 包含日期的列必须转换为 datetime。这可以通过函数
to_datetime()
来完成,该函数将字符串转换成日期时间。 - 将 dataframe 的索引设置为包含日期的列。这可以通过应用于数据框的功能
set_index()
来完成。
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
ts = df['value']
在开始分析之前,我先画出时间序列。我用的是matplotlib
库。
import matplotlib.pyplot as pltplt.plot(ts)
plt.title('Number of tourists arrivals to Italy')
plt.ylabel('Number of tourists arrivals')
plt.grid()
plt.show()
作者图片
时间序列分裂
通常,在执行时间序列分析时,不会将时间序列拆分为训练集和测试集,因为要获得良好的预测,需要所有的时间序列。
但是,在本教程中,我将时间序列分为两部分——训练和测试——以便测试测试模型的性能。我把时间序列的第一部分作为训练集,第二部分作为测试集。
每个模型将在训练集上训练,并在测试集上测试。
ts_train = ts[:'2019-03-01']
ts_test = ts['2019-04-01':]
检查平稳性
平稳时间序列是指具有稳定/恒定统计特性的时间序列,例如一段时间内的均值和方差。
对平稳的时间序列进行长期预测是可能的。因此,我必须测试训练时间序列是否是平稳的。这可以通过增强的 Dickey-Fuller 测试来完成,由statsmodels
包的adfuller()
函数实现。adfuller()
测试返回测试统计数据adf
、pvalue
和critical_values
。pvalue 指定测试结果是否有意义。如果pvalue < alpha
,则测试有意义,其中alpha
是一个小值,例如0.05
。
在扩展的 Dickey-Fuller 检验中,零假设是时间序列不是平稳的。如果测试统计数据adf
大于临界值,则零假设为真。因此,我定义了一个函数,叫做check_stationarity()
,它检查一个时间序列是否是平稳的。
from statsmodels.tsa.stattools import adfuller
import numpy as npdef check_stationarity(ts):
dftest = adfuller(ts)
adf = dftest[0]
pvalue = dftest[1]
critical_value = dftest[4]['5%']
if (pvalue < 0.05) and (adf < critical_value):
print('The series is stationary')
else:
print('The series is NOT stationary')
我用我的时间序列作为参数调用函数:
check_stationarity(ts_train)
它给出了以下输出:
The series is NOT stationary
由于时间序列不是平稳的,我转换它,通过差分一次,我再次检查平稳性。
ts_diff = ts_train.diff()
ts_diff.dropna(inplace=True)
check_stationarity(ts_diff)
它给出了以下输出:
The series is stationary
现在,时间序列是稳定的,因此我可以将训练模型的差序设置为 1。
d = 1
我画出了不同的时间序列:
plt.plot(ts_diff)
plt.title('Differenced Time Series')
plt.grid()
plt.show()
作者图片
1 —手动设置模型参数和多步预测
第一种方法是使用季节自回归综合移动平均(SARIMA)模型来预测到达意大利的游客数量。
SARIMA 模型需要三个参数:p、d 和 q。d 的值已经设定,因为它指定了使时间序列平稳所需的积分顺序。
在这种方法中,我尝试通过手动查看部分自相关和相关图来设置模型 p 和 q 参数。
部分自相关(PACF)用于计算 p 参数。我通过statsmodels
函数plot_pacf()
绘制 PACF 图。
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plot_pacf(ts_diff, lags =12)
plt.show()
作者图片
我注意到 PACF 在置信区间外的最大值(浅蓝色)是 10。因此,我尝试p = 10
。
p = 10
现在我绘制自相关(ACF)图来计算 q 值。
plot_acf(ts_diff, lags =12)
plt.show()
作者图片
ACF 超出置信区间的最大值是 11。然而,我试着更保守一些,我试着 q = 7。
q = 7
一旦设置了 p、q 和 d 参数,我就可以运行模型了。我利用了statsmodels
的SARIMAX
模型。我创建了模型,并适应了训练时间序列。
from statsmodels.tsa.statespace.sarimax import SARIMAXmodel = SARIMAX(ts_train, order=(p,d,q))
model_fit = model.fit()
我可以使用训练好的模型进行预测。我将利用模型来预测相当于测试时间序列长度的步骤数量。
n_test = ts_test.shape[0]
ts_pred = model_fit.forecast(steps=n_test)
现在我可以画出测试时间序列和预测值之间的比较。
plt.plot(ts_pred, label='prediction')
plt.plot(ts_test, label='actual')
plt.title('Multi-step Forecasting (manual parameters)')
plt.legend()
plt.grid()
plt.xticks(rotation=90)
plt.show()
作者图片
为了评估该模型,我计算了归一化均方根误差(NRMSE)指标。
from statsmodels.tools.eval_measures import rmse
nrmse = rmse(ts_pred, ts_test)/(np.max(ts_test)-np.min(ts_test))
nrmse
它给出了以下输出:
0.06079334505980257
2 —手动设置模型参数和单步预测
在这种情况下,我利用前面的模型进行单一预测(单一步骤)。然后,我将使用预测结果重新训练该模型,并执行另一次预测。依此类推,直到达到所需的预测数量。
ts_train_step = ts_train
ts_pred_step = pd.Series()
for i in range(0, n_test):
model_step = SARIMAX(ts_train_step, order=(p,d,q))
model_step_fit = model_step.fit()
current_pred = model_step_fit.forecast(steps=1)
ts_train_step = ts_train_step.append(current_pred)
ts_pred_step = ts_pred_step.append(current_pred)
我计算了 NRMSE 误差。
nrmse = rmse(ts_pred_step, ts_test)/(np.max(ts_test)-np.min(ts_test))
nrmse
它给出了以下输出:
0.06226085324175411
我注意到单步模型比多步模型表现稍差。或许,单步模型更适合长期预测。
plt.plot(ts_test, label='actual')
plt.plot(ts_pred_step, label='prediction step')
plt.title('Single-step Forecasting (manual parameters)')
plt.legend()
plt.grid()
plt.xticks(rotation=90)
plt.show()
作者图片
3 —模型参数的自动设置和多步预测
在这种情况下,我利用pmdarima
Python 库来自动调整 SARIMA p 和 q 参数。具体来说,我利用了auto_arima()
函数,它接收 p 和 q 参数的测试范围以及其他有用的信息作为输入。我设置stepwise=False
是为了测试 p 和 q 的所有可能组合。此外,我将设置seasonal=True
使用一个萨里玛模型。
import pmdarima as pm
stepwise_model = pm.auto_arima(ts_train,start_p=1, d=1, start_q=1,
max_p=12, max_q=12,
m=12,
seasonal=True, stationary=False,
information_criterion='aic',
stepwise=False,
suppress_warnings=True)
stepwise_model.fit(ts_train)
所获得的模型具有以下参数:
ARIMA(order=(1, 1, 3), seasonal_order=(0, 1, 0, 12), suppress_warnings=True)
现在我用最好的模型进行预测。
ts_pred_auto = stepwise_model.predict(n_periods=n_test)
我绘制结果。
plt.plot(ts_test.index,ts_pred_auto, label='auto sarima')
plt.plot(ts_test, label='actual')
plt.title('Single-step Forecasting (automatic parameters)')
plt.grid()
plt.xticks(rotation=90)
plt.legend()
plt.show()
作者图片
我计算了 NRMSE 误差。
nrmse = rmse(ts_pred_auto, ts_test)/(np.max(ts_test)-np.min(ts_test))
nrmse
它给出了以下输出:
0.07650715589047709
4 —分解
相对于以前的方法,这种方法将时间序列分解成其主要成分,然后分别分析每个成分。
首先,我通过statsmodels
库的seasonal_decompose()
函数分解训练时间序列。我利用乘法分解。我获得了原始时间序列的趋势、季节性和残差。我还绘制了分解的时间序列。
from statsmodels.tsa.seasonal import seasonal_decomposets_decomposed = seasonal_decompose(ts_train,model='multiplicative',extrapolate_trend=True)ts_trend = ts_decomposed.trend
ts_seasonal = ts_decomposed.seasonal
ts_residual = ts_decomposed.resid
ts_decomposed.plot()
plt.show()
作者图片
现在我分别分析每一个组成部分。
趋势预测
我将建立一个基于多步预测的模型。我检查趋势时间序列是否是平稳的。
check_stationarity(ts_trend)
它给出了以下输出:
The series is NOT stationary
由于趋势时间序列不是平稳的,我尝试对其进行差分。
ts_trend_diff = ts_trend.diff()
ts_trend_diff.dropna(inplace=True)
check_stationarity(ts_trend_diff)
它给出了以下输出:
The series is stationary
现在趋势时间序列是稳定的,因此我可以设置 d = 1。
d = 1
类似地,对于自动设置参数的多步预测,我利用了auto_arima()
函数,指定季节性为假。在这种情况下,我将使用 ARIMA 模型。
stepwise_model = pm.auto_arima(ts_trend,start_p=1, d=1, start_q=1,
max_p=12, max_q=12,
m=12,
seasonal=False, stationary=False,
information_criterion='aic',
stepwise=False,
suppress_warnings=True)
stepwise_model.fit(ts_trend)
它返回以下模型:
ARIMA(order=(4, 1, 1), suppress_warnings=True)
我使用最佳模型进行预测。
trend_pred_auto = stepwise_model.predict(n_periods=n_test)
季节性预测
我对季节性重复同样的程序。我检查平稳性。
check_stationarity(ts_seasonal)
它给出了以下输出:
The series is stationary
这个数列是稳定的,所以我设 d = 0。
d = 0
我将auto_arima()
模型与seasonal=True
一起用于 SARIMA 模型。
stepwise_model = pm.auto_arima(ts_seasonal,start_p=1, d=0, start_q=1,
max_p=12, max_q=12,
m=12,
seasonal=True, stationary=True,
information_criterion='aic',
stepwise=False,
suppress_warnings=True)
stepwise_model.fit(ts_seasonal)
seasonal_pred_auto = stepwise_model.predict(n_periods=n_test)
现在,我可以通过计算季节和趋势分量之间的乘积来合成原始时间序列。
ts_pred_decompose = trend_pred_auto * seasonal_pred_auto
我绘制结果。
plt.plot(ts_test.index, ts_pred_decompose, label='decompose')
plt.plot(ts_test, label='actual')
plt.title('Decomposition')
plt.grid()
plt.xticks(rotation=90)
plt.legend()
plt.show()
作者图片
最后,我计算了 RMSE 误差。
nrmse = rmse(ts_pred_decompose, ts_test)/(np.max(ts_test)-np.min(ts_test))
nrmse
它给出了以下输出:
0.08746142483666638
摘要
在本教程中,我举例说明了 4 种不同的时间序列预测方法:手动和自动设置参数的多步预测,手动设置参数的单步预测,以及分解。
就 NRMSE 而言,所有方法都有非常相似的行为。但是,在这种特定情况下,最好的模型是手动设置模型参数和多步预测。
如果你想了解我的研究和其他活动的最新情况,你可以在 Twitter 、 Youtube 和 Github 上关注我。
参考
相关文章
在 Python Seaborn 中改变字体大小的 4 种不同方法
数据可视化 101
数据可视化是数据科学不可或缺的一部分。我们在探索性数据分析、模型评估和交付结果中使用它们。一个准备充分的数据可视化有可能比简单的数字提供更多的信息。
Python 作为数据科学系统中的顶级编程语言,有几个数据可视化库。其中最受欢迎的是 Seaborn,它构建在 Matplotlib 之上。
与 Matplotlib 相比,Seaborn 提供了一个高级接口,这意味着语法更简单,但我们对可视化的控制更少。
在本文中,我们将关注一个特定的任务:在 Seaborn 图中改变轴标签和标题的字体大小。
我有一个熊猫数据框,有两列,分别叫做“值”和“时间”。我们将使用此数据框创建线图。
让我们从使用当前设置创建一个线图开始。
(图片由作者提供)
(图片由作者提供)
字体太小,我们几乎看不清轴标题。
1.设置主题功能
改变字体大小的第一种方法是使用set_theme
功能。它会更改全局默认值,因此调整将是永久性的,直到您再次更改它们。
如果你计划在所有的图中使用相同的字体大小,那么这是一个非常实用的方法。
(图片由作者提供)
(图片由作者提供)
需要注意的是set_theme
功能不仅仅用于改变字体大小。它允许调整图的几个属性。
2.轴级别函数
更改全局设置并不总是最佳选择。谢天谢地,这不是改变字体大小的唯一方法。
我们也可以使用轴级函数。除了确定特定于绘图的字体大小,我们还可以为 x 轴、y 轴和标题使用单独的字体大小。
(图片由作者提供)
(图片由作者提供)
3.集合 _ 轴 _ 标签函数
Seaborn 为绘制各种数据可视化提供了图形级别的接口。这些界面对相似类型的图进行分组,并允许使用相同的功能创建它们。
Seaborn 中有 3 个图形级函数,用于在 FacetGrid 上创建以下图:
图来源: Seaborn 文档
如果您想了解关于这些图形级函数的更多信息,我还写了一篇文章,用几个例子详细解释了它们:
💔-seaborn-functions-that-cover-almost-all-your-visualization-tasks-793f76510ac3>
在表达了对这些伟大功能的赞赏之后,让我们回到最初的话题。
在由这 3 个函数创建的图上,我们可以使用set_axis_labels
函数改变轴标签的字体大小。
(图片由作者提供)
(图片由作者提供)
4.Matplotlib 函数
由于 Seaborn 是基于 Matplotlib 构建的,所以在某些情况下,我们可以利用 Matplotlib 的功能。
下面是我们如何使用 Matplotlib 函数操作轴标签和标题。
(图片由作者提供)
(图片由作者提供)
结论
伟大的数据可视化有两个方面。第一个是传递的信息。图表应该以一种更容易理解和推断有意义结果的方式向我们展示数据。
第二个是视觉属性。你如何演示和你演示什么一样重要。情节应该吸引人,易于阅读,不受干扰。正确设置字体大小是使你的可视化效果更吸引人的重要部分。
最后但同样重要的是,如果你还不是中级会员并打算成为其中一员,我恳请你使用以下链接。我将从你的会员费中收取一部分,不增加你的额外费用。
https://sonery.medium.com/membership
感谢您的阅读。如果您有任何反馈,请告诉我。
使用 PySpark 创建新列的 4 种不同方式
了解如何在 Spark 数据框中创建新列
我们生活在大数据时代。收集、存储和传输数据变得非常容易。随着数据量的增加,传统工具开始变得不足。
当数据太大而无法用传统的工具和技术处理时,我们应该使用 Spark 等支持分布式计算的工具和技术。
Spark 是一个用于大规模数据处理的分析引擎。它让我们能够将数据和计算分散到集群上,从而大幅提升性能。
PySpark 是 Spark 的 Python API。它结合了 Python 的简单性和 Spark 的高效性,这种合作得到了数据科学家和工程师的高度赞赏。
在本文中,我们将介绍使用 PySpark SQL 模块创建新列的 4 种方法。
第一步是导入库并创建 Spark 会话。
from pyspark.sql import SparkSession
from pyspark.sql import functions as Fspark = SparkSession.builder.getOrCreate()
我们还在模块中导入了函数,因为我们将在创建列时使用其中的一些函数。
下一步是获取一些数据。我们总是可以通过从外部文件读取数据来创建数据框。在本文中,我们将使用createDataFrame
函数创建自己的数据框。
data = [
("John","Doe",28,45000,1,0,1),
("Jane","Doe",26,52000,1,1,1),
("Matt","Anderson",34,62000,1,0,0),
("Ashley","James",30,58000,1,1,0),
("Amber","Murray",24,48000,1,0,0)
]schema = StructType([
StructField("FirstName",StringType(),True),
StructField("LastName",StringType(),True),
StructField("Age",IntegerType(),True),
StructField("Salary", IntegerType(), True),
StructField("Checking", IntegerType(), True),
StructField("Savings", IntegerType(), True),
StructField("CreditCard", IntegerType(), True)
])df = spark.createDataFrame(data=data, schema=schema)df.show()
Spark 数据框(图片由作者提供)
“支票”、“储蓄”和“信用卡”列表明客户是否拥有该产品。
schema 参数是可选的,但是最好指定方案以确保数据类型是正确的。
df.printSchema()
数据框的方案(图片由作者提供)
1.用常数值创建新列
withColumn
函数可以用来创建一个新列。为了创建一个常量值,我们需要用lit
函数指定值,而不管数据类型。
df = df.withColumn("IsCustomer", F.lit(1))df.show()
(图片由作者提供)
withColumn
函数的第一个参数是新列的名称,第二个参数指定值。
2.基于其他列创建新列
我们可以通过使用另一列中的值来计算新列的值。withColumn
功能也允许进行计算。
df = df.withColumn(
"NumberOfProducts",
F.col("Checking") + F.col("Savings") + F.col("CreditCard")
)df.select("Checking","Savings","CreditCard","NumberOfProducts").show()
(图片由作者提供)
“产品数量”列是支票、储蓄和信用卡列的总和。我们需要使用col
函数写入列名。
3.创建条件列
我们可以使用when
函数根据一个或多个条件指定新列的值。
让我们创建一个指示客户是否至少有一种产品的列。如果产品数量为一个或多个,新列的值为 1。否则为 0。
df = df.withColumn(
"HasProduct",
F.when(F.col("NumberOfProducts") >= 1, 1).otherwise(0)
)df.select("NumberOfProducts", "HasProduct").show()
(图片由作者提供)
该条件作为when
函数的第一个参数写入。然后,我们为符合给定条件的行指定值。为了给不同的条件指定不同的值,我们可以将when
功能组合成一个链式操作。不符合任何给定条件的行的值被写入otherwise
部分。
4.在 select 函数中创建列
select
函数可用于从数据框中选择列。它非常类似于 SQL 的 select 语句。
我们通常在select
函数中写入列名。我们还可以在select
函数中进行计算来创建新的列。
df_new = df.select(
"FirstName",
"LastName",
"NumberOfProducts",
F.lit(3 - df.NumberOfProducts).alias("Potential")
)df_new.show()
(图片由作者提供)
“潜在”列显示可以向客户销售多少新产品。因此,它的计算方法是从我们产品组合中的产品总数(3)中减去客户拥有的产品数。
alias
方法用于为派生列或计算列指定一个名称。
结论
我们已经介绍了使用 PySpark SQL 模块创建新列的 4 种不同方法。
需要注意的是,Spark 针对大规模数据进行了优化。因此,在处理小规模数据时,您可能看不到任何性能提升。事实上,在处理小数据集时,Pandas 可能会比 PySpark 表现得更好。
如果你想在我发表新文章时收到电子邮件,别忘了订阅。
你可以成为 媒介会员 解锁我的全部写作权限,外加其余媒介。如果您使用以下链接,我将收取您的一部分会员费,无需您支付额外费用。
https://sonery.medium.com/membership
感谢您的阅读。如果您有任何反馈,请告诉我。
创建熊猫数据框架的 4 种不同方法
熊猫难以置信的灵活性
纳塔莉亚·塞加托在 Unsplash 上的照片
Pandas 是 Python 的一个数据分析和操作库。它为有效的数据分析提供了许多功能和方法。用于存储数据的核心 Pandas 对象称为 dataframe,它由带标签的行和列组成。
就创建数据框架的方式而言,Pandas 非常灵活。在本文中,我们将介绍 4 种创建数据帧的不同方法。
1.Csv 或 excel 文件
Csv 是最常用的文件格式之一。因此,创建数据帧的首要方法是读取 csv 文件,这在 Pandas 中是一种简单的操作。我们只需要给出 read_csv 函数的文件路径。
read_csv 函数非常通用。它有几个参数,允许在读取时修改 csv 文件。我们也可以根据列和行部分地读取文件。
read_csv 函数非常类似。我们不使用 csv,而是使用它从 excel 文件创建数据帧。
2.Numpy 数组
由于一个数据帧可以被认为是一个二维数据结构,我们可以使用一个二维数组来创建一个数据帧。
import pandas as pd
import numpy as npA = np.random.randint(10, size=(4,3))A
array([[9, 2, 0],
[4, 3, 0],
[2, 3, 1],
[7, 1, 3]])
a 是一个 4 行 3 列的二维数组。我们可以将它传递给 DataFrame 函数。
df = pd.DataFrame(A)df
(图片由作者提供)
Pandas 默认为列分配整数索引。但是,可以使用 columns 参数对其进行自定义。
df = pd.DataFrame(A, columns=['cola', 'colb', 'colc'])df
(图片由作者提供)
Numpy 可以方便地创建样本数据。我们可以用整数和浮点数创建数组,也可以用特定分布的随机变量创建数组。Numpy 还提供函数来创建用常数值填充的数组。
3.词典
Python 字典也常用于创建数据框。键代表列名,行用值填充。
我们来做一个简单的例子。
dict_a = {
'col_a':[1,2,3,4],
'col_b': [2,5,6,7],
'col_c':['a','b','c','d']
}df = pd.DataFrame(dict_a)df
(图片由作者提供)
我们还可以将 numpy 数组指定为字典值,这样就可以用这种方法创建更多的函数数据帧。
dict_a = {
'col_a': np.random.randint(100, size=500),
'col_b': np.random.random(500),
'col_c': np.random.randn(500)
}df = pd.DataFrame(dict_a)print(df.shape)
(500, 3)df.head()
(图片由作者提供)
4.目录
List 是 Python 中内置的数据结构。它表示为方括号中的数据点集合。列表可用于存储任何数据类型或不同数据类型的混合。
从列表中创建数据帧是没有意义的。然而,我们可以使用嵌套列表(例如列表列表)来创建数据帧。
让我们首先创建一个列表列表。
lst_a = [['John', 23, 182, 'A'], ['Jane', 25, 179, 'A'], ['Mary', 21, 177, 'B']]
变量 lst_a 包含 3 个项目,每个项目是 4 个项目的列表。我们可以将 lst_a 传递给 dataframe 函数。
df = pd.DataFrame(lst_a)df
(图片由作者提供)
嵌套列表的第一项构成第一列,第二项构成第二列,依此类推。与使用字典不同,从嵌套列表创建的 dataframe 具有整数列标签。我们可以使用 columns 参数来自定义列标签。
df = pd.DataFrame(lst_a, columns=['Name', 'Age', 'Height', 'Grade'])df
(图片由作者提供)
就像列表一样,我们可以从元组创建数据帧。元组是由逗号分隔并包含在括号中的值的集合。与列表不同,元组是不可变的。不变性可以被认为是元组的识别特征。
结论
您可能并不总是需要创建自己的数据框架,但是知道如何创建数据框架是有好处的。你可以用它来练习或实现一个解决方案。通过使用 Python 内置的数据结构和 Numpy 数组,您可以创建高度定制的数据帧。
感谢您的阅读。如果您有任何反馈,请告诉我。
实施 CatBoost 的 4 个简单步骤
关于如何应用新兴数据科学算法的端到端教程
在Unsplash【1】上由 Manja Vitolic 拍摄的照片。
目录
- 介绍
- 安装和导入
- 定义数据集
- 应用模型
- 预测
- 摘要
- 参考
介绍
CatBoost【2】在以 logloss 为误差度量的基准数据集上击败了许多其他流行的机器学习算法。它主要击败了 LightGBM 和 XGBoost,这两个工具最近不仅成为了数据科学竞赛的标准,也成为了专业设置的标准。现在是学习这个强大的库的时候了,下面是你如何通过四个简单的步骤来实现它。
安装和进口
本教程将使用流行的数据科学工具,如 Python 和 Jupyter Notebook。首先,我们将从三个简单的安装命令开始,然后转移到您的第一个基本 CatBoost 回归模型所需的所有必要导入,正如您将看到的,这可能是您的第一个也是最后一个,因为这就是 CatBoost 在没有太多调整或额外代码的情况下是多么令人印象深刻。
以下是主要的安装命令:
!pip install catboost!pip install ipywidgets!jupyter nbextension enable — py widgetsnbextension
以下是主要的导入命令:
from catboost import CatBoostRegressorfrom sklearn.model_selection import train_test_splitimport numpy as npimport pandas as pd
如您所见,安装和导入只需要几行代码。我们还将导入其他常用的库,如 numpy、pandas 和 sklearn。接下来,我们将讨论数据集过程。
定义数据集
Christopher Gower 在Unsplash【3】上拍摄的照片。
有几种方法可以导入数据集,但我最常用的方法是用 pandas 导入 CSV 文件。你将建立你的 x 属性和你的 y 变量,你试图预测的变量。对于训练和测试分割,您可以按照 75:25 的常见方式隔离数据集。这种随机状态是为了让你在未来或与他人合作时能够复制同样的分裂。
以下是定义命令的主要数据集:
dataframe = pd.read_csv('file_path_to_your_dataset.csv')X = dataframe[['X_feature_1', 'X_feature_2', etc.,]]y = dataframe['target_variable']X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75, random_state=42)
应用模型
当应用 CatBoost 模型时,它的工作方式类似于其他 sklearn 方法。然而,最重要的部分是指定您的分类变量,这样您就可以从 CatBoost 模型中获得最大收益。此外,CatBoost 有一些很棒的图形,可以可视化迭代过程中的错误度量改进,所以如果您想直观地看到训练集和测试集随着时间的推移是如何比较的,将图形设置为True
是一个很好的方法。我还为回归模型添加了一个常见的loss function
和RMSE
的evaluation metric
。默认的n_estimators
是 100,这是一个很好的起点,如果你看到模型在最后一轮仍在改进,那么你可以增加迭代的次数。
以下是主要的模型命令:
CAT_FEATURES = [] #list of your categorical features# set up the model
catboost_model = CatBoostRegressor(n_estimators=100,
loss_function = 'RMSE',
eval_metric = 'RMSE',
cat_features = CAT_FEATURES)# fit model
catboost_model.fit(X_train, y_trian,
eval_set = (X_test, y_test),
use_best_model = True,
plot = True)
预测
也许最简单也是最有收获的一步是看你的预测。您可以使用 predict 方法的一些其他有用的方式是,通过将两个索引都设置为true
的内部连接将原始数据帧与您的预测合并,以便您可以看到导致这些预测的特征。这个命令也遵循大多数数据科学家习惯的典型 sklearn 方法。
下面是主要的预测命令:
# get your predictions
preds = catboost_model.predict(X_test)
摘要
照片由 krakenimages 在Unsplash【4】上拍摄。
我希望你喜欢这个关于 CatBoost 的简短教程。这真的是一个强大的机器学习算法和库,任何人都可以实现。它的设计使得参数调整通常是不必要的,默认参数是最好的。此外,还有其他重要的可视化工具可供您使用,它们是由流行的 SHAP 库制作的。本文的目的是向您介绍 CatBoost,接下来您所需要的就是这段代码和您的数据集,以开始进行您的第一次模型预测。
以下是所有步骤的总结:
* Installation and Imports* Define Dataset* Apply Model* Predict
我希望你觉得我的文章既有趣又有用!如果您以前使用过 CatBoost,请在下面随意评论。这对你现在的数据科学事业有帮助吗?你同意还是不同意,为什么?
请随时查看我的个人资料和其他文章,也可以通过 LinkedIn 联系我。我与这些提到的公司没有关系。
感谢您的阅读!
参考
[1]照片由 Manja Vitolic 在Unsplash(2018)上拍摄
[2] Yandex, CatBoost ,(2021)
[3]Christopher Gower 在 Unsplash 上拍摄的照片,(2017)
[4]照片由 krakenimages 在Unsplash(2020)上拍摄
我参加了 4 门免费课程来学习数据科学的 Python
我选了 10 多门课程后,选择了初级和高级免费课程。
Jana Leu 在 Unsplash 上的照片
在为一门课程付费之前,最好先查看一下网上发布了什么——有大量高质量的免费内容。这是我刚开始学数据科学 Python 的时候做的。我查看了付费数据科学课程的课程表,然后搜索了所有与 Python 相关的内容。
在选修了 10 多门课程后,我选择了我所学的最好的 4 门免费课程来学习数据科学的 Python。这 4 门课程涵盖了我在“学习数据科学 Python 的 4 个阶段”(尤其是第 1、2 和 4 阶段)中提到的大部分内容
虽然在完成这些课程后,你不会得到一个很好的证书,但你将获得的知识是无价的。
学习 Python——初学者的完整课程
这个 4 小时的 Python 初学者课程涵盖了你在学习数据科学中使用的库之前需要学习的所有 Python 基础知识。这是一门 Python 速成课程——当我学习这门课程时,我对编程一无所知。课程将向你展示如何设置 Python,教你如何打印你的第一个“Hello World”,并解释 Python 中的所有核心概念。
请不要跳过 Python 的基础知识,直接跳到数据科学的基础知识。请记住,Python 是一种编程语言,不仅在数据科学中有应用,而且在许多领域中都有应用。一些 Python for Data Science 课程可能会跳过将来可能会派上用场的核心 Python 概念。
本课程涵盖的一些数据科学中经常使用的主题包括:
- 变量和数据类型
- 列表、字典、元组、嵌套列表
- 函数、返回语句、If 语句
- For 循环,While 循环,嵌套循环
- 尝试/除了,读写文件
- Python 解释器、模块、Pip 类
- 对象,对象函数,继承
除此之外,还有实践练习,你可以将学到的所有概念付诸实践。您将构建一个基本的计算器、猜测姓名、翻译器和一个多项选择测验。最重要的是,讲师拥有丰富的 Python 知识、清晰的解释和引人入胜的交付。
Python 用于数据分析课程
这个更像是一个播放列表而不是一道菜;然而,你会在这个列表中找到比其他付费课程更有用的讲座。
这个播放列表中的前 8 个视频使得成为一个 10 小时的完整长度的数据分析课程。它从数据科学家用来建立数据集的最流行的数据收集技术开始——网络搜集(在这里你可以找到其他很棒的网络搜集课程)。然后会学习 Pandas、Numpy、Matplotlib、Scikit-learn 等数据分析库。最重要的是,播放列表包括一些很酷的项目,可以帮助你获得实践经验。所有这些都是在 Jupyter 笔记本上进行的,这是数据科学家的首选计算笔记本。
本课程中用来教授前面提到的库的一些数据集是:
所以如果你想享受分析口袋妖怪和国际足联数据集的乐趣,或者使用产品评论建立机器学习模型,可以考虑观看这个播放列表。
我看了播放列表的前 8 个视频,这帮助我为 Python 数据分析打下了坚实的基础。
Python 的自然语言处理(NLP)课程
这是一个简短而有用的 2 小时 NLP 课程任何对自然语言处理领域感兴趣的人都应该观看。NLP 是人工智能的一个分支,允许机器理解人类语言。数据科学家使用 NLP 技术来解释文本数据进行分析。
本 NLP 简介涵盖以下主题:
- 预处理技术(标记化、文本规范化和数据清理)
- 机器学习技术(主题建模、单词嵌入和文本生成)
- 用于 NLP 的 Python 库(NLTK、TextBlob、spaCy 和 gensim)
我特别喜欢这个短期课程,因为它非常有吸引力,包括垃圾邮件分类和推文情感分析等很酷的练习。当然,要做到这一切,您至少需要对 Pandas 和 Scikit-learn 等数据分析库有一个基本的了解。
机器学习和人工智能与 Tensorflow 2.0 课程
这是一门 7 小时的 Tensorflow 课程,专为希望用 TensorFlow 学习机器学习(ML)和人工智能(AI)的 Python 程序员设计。TensorFlow 是在 Python 上使用机器学习的最佳库之一。它使机器学习模型的建立对初学者和专业人士来说都很容易。
在本课程中,您会发现 8 个模块涵盖了 ML & AI 中的基础主题。仅举几个例子:
- 核心学习算法
- 张量流神经网络
- 深度计算机视觉—卷积神经网络
- 基于 RNNs 的自然语言处理
- Q 学习的强化学习
我喜欢这门课,因为授课老师有很好的机器学习和人工智能知识,讲解也很清晰。此外,该课程非常吸引人,包含有价值的信息和编码示例。所有这些都使得学习 TensowFlow 变得更加容易。
我目前正在学习这门免费课程,到目前为止我已经学到了很多新东西,我希望在未来的项目中应用它们。
就是这样!希望这 4 门课程能帮助你提高数据科学的 Python 知识,就像它们帮助我一样!
与 3k 以上的人一起加入我的电子邮件列表,获取我在所有教程中使用的 Python for Data Science 备忘单(免费 PDF)
如果你喜欢阅读这样的故事,并想支持我成为一名作家,可以考虑报名成为一名媒体成员。每月 5 美元,你可以无限制地阅读媒体上的故事。如果你使用我的链接注册,我会赚一小笔佣金。
https://frank-andrade.medium.com/membership
4 个具有影响力的项目,开启您的供应链数据科学之旅
来自实际运营案例研究的项目列表,可用于培养您在数据科学方面的技能,并快速影响您的组织
凯尔·瑞恩在 Unsplash 上的照片
作为一名数据科学家,如果你想让数据在你的组织中发挥作用,那就为大规模运营做出贡献,并看到你的模型被用来实施具体的解决方案:供应链是开始你的数据科学之旅的最佳人选。
我已经在供应链部门工作了 7 年多,重点关注仓储和运输业务。
作为一名供应链解决方案设计师,我的工作是将客户的需求转化为实际运营**(零售、电子商务、奢侈品、快速消费品、汽车),进行再造**研究以改善仓库运营和优化运输网络。
所有这些项目的共同点是我通过使用数据科学工具获得的杠杆作用,让我能够了解货物流动,有能力模拟成千上万的场景,并建立模型来预测未来。
我在这篇文章里分享,你可以通过下面的详细教程找到 14 重大案例分析 (编辑:我加了额外的例子) 可以应用到你的操作中。
对于每个例子,我都将源代码与虚拟数据共享,这样您就可以将模型应用到自己的项目中。
给学生的建议你可以使用这些例子中的任何一个作为建立你的文件夹的基础。
M5·卡格尔竞赛可以作为您构建解决方案的交易数据来源,以满足实际运营需求。
💌新文章直接免费放入您的收件箱:时事通讯
一.什么是供应链分析?
**目标:**使用 python 进行数据分析,在战略和运营层面实现数据驱动的诊断和决策,从而提高运营效率。
供应链可以被定义为以满足客户需求为最终目标的多方物流、信息流或资金流的交换。
信息和货物的流动—(图片由作者提供)
由于信息扮演着重要的角色,供应链分析已经成为组织用来从与价值链中包括的所有流程相关的数据中获得洞察力的方法和工具。
在这个视频中,你将发现 Python 不同类型的供应链分析,并了解它们对端到端运营的效率的影响,这样你就可以开始你的项目了。
二。你的循环经济有多可持续?
适用范围: 供应链可持续性
关键技能:库存管理、生命周期分析、二氧化碳排放量计算、供应链描述性分析(数据处理、可视化和 KPI 创建)
问题陈述:
循环经济是一种旨在最大限度减少浪费和最大限度提高资源效率的经济模式。
它包括设计注重寿命、重复使用和回收的产品和工艺。
(图片由作者提供)
一些公司已经实施了一种订阅模式,在这种模式下,客户支付一定的费用就可以在特定的时间段内获得产品或服务。
**目标:**使用数据分析模拟循环订阅模式的几种情况对一家快速时尚零售商的减排和用水的影响。
https://www.samirsaci.com/how-sustainable-is-your-circular-economy/
三。绿色库存管理
绿色库存管理—(图片由作者提供)
范围: 供应链可持续性
关键技能:库存管理、二氧化碳排放量计算、供应链描述性分析(数据处理、可视化和 KPI 创建)
问题陈述:
绿色库存管理可以定义为以环境可持续的方式管理库存。
对于分销网络而言,这可能涉及一系列旨在减少订单传输、准备和交付的环境影响的流程和规则。
(图片由作者提供)
如果我们降低商场补货的频率,会对二氧化碳排放量产生什么影响?
**目的:**利用数据分析模拟商店补货频率的变化,衡量对整体环境影响的影响。
https://www.samirsaci.com/green-inventory-management-case-study/
四。生产固定范围计划
生产计划—(图片由作者提供)
适用范围: 制造业
问题陈述:主生产计划是商业团队和生产之间的主要沟通工具。
您的客户发送采购订单和具体数量在特定时间交货。
订单示例—(图片由作者提供)
生产计划用于通过在最小化库存和最大化根据设置生产的数量之间找到平衡来最小化生产的总成本。
**目标:**在本文中,我们将通过 python 使用 Wagner-Whitin 方法实现最优生产计划。
https://www.samirsaci.com/production-fixed-horizon-planning-with-python/
动词 (verb 的缩写)供应链可持续性报告
演示短片—(视频由作者提供)
范围: 供应链可持续性
**问题陈述:**多年来,投资者和客户对可持续发展透明度的需求不断增长。
投资者在评估组织的价值和弹性时,越来越重视企业的可持续性。
因此,越来越多的组织投入资源建设可持续发展报告能力并确定可持续供应链的最佳战略。
目标:在本文中,我们将介绍一种简单的方法,使用 Python 和 PowerBI 来报告您的分销网络的二氧化碳排放量。
https://www.samirsaci.com/supply-chain-sustainability-reporting-with-python/
不及物动词供应链网络优化
供应链网络问题—(图片由作者提供)
适用范围: 供应链优化
问题陈述:供应链优化充分利用数据分析,找到工厂和配送中心的最佳组合,以满足您客户的需求**。**
在市场上的很多软件和解决方案中,背后的核心结构都是线性规划模型。
这些模型中的一些找到了正确的工厂分配,以满足需求并最小化成本,假设需求不变。
如果需求波动,会发生什么?
你的网络可能会失去健壮性,尤其是当你的需求季节性很强的时候(电子商务、化妆品、快时尚)。
**目标:**在本文中,我们将使用 Python 的蒙特卡罗模拟,构建一个简单的方法来设计一个健壮的供应链网络。
https://www.samirsaci.com/robust-supply-chain-networks-with-monte-carlo-simulation/
七。零售预测的机器学习
用于零售销售预测的机器学习的特征工程—(图片由作者提供)
范围: 需求预测
**问题陈述:**基于上一届 Makridakis 预测比赛的反馈,与基准统计模型相比,机器学习模型可以将预测误差降低 20%至 60%。 ( M5 竞赛)
它们的主要优势是能够包含外部特征,这些特征会严重影响销售的可变性。
例如,电子商务化妆品销售是由特殊事件 *【促销】*和你如何在网站上做广告引用 *(第一页、第二页……)*来驱动的。
这个被称为特性工程的过程是基于分析概念和商业洞察力来理解什么可以推动你的销售。
目标:在本文中,我们将使用 M5 预测竞赛数据集来尝试了解几个特征对模型准确性的影响。
https://www.samirsaci.com/machine-learning-for-retail-sales-forecasting-features-engineering/
八。仓库拣货生产率
三种不同提货路线的示例—(图片由作者提供)
范围: 仓库操作
**问题陈述:在配送中心(DC),**在拣货路线中从一个地点到另一个地点的步行时间可占操作员工作时间的 60%到 70% 。
**目标:**您如何利用数据科学通过减少步行距离来提高仓库操作员的生产力?
我写过一系列文章,解释如何使用订单分批、空间聚类和寻路算法来提高拣选效率。
概念&使用的库:
- 使用 Python 的 Pandas,Numpy 创建订单批
- 使用 Python 的 Scipy 对提货地点进行空间聚类
- 使用 Google 或为拣选路线设计寻路
结果:你的操作员采摘生产率的提高将导致成本降低
链接到文章
https://www.samirsaci.com/improve-warehouse-productivity-using-order-batching-with-python/ https://www.samirsaci.com/improve-warehouse-productivity-using-spatial-clustering-with-python/ https://www.samirsaci.com/improve-warehouse-productivity-using-pathfinding-algorithm-with-python/
九。资源计划和调度
短视频演示—(作者提供的视频)
范围: 仓库操作
**问题陈述:**在保证留住员工的同时,你需要雇佣多少临时工来消化你每周的工作量?
**目标:**按照你的经理确定的生产率目标,你必须最大限度地减少为处理工作量而雇佣的工人数量。
我写过一篇中型文章,讲的是如何使用线性规划找到合适的雇佣工人数量。
概念&使用的库:
- 用 Python 的纸浆进行线性编程
结果:计算满足所有约束条件的最小工人数。
https://www.samirsaci.com/optimize-workforce-planning-using-linear-programming-with-python/
X.运输路线优化
短视频讲解—(视频由作者提供)
范围: 运输作业
**问题陈述:**如何组织送货路线和卡车装载来降低你的成本?
**目标:**对您的运输计划进行可视化和成本核算,以优化装载率并降低每吨运输成本。
不同路线的可视化(1 种颜色= 1 条路线)——(图片由作者提供)
我写了一篇关于如何处理数据和准备可视化的中型文章,以影响每吨交付的平均成本。
概念&使用的库:
- 使用 Numpy、Pandas 进行数据处理,使用 Matplotlib 进行可视化(链接)
结果:使用更大卡车和更高装载率的优化运输计划。
https://www.samirsaci.com/road-transportation-network-visualization/
XI。精益六适马与 Python-Kruskal Wallis 测试
短视频讲解—(视频由作者提供)
范围: 仓库操作
精益六适马(LSS) 是一种基于循序渐进方法的方法,遵循 5 个步骤(定义、衡量、分析、改进和控制)。
作为一家标志性奢侈品牌的配送中心(DC) 的持续改进经理,你希望使用这种方法来提高特定流程的生产率。
问题
培训对操作人员的生产力有正面影响吗?
假设
培训对 VAS 操作员的生产力有积极影响。
实验 随机选择操作者,测量每批时间*(以秒为单位完成一批 30 个标签的时间)*构建 56 条记录的样本。
目标:在本文中,我们将探讨 Python 如何在分析步骤中取代 Minitab 来测试假设和了解什么可以改进特定流程的性能指标。
https://www.samirsaci.com/lean-six-sigma-with-python-kruskal-wallis-test/
十二。使用 Flask + D3.js 的交互式仪表板
一个简单而有趣的可视化比一个非常复杂的模型更有影响力,特别是对于非技术型的观众。
因此,培养可视化技能是供应链数据科学家工作的重要组成部分。
显示奢侈品牌在线销售的仪表盘的最终效果图—(图片由作者提供)
范围 : 可视化&报告
我写过一篇中型文章,讲述在没有 javascript 先验知识的情况下,如何使用 D3.js 设计花哨的可视化(或者很轻)。
概念&使用的库:
- 使用 Numpy、Pandas、Flask 和 D3.js ( 链接)进行数据处理
结果:一个动态的仪表板,可以与用户交互以展示商业洞察力。
https://www.samirsaci.com/build-interactive-charts-using-flask-and-d3-js/
十三。零售业的库存管理——随机需求
需求随机的库存管理—(图片由作者提供)
适用范围: 库存管理
**问题陈述:**对于大多数零售商来说,库存管理系统采用固定的、基于规则的方法来进行预测和补货订单管理。
考虑到需求的分布,目标是建立一个补货策略,使您的订购、持有和短缺成本最小化。
在之前的文章(链接)中,我们构建了一个模拟模型**,假设了一个确定性的恒定需求** (单位/天)。
目标:在本文中,我们将介绍一种简单的方法,使用用 Python 构建的离散模拟 模型来测试几种库存管理规则,假设客户需求呈正态分布。
https://www.samirsaci.com/inventory-management-for-retail-stochastic-demand-2/
十四。基于图论的交通网络分析
基于网络图的交通网络优化
适用范围: 道路运输
目标:构建支持 FTL 路由优化的视觉效果
问题陈述:对于零售商来说,运送到商店的道路运输是物流成本的主要部分。
公司经常进行路线规划优化研究以降低这些成本并提高他们网络的效率。
它需要持续改进工程师和管理日常运营的运输团队之间的协作。
目的:在本文中,我们将使用图论来设计运输网络的可视化表示以支持这种协作并促进解决方案设计。
https://www.samirsaci.com/transportation-network-analysis-with-graph-theory/
结论
这些示例可以使用您自己的数据集直接应用到您的运营中,以快速提供将影响您的组织的见解。欢迎在评论区提问。
你可以在 Medium 上关注我,获取更多与供应链优化数据科学相关的文章。
关于我
让我们在 Linkedin 和 Twitter 上连线,我是一名供应链工程师,正在使用数据分析来改善物流运营并降低成本。
如果你对数据分析和供应链感兴趣,可以看看我的网站
参考
数据科学简历的 4 项改进
意见
以下是你现在可以做的…
Clem Onojeghuo 在Unsplash【1】上拍摄的照片。
目录
- 介绍
- 突出显示项目
- 写作风格
- 简历的风格和格式
- 宗旨
- 摘要
- 参考
介绍
一份简历似乎总是可以改进的,然而,对你来说最重要的事情是理解建议并以你特有的方式应用它。我的意思是,如果你问 100 名专业数据科学家和招聘人员,他们可能都会说一些关于你的简历需要批准的事情。然而,这些改进也可能是主观的,你应该有所保留。你的目标应该是尽可能多地了解简历,研究数据科学专业的简历,并应用这些建议,这样你就可以在改进简历的同时保持真实的自我。
例如,我已经成功地获得了工作,即使是用蓝色简历申请。是的,有些公司不喜欢这种风格,但我喜欢,我想为一家不认为这种风格是负面的,而是认为它是独特的公司工作。在我看来,你、简历、招聘人员和公司一起充当媒人,所有相关方都希望得到对他们最有利的东西,所以重要的是不要因为你认为这是他们想看到的东西,而展示你的简历,突出你是谁。话虽如此,让我们更深入地探讨一下这三种可以改善你的数据科学简历的方法。
突出显示项目
Jo Szczepanska 在Unsplash【2】上拍摄的照片。
虽然上市的知名公司可能是有利的,但记住简历的要点也很重要——那就是展示你的经历。当你盯着你的简历看了几个小时,熟悉了你的工作,就很容易忘记招聘人员和招聘经理不知道你的历史。这就是为什么你简历上的所有内容对于决定你是否能找到工作都很重要。
下面是一个例子,说明你不应该也不应该突出某个项目:
不好的例子:
优步(2020 年—目前)
Worked with team to use Data Science to solve the top 3 issues in the business development branch of the company.
好例子:
优步(2020 年—目前)
Created an automatic classifier using Random Forest to save the company 50% time and money.
在第一个例子(坏)中,你可以看到经验被突出了,但是一个项目没有。在 good 示例中,您可以看到一个特定的项目被突出显示,还有一些我将在下面讨论的其他品质。
写作风格
照片由格伦·卡斯滕斯-彼得斯在Unsplash【3】拍摄。
如前所述,突出项目对你的简历非常重要,更重要的是,你如何突出它们。例如,在上面的例子中,我们看到了一个突出显示项目的好版本。这个例子也展示了你应该在简历中包含的写作风格。
主要风格如下:
内容、方式和效果
- 你做了什么
- 你是怎么做到的
- 它的作用是什么
你需要做的是遵循这种格式,同时也结合你的项目的细节。
以下是您可以做的一个示例:
自动分类产品 (1)通过开发 XGBoost 算法(2)将人工分组减少了 60% (3),最终节省了两倍的运营成本 (3)。
1 是“是什么”, 2 是“如何”, 3 是“效果”——当然,这可以分为两部分。这是一种易于记忆的格式,您可以在所有项目中使用这种格式。理解你所做的事情的影响以及你使用了什么工具是简单而容易的。
简历的风格和格式
亚历山大·安德鲁斯在Unsplash【4】上拍摄的照片。
也许你能在简历上做的最主观的改进就是它的真实风格。虽然你可以坚持某些写作风格,但这种改进对一些招聘人员和招聘经理的影响较小,而对一些人来说,这可能会让他们更多地进入你的简历。就像我之前说的,你简历的风格可以让你知道公司是否重视你的一些特别之处。例如,一些公司喜欢平淡无奇的黑白简历,而一些公司喜欢突出的东西,可以是多种形式。另一方面,有些公司可能根本不在乎。
然而,有一种风格我认为是公司普遍接受的。那种风格对于 让你的简历不忙至关重要——视觉上 。我所说的这种风格是指格式化你的简历,不管是颜色、主题还是你如何组织你的简历的顺序,来创造负面空间,以便你的简历的读者被你想要强调的点和信息所吸引。
这里有一个糟糕的例子:
展示公司、日期、项目、技能和教育,一个挨着一个,这样读者会不知道先看什么。
Uber (*2020 — current) -* Worked with team to use Data Science to solve the top 3 issues in the business development branch of the company.Skills Java, Python, HTML, Pandas, NumPyEducation University of Texas at Austin (2018 - current)
如你所见,这个例子很难理解。我不确定先关注什么,即使公司、技能、教育、格式的整体顺序都很好,但这些部分的位置在视觉上没有吸引力——不要这样做。
这里有一个很好的例子:
**Uber (*2020 — current)*** Created an automatic classifier using Random Forest to save the company 50% time and money.**Skills** Java, Python, HTML, Pandas, NumPy**Education** University of Texas at Austin (2018 - current)
正如你在上面看到的,这种格式本质上与 bad 示例是相同的信息,但是它用 加粗 格式突出了公司、技能和教育,同时还具有清晰、直观的部分顺序,并且每个部分都很好地描述了该部分。
按照视觉顺序显示公司、日期、项目、技能和教育程度,这样读者可以从简历的顶部进入底部,没有其他东西挡道。
宗旨
你简历的最后一个改进可能是最独特的。我原本没有在简历中包括这一部分,但最终还是包括了,并得到了招聘人员和招聘经理的极大回应。这一改进是什么,用几句话来强调你在数据科学领域的使命。这是一种自由展示你的目标和专长的方式。
例如,下面是我的使命陈述部分,它被定义为“目标”:
作为一名数据科学家,我正在寻找一个有所作为的角色,在这个角色中,我可以通过创建、发展、维护并最终揭示有意义的见解来支持和验证相关的数据驱动的变化,从而保持对社区的热情。通过使用我的多学科背景来实现可扩展的、统计分析和漂亮的视觉评估,来满足我的好奇心和挑战自己。
我的可能更长,但对我来说,这值得冒险——因为它凸显了我是谁,我想要什么。这一部分可以小得多,同时也要突出你的哪些方面对你申请的工作是重要的和相关的。
摘要
我已经讨论了一些我认为会帮助你找到工作的改进,最终会让你的简历变得更好。当然,对任何建议都要有所保留,这很重要,只要确保你在简历中所做的改变是因为你想要的,并且是对你自己和你的工作真实的。总的来说,我们已经讨论了各种改进,比如突出项目、突出项目的风格、简历格式的风格,以及加入任务陈述。
以下是所有的改进,总结如下:
* Highlight Projects* Style of Writing* Style and Format of Resume* Mission Statement
同样值得注意的是,所有这些简历改进也适用于非数据科学职位。
我希望你觉得我的文章既有趣又有用!如果您在简历中利用了这些数据科学改进中的任何一项,请随时在下面发表评论— 以及哪些改进? 现在对你的数据科学事业有帮助吗?你同意还是不同意,为什么?
请随时查看我的个人资料和其他文章,也可以通过 LinkedIn 联系我。我与这些提到的公司没有关系。
感谢您的阅读!
参考
[1]Clem Onojeghuo 在 Unsplash 上拍摄的照片,(2017)
[2]照片由 Jo Szczepanska 在 Unsplash 上拍摄,(2018)
[3]Glenn Carstens-Peters 在 Unsplash 上拍摄的照片,(2017)
[4]图片由 Alexander Andrews 在Unsplash(2017)上拍摄
[5]马库斯·温克勒在 Unsplash 上拍摄的照片,(2020)
4 对数据科学行业的洞察
进入当前的数据科学行业需要什么
弗兰基·查马基在 Unsplash 上拍摄的照片
“快跑吧。害怕它。但是数据总是会赶上的。你要么成为数据的奴隶,要么用数据改变世界。”
我们生活在一个数据是唯一重要的东西的社会。如果你知道如何正确解读数据,你就能很好地把握公司的未来。如果你能分析它们,使用它们,和它们一起工作,你就能创造奇迹。也许这就是为什么数据分析师和数据科学家的工作恰好是当前最受欢迎的。
了解了一家领先制药公司的数据科学家 Nisarg Jain 先生的见解后,您可以放心,随着阅读的深入,您将更好地了解如何在该领域取得成功。
- 你说什么样的技能?
数据分析行业已经发展了多年。进入职位安排的场景,公司期望一个人应该拥有某种技能来通过面试。但是,别担心。我们不是在谈论创造某种先进技术的压倒性技能组合。他们期望你有最基本的。可以大致分为以下几类:
软技能: 这是能成就或毁掉任何一场面试的东西。不管你有多少硬技能,如果你没有软技能,事情会变得很艰难。清晰的交流,展示批判性的思维,以及对问题的分析方法对你有很大的帮助。
硬技能: 好吧,一旦你有了软技能,一般的技术技能就不能放过。瞄准数据分析中的特定角色需要 SQL 和 MS Excel 的基础知识。最重要的是,数据科学的角色将需要使用 Python 或 R 甚至 SAS 语言。
“通常在分析中测试的主要内容是你分解和解决问题的能力,以及你的思维过程。”
- 为什么要工程师独享所有乐趣?
人们经常有一种误解,认为只有攻读 B. Tech 学位的学生或具有计算机科学背景的人才能进入数据分析领域。但是时代变了,你知道。一旦技能获得,那么它就成为一个水平领域。这只取决于这个人有多努力,或者他们选择了什么样的道路。一旦他们具备了进入该领域的基本技能,计算机科学背景的人和金融背景的人就没有区别了。
“我个人有机会与这些没有技术背景但仍然在分析领域大获成功的人一起工作。”
- 不要烦恼,行业有空间给所有人。
随着市场的增长,越来越多的人希望进入这个领域。既然我们已经确定这个领域尤其是数据分析不是学位特定的,那么问题就来了——“这个行业有足够的空间容纳所有人吗?”答案很简单。随着涌入人数的增加,机会也在增加。一些 5 年前不存在的专业角色正在被创造出来。所有的公司都变得越来越重视数据。他们也意识到拥有自己的分析团队比外包工作更有效率。这就带来了更多的机会。所以,这是双向的。随着进入这一领域的人数增加,行业提供的机会也在增加。
“有很多公司正在扩展他们的分析能力,创造更多的职位。这些公司现在对数据的倾向是巨大的。拥有一个内部分析团队对公司来说更有意义。”
- 最后但同样重要的是——了解你的利基。
数据分析和数据科学的领域非常非常广泛。除非你决定你的定位是什么,否则没有固定的技能可以让你工作或获得成功的结局。如果你想追求可视化,那么你可以尝试在 Tableau 等工具中磨练你的技能,或者如果你需要工程,那么在机器学习和数据工程中有大量的机会。所以,唯一需要做的就是自己决定。不一定要在你进入这个领域的那一刻,但一定要越早越好。因为毕竟,谁不想超过别人,对吗?
“你越早认识到自己,越早适应你将在分析领域追求的目标,这将大大有助于你与 5 年后才认识到这一点的人区分开来。”
嘿,如果你陷入困境,不知道如何前进。去找个人聊聊。去网。给任何人和每个人发消息。想的话给自己找个导师吧。接受你需要的帮助,然后做好工作。你的成功一直在你的手中。
参考文献:
[1]引自我主持的播客的尼萨尔·贾恩先生的话:https://open.spotify.com/episode/4syoDqlgnie4RdvbIoPNIb
4 学习机器学习的互动工具
这些互动工具会帮助你理解机器学习
约翰·施诺布里奇在 Unsplash 上的照片
作为数据科学家,我们需要机器学习来理解和应用我们的日常工作。要知道的知识不仅限于从库中导入代码,而是扩展到模型概念、算法选择、度量标准等等。
为了帮助学习机器学习概念,我将在本文中概述我的四个交互式工具,您可以使用它们来学习。让我们开始吧!
1.假设工具
假设工具是一个基于网络和笔记本的可视化工具,用来理解机器学习行为是如何工作的。假设工具的开发是为了理解我们的训练模型背后的复杂性,并对假设情况进行实验。
假设工具是一个交互式工具,意味着我们可以通过图形用户界面来实时观察变化。让我给你看下面 GIF 中的例子。
作者 GIF
这似乎是一个令人兴奋的工具,对不对?上面的 GIF 显示了我们可以用来理解我们训练过的机器学习模型的所有选项卡。在这个例子中,我们将机器学习模型用于在输入 UCI 数据上训练的二元分类模型。我们可以在两个训练好的模型上对这些数据进行比较和实验,所以让我们分解每个选项卡,以便更好地了解函数对模型做了什么。
作者图片
开始时,我们有三个选项卡;数据点编辑器、性能和公平性以及功能,其中每个选项卡从不同方面可视化机器学习模型:
- 数据点编辑器:每个数据点的可视化探索
- 性能和公平性:使用各种度量标准进行模型性能探索
- 特征:用于模型训练的特征摘要
让我们仔细看看每个选项卡中的可用性。
数据点编辑器
作者图片
数据点编辑器是一个选项卡,我们可以在其中根据模型探索每个数据点预测。该选项卡可以选择每个数据点来研究模型行为。让我们试着选择其中一个数据点。
作者图片
在数据点选择中,顶部允许您选择轴、标签和宁滨——如果您想了解特定信息,这很有用。默认情况下,X 轴和 Y 轴除以模型得分输出(在模型 1 和 2 之间)。
作者图片
当您选择了数据点后,您将获得类似于上图的信息。在这一节中,我们带来了关于数据点的特征和每个标签的模型比较分数的所有信息。
性能和公平性
作者图片
在“性能和公平性”选项卡中,您可以尝试各种阈值、基本事实、成本比率和更多,以了解当我们更改某些方面时,您的机器学习模型的结果。
作者图片
您可以在左边部分更改您的假设,例如预测特性和优化策略。
作者图片
在右边部分,您可以试验每个模型的阈值,看看对性能的影响。这些变化是实时发生的,所以您需要的决定使用哪个模型以及您的模型是否满足您的要求的信息可以被快速评估。
特色
作者图片
“功能”选项卡是获取模型训练中使用的每个功能的汇总统计信息的部分。您需要的所有基本统计数据都是可用的——均值、中值、标准差等等。此外,特征被分成数字和分类标签,以便更容易学习。
如果你想了解更多笔记本环境下的假设工具,你可以点击访问教程。
2.深操场
Deep Playground 项目是一个交互式的基于网络的神经网络,供人们学习。web 对于任何初学者来说都足够简单,可以理解神经网络是如何工作的。
作者 GIF
上面的 GIF 总结了整个交互过程;你可以修改顶部的超参数——学习率、激活、正则化、速率和问题类型。
作者图片
Deep Playground 只有四种数据集可以使用,但它代表了机器学习项目中的常见问题。在这一部分,您还可以试验测试数据比率、噪声和批量大小。
作者图片
接下来,您可以选择如何处理您的功能以及您希望的转换类型。此外,您可以添加或减少隐藏层和每个隐藏层的神经元。完成实验设置后,您只需按下 play 并查看输出,即可了解神经网络如何与您的设置配合工作。
作者图片
Deep Playground 是一个开源项目;如果你想投稿或者对源代码感兴趣,你可以访问 GitHub 页面。
3.西蒙·沃德·琼斯的概率分布
机器学习完全是关于我们模型的概率输出,学习概率分布将有助于我们理解我们的模型是如何工作的。有时候,如果没有清晰的可视化,很难理解概率分布是如何工作的——这就是为什么我推荐 Simon-Ward Jones 的概率分布帖子来帮助你学习。
作者 GIF
本帖给你一个对以下概率分布的可视化实验:
- 二项分布
- 二项分布
- 正态分布
- 贝塔分布
- 对数正态分布
帖子详细描述了每个分布中的概率密度函数,以及如果我们改变参数值会发生什么。我建议您尝试一下发行版中的变化,因为这有助于您更快地理解这个概念。
4.嵌入式投影仪
当使用机器学习模型训练时,非结构化数据比结构化数据更难理解。理解它的一种方法是使用无监督算法(如 PCA 或 t-SNE)将数据嵌入或表示为数学向量。来自 TensorFlow 的嵌入投影仪为我们提供了一个交互式可视化工具,帮助我们理解嵌入层。
作者 GIF
正如你在上面的 GIF 中看到的,我们使用 Word2Vec 提供的数据集来了解每个单词是如何表示的,以及它们在低维特征中彼此有多接近。
在左侧部分有来自 NLP 数据、图像数据或表格数据的五个数据集。您可以使用一些算法来嵌入数据集,如 UMAP、T-SENE、PCA 或 Custom。最后,您可以在底部选择想要可视化的组件。
作者图片
在右侧,我们可以选择如何通过显示所有数据点或隔离数据点来可视化我们的数据。隔离与您想要选择的邻居号码相关,并且决定将基于您选择的距离度量。如果你要选择一个特定的单词,你可以使用搜索栏。
作者图片
如果你想了解更多关于嵌入式投影仪的信息,你可以在这里访问文档。
结论
理解机器学习概念很难,尤其是没有清晰的可视化。为了帮助你学习,我想概述四个交互工具,帮助你理解机器学习;它们是:
- 假设工具
- 深操场
- 概率分布
- 嵌入式投影仪
希望有帮助!
如果您喜欢我的内容,并希望获得更多关于数据或数据科学家日常生活的深入知识,请考虑在此订阅我的 简讯。
如果您没有订阅为中等会员,请考虑通过 我的推荐 订阅。
数据科学家的 4 款 Jupyter 笔记本替代产品
出于多种原因,您可能希望使用替代方案。
作者图片
如果您喜欢我的内容,并希望获得更多关于数据或数据科学家日常生活的深入知识,请考虑在此订阅我的简讯。
作为现代数据科学家,编程是我们必须掌握的主要工具。虽然,不像软件开发人员或工程师,我们利用编程语言进行数据分析,而不是软件开发。这就是为什么我们数据科学家被教导在工作中使用数据分析 IDE。
JupyterNotebook是许多数据科学家开始的主要环境,因为它最容易理解并与 Anaconda 环境(许多人用它来建立数据科学平台)集成。然而,一旦你理解了 Jupyter 笔记本的工作原理,我想介绍几个 Jupyter 笔记本的替代品。
以下是我为数据科学家准备的四款 Jupyter 笔记本替代品。让我们开始吧。
1.Visual Studio 代码
Visual Studio Code或 VS Code 是一个免费的开源 IDE,专为程序员无缝运行和执行他们的代码而设计。VS 代码是通用的,因为它们包括许多可定制的扩展、代码调试和用于版本控制的 GIT 集成。
过去,VS Code 更适合开发人员或工程师,因为它没有任何数据分析能力,但自 2020 年以来,VS Code 团队与 Jupyter 团队合作,在 VS Code 中引入了一个集成笔记本。结果是一个惊人的 IDE 工作簿,您可以使用它进行数据分析。让我在下图中展示一下 VS 代码笔记本集成是如何工作的。
作者图片
正如您在上面的图像中所看到的,您正在左侧运行您的代码(它看起来像 Jupyter 笔记本中的一个单元格),结果显示在右侧。让我们试着更详细地剖析这个过程是如何工作的。
作者图片
首先,为了初始化笔记本单元格,你需要在你想要运行的代码上方的上键入**# %%**
,作为一个类似于 Jupyter 笔记本的单元格。当您这样做时,VS 代码会自动理解您打算启动笔记本并显示单元格选项。当您想要运行单元格时,您可以使用快捷键 shift + enter 来运行它。
当您运行单元代码时,它会自动在交互式笔记本中运行—例如;我运行下面的代码。
作者图片
在上图中,我加载了一个 mpg 数据集,并显示了数据集的头部(前 5 行)。在笔记本中,它的处理类似于下图。
作者图片
能力是有的,但是为什么我们要用 VS Code notebook 而不是 Jupyter Notebook 呢?我可以给你几个理由:
- 如果你有开发背景,VS 代码会让你感觉很熟悉,
- VS 代码与 GIT 版本控制集成在一起,当您想查看旧代码时,
- 代码调试存在于 VS 代码中,不像在 Jupyter Notebook 中。
我能想到的原因还有很多,但最终还是会回到你的偏好上。
2.互动
什么是互动 ?它是一个开源的交互式环境,设计用于端到端的数据分析工作流,包括一个用于数据探索、构建应用程序、版本控制等的笔记本。在我看来,nteract 的主要卖点是交互部分,UI 允许你控制笔记本结果,并将其作为应用程序呈现。
nteract 环境包含一个桌面应用程序,您可以在这里下载,内核会自动集成到您的 Anaconda 环境中。因此,当您已经安装了 nteract 时,您可以打开您的笔记本,而无需启动 Jupyter 笔记本或前往 Jupyter 实验室。例如,我会给你看我的旧笔记本和文件夹。
作者图片
从上面的图片中,您可以看到 ipynb 文件现在默认情况下可以使用 nteract 打开。让我们看看你打开后是什么样的。
作者图片
nteract IDE 如上图所示。nteract 环境类似于 Jupyter 笔记本,但在单元格放置方面有更多的控制,并集成为一个应用程序。下面我们来看看下面 GIF 中 nteract 的用法。
作者 GIF
您还可以使用各种 nteract 库来提高工作效率,例如:
3.橄榄石
Jupyterlite 是一款基于浏览器的 Jupyter 笔记本由 Jupyter 开发者非正式开发。它利用了 Jupyter Lab 和 Jupyter Notebook 的许多功能,可以在浏览器中直接使用。开发仍在进行中,所以预计许多变化和附加功能将被添加,但我们可以检查 Jupyterlite 环境。
您可以使用 Jupyter Lab style 或 Retro Lab Style (经典 Jupyter 笔记本)中的演示来尝试 Jupyterlite 浏览器。无论哪种方式,基本环境已经包含了一些功能,例如:
- 预装可视化软件包,如 altair、plotly 和 matplotlib
- 基于浏览器的笔记本交互,用于托管、保存和导出笔记本
- Jupyterlite CLI
让我们试着用 Jupyterlite 提供的 plotly 笔记本演示来检验一下 Jupyterlite 的基本用法。
作者 GIF
从上面的 GIF 中,我们可以看到环境仍然类似于 Jupyter 笔记本,但它似乎更基础。不过,UI 的交互性稍强一些——可以像 nteract 一样移动单元格。
如果您想在自己的环境中构建 Jupyterlite,可以通过安装 Jupyterlite 来实现。
python -m pip install --pre jupyterlite
当您完成软件包的安装后,您需要运行以下代码。
jupyter lite init
jupyter lite build
jupyter lite serve
完成了。现在您已经在本地构建了 Jupyterlite,并且可以从您的浏览器访问它。然而,就像我之前提到的那样,Jupyterlite 仍在开发中,所以我预计未来会有很多事情发生变化。
4.谷歌联合实验室
谷歌合作实验室 或 Colab 是由谷歌团队开发的基于浏览器的笔记本电脑。笔记本环境是基于 Jupyter 笔记本环境的,所以对于已经在使用 Jupyter 的人来说会感觉很熟悉。笔记本如下图所示。
作者图片
从上图可以看出,环境类似于 Jupyter 笔记本。那么,我们为什么要用 Google Colab 呢?我可以给你几个理由:
- 它非常适合任何无法接触到高性能硬件/GPU 的人。因为 Colab 托管在云中,并为您提供免费的 GPU,所以您可以分析内部不可能的更大的数据集——特别是如果您仍处于学习阶段,
- 易于与 Google 数据库集成,如 Google Sheet、Google Drive 或 Google BigQuery,
- 可以用于特定目的的即时代码片段。例如,从网络摄像头拍摄或创建堆叠图表。
作者图片
Google Colab 非常适合那些仍在学习或密切使用 Google 环境的人,因为它是通过 Google 服务集成开发的。
如果你想了解更多关于 Google Colab 的知识,建议你去看看他们的笔记本教程。本教程提供了所有基本的 Google Colab 用例,以及如何使用 TensorFlow 开发自己的神经网络。
结论
数据人员广泛使用 Jupyter 笔记本,因为它易于使用,而且是专门为数据分析开发的。但是,随着您对 Jupyter 笔记本越来越熟悉,您可能需要检查另一种替代方案。
在本文中,我向您介绍了四种可供选择的 Jupyter 笔记本电脑。它们是:
- Visual Studio 代码
- 互动
- 橄榄石
- 谷歌 Colab
希望有帮助!
如果您没有订阅为中等会员,请考虑通过我的推荐订阅。
开放数据发布的 4 个关键因素——从用户的角度
#社会影响数据:好的开放数据源应该是什么样的
开发署亚太区域创新中心 UNV 在线志愿服务在线志愿者邓华。
图片来自 CILIP Photos 来自 Flickr
今年夏天,我参与了一个完全基于开放数据的项目——东南亚新冠肺炎应对措施的数据可视化和分析。在搜索开放数据源并对其进行处理的过程中,我发现在发布开放数据方面没有黄金标准,数据发布者也在探索过程中。老实说,有许多细微的地方看似微不足道,但可能会给用户带来不便。我相信从一个数据用户的角度来看对社区来说是有价值的,这促使我写了这篇博客。
从用户的角度来看,我总结了发布开放数据的四个关键因素:(1)数据准备,(2)数据发布,(3)副产品,和(4)社区,每个都有一些子标准。作为一个例子,我将比较我在我的项目中使用的三个数据源:菲律宾卫生部,谷歌新冠肺炎社区流动性报告,以及牛津新冠肺炎政府反应跟踪系统(OxCGRT) 。在下面的表格中,我用绿色、黄色和红色将简单的描述放入不同的单元格中,分别表示好、不够好和不好的做法。每一个都将在下面的章节中详细讨论。至于我没有评论的地方,我只是让它空白。
作者图片
#1 —数据准备
#1.1 —一致性
数据发布者应该首先确定一些要遵循的标准,并在进行更新时遵守这些标准。如果必须进行调整,应向用户明确说明。否则可能会造成混乱和不便。例如,关于谷歌移动指数,有一段时间它从使用“曼尼拉大都会”改为“国家首都地区”,这基本上是菲律宾同一地区的不同名称。在我的项目中,由于我将不同的数据源组合在一起,并且它们分别使用不同的命名约定,所以我必须自己创建一个映射字典。当 Google 在没有声明的情况下(或者不明确地声明)做出更改时,我必须弄清楚发生了什么,并相应地修改我的映射。
此外,一致性也意味着坚持主要的惯例。正如我上面提到的,如果不同的数据源都遵循相同的约定,用户自己进行映射会少受些苦。一些典型的例子包括地理名称、日期格式等。当然,在某些情况下,可能有多个流行的约定,因此很难在不同的数据所有者之间协调约定的采用。一些可能的解决方案包括:(1)数据发布者应该清楚地声明它使用什么约定,以便用户被很好地指导自己做映射;(2)第三方平台或服务提供商可以维护一些常用的映射,或者自动帮助用户实现标准化。
#1.2 —质量
数据用户总是期望数据质量好,而现实有时恰恰相反。很高兴看到菲律宾卫生部每天都在公布新冠肺炎病例信息、检测和检疫设施等数据。但我们也应该意识到数据的质量问题,包括明显的延迟和错误,正如菲律宾大学新冠肺炎疫情响应团队所分析的。一个值得注意的问题是价值缺失。如果这些缺失的数据不是随机的,而是有偏见的,那么基于这些数据的所有分析的可靠性将会出现巨大的问题。因此,政策制定也会恶化。为了解决这个问题,数据所有者可以通过制定更明确的要求和指示,更加关注数据收集过程。此外,采用某些数据质量保证程序将非常有帮助。
#1.3 —粒度
在数据隐私和可行性的范围内,开放数据应该尽可能细粒度地支持广泛的应用。例如,菲律宾卫生部的病例信息数据详细到个人级别,与国家级别的汇总数据相比,可以支持更多类型的分析和应用。用户可以根据自己的需要,自己深入到城市级别、地区级别、国家级别。
#1.4 —可用性
这可能不太重要,但很容易改进,以获得更好的用户友好性。对于缺乏数据争论经验的用户,他们可能希望数据的格式完全符合他们的期望。例如,Google Mobility data 现在提供了下载全球 CSV 或地区 CSV 的选项,这样用户就可以只查看他们感兴趣的地区。另一个例子是 OxCGRT,它提供表格格式数据和时间序列格式数据。此外,遵循命名约定为变量提供直观的名称也可以使数据集更加用户友好。
截图来自谷歌新冠肺炎社区移动报告2021–02–07
截图来自ox cgrt covid-policy-tracker Github 仓库2021–02–07
#2 —数据发布(可访问性&维护)
关于如何发布开放数据没有明确的标准,所以你可以找到许多不同的做法。从用户的角度来看,我认为有两个关键的判断标准:(1)是否易于访问,以及(2)是否易于维护。
至于菲律宾 DOH 数据,公布在 Google Drive 上。它的好处是每个人都知道如何使用 Google Drive,所以它非常容易使用。流程如下:你要先点进一个“先读我”的 pdf 文件,然后向下滚动寻找中间最新的链接,最后带着你需要的数据到达目的地。这个过程增加了项目维护自动化的难度,因为用户每次都必须手动遵循这个过程来下载最新的文件。
2021-02-07 菲律宾卫生部新冠肺炎跟踪者的屏幕记录
至于谷歌的移动数据,它既易于访问和维护。他们的网站上有触发下载的按钮,它的路径可以很容易地嵌入到你的脚本中。至于 OxCGRT,用户既可以从 Github 下载 csv 文件,也可以使用 API 进行访问。Github + API 可以支持多种类型的使用,并且易于用户更新,尽管这两种方式对于非技术用户来说可能不太容易使用。
还有其他共享开放数据源的实践。例如,微软在 Azure 上维护了一个新冠肺炎开放数据集的数据湖,它们对于 Azure 中集成的一些服务是现成可用的。在这种情况下,通常不是发行商决定在 Azure 上发布数据,而是 Azure 在原发行商的许可下,在其网站上收集和整合开放数据源。
# 3——副产品(文档&可视化&报告)
与文档、可视化和报告等数据一起发布的“副产品”可以帮助用户理解数据。文档是必备的,而可视化和报告是最好的。没有文档,用户就无法获得对数据的详细和无偏见的理解,而这是任何深入分析和应用的基础。通过可视化和报告,用户可以摆弄数据,轻松地进行一些基本分析,甚至直接从报告中获得见解。提供基本的可视化和报告可以防止社区的重复工作,并减少开放数据使用的障碍。
至于菲律宾卫生部的数据,它提供了文件来描述每张表的元数据和每个字段的内容。它的技术说明每天都在“READ ME FIRST”pdf 中更新,到目前为止,它是一个非常长的文件,读者很难抓住它的要点。此外,没有关于数据收集程序的描述。当我探索数据时,我有时会感到困惑,我必须做出假设才能继续,这可能会被证明是错误的。
至于谷歌移动数据,它提供了国家和地区的报告。在该报告中,有基本描述和详细说明的链接,这些详细说明涉及如何收集数据、如何构建指标以及解释数据时应该注意的事项。还有针对该国家或地区的基本折线图和指标。这些报告是高度标准化的,这就是为什么谷歌可以向不同国家和地区提供单独的报告。这些报告的缺点是过于简单,无法获得深入的见解。
至于 OxCGRT,在我看来,它确实做得很好,因为它提供了我能想到的几乎所有支持。详细明确的指令书和工作底稿,检查;我们的世界在数据、检查方面提供的交互式仪表盘;区域总结,检查!
截图自ox cgrt2021–02–07
截图来自ox cgrt2021–02–07
#4 —社区(沟通渠道&用例分享)
数据公布后,应该需要更多的交流和分享机会,以最大限度地扩大影响和覆盖面。数据发布者和用户之间应该有畅通的沟通渠道,以便用户可以及时报告数据问题并得到答复,数据发布者可以获得反馈并对数据的任何相关方面进行改进;用户还应该有机会与其他用户分享他们的发现和经验,从而为整个社区的知识库做出贡献。
还没有一个单一的平台作为社会公益社区的开放数据中心。数据发布和用例共享大多是在互联网上逐个案例地进行的。在这里,我想介绍一些良好的实践,它们来自在社区中承担不同角色的不同类型的实体,我相信未来会出现更多创新和引人入胜的实践。
- OxCGRT 。它对数据、分析或项目的任何方面的反馈都是开放的。用户可以通过调查表或电子邮件与团队联系。
- 脸书数据为好程序 。脸书有一个专门的团队来管理这个项目。至于更成熟的数据集,他们已经把数据集完全公开了;对于一些可能仍然需要进一步测试或反馈的数据集,他们根据请求向研究人员和非营利组织提供访问权限。在他们的网站上,用户可以很容易地找到“案例研究”和“新闻”部分,以学习好的用例。此外,他们还建立了松散的渠道,以促进数据发布者和数据使用者之间的沟通。
- Data4COVID19 。这是由 GovLab 承担的一系列项目,其中一个是数据协作存储库。在存储库中,您可以找到三种类型的信息:(1)正在进行的数据协作项目,(2)数据竞争、挑战和提案征集,以及(3)对数据和专业知识的请求。所有这些都是通过 google sheet open for edit 完成的,这在技术上并不难,但却产生了巨大的影响。
- Data.govt.nz. 这是一个由新西兰政府支持的一站式开放数据网站。在这里你几乎可以找到你想要的任何东西,数据集,发布数据的框架和指南,社区和团体,等等。
感谢您的阅读!这是#Data for Social Impact 系列博客的最后一篇文章。在 第一篇博客 中,我详细介绍了我们针对东南亚新冠肺炎疫情的数据可视化和分析项目。在第二篇博客中,我分享了我作为新冠肺炎数据项目在线联合国志愿者的故事,以及我对如何在公共部门更好地利用开放数据和众包的思考。在第三篇博客中,我从用户的角度讨论了好的开放数据应该是什么样的。我真诚地希望这一系列博客能有所帮助!
理解气候危机的 4 个关键数字
“随着世界处于不可逆转的危害的边缘,气温升高的每一点点都关系到限制气候变化的危险。”—斯蒂芬·科尼利厄斯(世界自然基金会 IPCC 负责人)
2015 年 12 月,《联合国气候变化框架公约》(UNFCCC)196 个缔约方在第 21 次缔约方大会(COP-21)期间签署了一项具有法律约束力的气候变化国际条约,称为巴黎协定。巴黎协议的目标是将本世纪末的全球变暖限制在 2 摄氏度以下,并努力达到 1.5 摄氏度,与工业化前的水平相比[1]。为了实现这一目标,全球温室气体(GHG)排放需要尽快达到峰值,世界需要在本世纪中叶实现气候中和。
根据政府间气候变化专门委员会(IPCC)第六次气候变化评估报告(AR6),只有现在采取前所未有的行动,才有可能将本世纪末的全球气温上升限制在 1.5 摄氏度以内[2]。去年发表在《自然》杂志上的一项 T2 研究表明,为了达到巴黎协议的目标,到 2030 年,全球 GHG 排放量需要比 2020 年减少一半。机会之窗一年比一年窄,重要的问题是:“我们有望实现这个长期的温度目标吗?”
英国将于今年 10 月 31 日至 11 月 12 日在格拉斯哥主办第 26 届联合国气候变化大会。COP-26 是全球气候行动的一次重要峰会,因为这是对自巴黎协议以来世界各国政府在多大程度上提高了气候目标的首次考验[4]。
在这篇文章中,我将讨论四个关键数字来理解当前的气候危机。我将浏览气候危机的人为原因、主要责任国、气候情景的故事情节以及前进的方向。我还将解释数据和代码,因为我继续通过数字。这些脚本可以在这个 GitHub 库中找到。
图片来自 Unsplash 作者 Christian Lue
全球能源消费趋势
始于 18 世纪的工业革命,农业社会变得更加工业化和城市化,永远改变了人类社会。承蒙发明,如横贯大陆的铁路网、轧棉机、电力、内燃机车等。从 19 世纪中期开始,全球能源消耗开始激增。虽然全球能源消耗在 1800 年至 1900 年间仅增加了一倍,但在 1900 年至 2000 年间却增加了十倍。在过去的 20 年中,它已经增长了 1.5 倍,去年由于新冠肺炎相关的经济放缓,出现了一些下降。
在过去的两个世纪中,传统生物质的消费保持相当稳定,因为生物质仍然是几个发展中国家的主要烹饪燃料。煤的消费在 19 世纪 50 年代开始激增,而天然气和石油的消费在一个世纪后才开始。即使在今天,化石燃料(煤、石油和天然气)仍占全球能源消耗的四分之三以上。
全球能源消费趋势。数据基于[5]和[6]。CC-BY我们的数据世界。
这个数字的数据是基于[5]和[6],并已由我们的世界在数据汇编。在上面的情节中,我创建了一个新的子情节ax_new
来放大 1990 年到 2019 年之间的值。我使用了fig.add_axes([x1, x2, x3, x4])
并为新的子情节的矩形轮廓指定了左、下、宽和高。为了在新支线剧情ax_new
和主支线剧情ax
之间添加连接线,我使用了ax.indicate_inset_zoom(ax_new)
。用于此目的的笔记本出现在这里。
最大的排放源
众所周知,中国是世界上人口最多的国家,也是目前 GHG 排放量最大的国家。截至 2019 年,中国占全球二氧化碳排放量的近三分之一,而美国占中国的一半。过去 20 年,随着中国经济的崛起,中国的排放量呈指数级增长。2019 年,中国、美国、EU-27 国、印度和俄国共排放了全球三分之二以上的二氧化碳,超过了世界其他国家的总和[7]。
说到气候公正,历史很重要。这是因为与全球变暖有近乎线性关系的不是排放的时机,而是累积排放[2]。谈到累计数字,自前工业化时期以来,没有一个国家像美国排放的一样多(4100 亿吨二氧化碳)。其次是欧洲联盟(欧盟)的 27 个成员国(287 亿吨二氧化碳)、中国(220 亿吨二氧化碳)、俄罗斯(114 亿吨二氧化碳)和印度(52 亿吨二氧化碳)。累积排放量最高的国家必须承担责任,支持那些排放最少但更容易受到气候危机影响的国家。
按地区(顶部)和百分比份额(底部)分列的年度二氧化碳排放总量。数据基于[7]。CC-BY我们的数据世界。
这个数字的数据基于[7]。上图包含两个支线剧情。顶部的子图描绘了各地区的实际二氧化碳排放量。下面的子图描述了一个国家/地区在年度全球二氧化碳排放量中所占的百分比份额。该图的笔记本可在这里获得。
未来会怎样?
气候行动追踪器(CAT) 是一个独立的科学联盟,根据巴黎协议的温度限制目标追踪政府的气候行动。根据 CAT 的说法,在当前的政策下,仍然没有迹象表明 GHG 的排放量会很快达到峰值。根据目前的政策,GHG 的累积排放量将导致本世纪末气温比工业化前水平升高 2.7 至 3.1 摄氏度。如果世界各国政府提出的承诺和目标得以实现,这将导致气温上升 2.4 摄氏度,可能性为 66%。在乐观的情况下,如果 131 个国家已经采纳或正在讨论的净零目标得以实现,这将进一步限制变暖水平,可能低于 2.2 摄氏度[8]。
全球变暖预测到 2100 年。气候分析和新气候研究所版权所有 2021。
上图来源于[8]。温度评估是使用称为 MAGICC6 的碳循环气候模型完成的,该模型也用于 IPCC 评估报告中,它代表了时变气候敏感性、碳循环反馈、气溶胶作用力和海洋热量吸收特征。
前进的道路
上述评估表明,在世界各国政府承诺的目标和将全球气温上升限制在 1.5 摄氏度的最终目标之间仍存在巨大差距。单个政府或行动的行动至关重要,因为对于已经处于气候紧急情况第一线的人们来说,每一度的微小变化都至关重要。
能源和气候情报单位(Energy and Climate Intelligence Unit)是一家支持英国就能源和气候变化问题进行知情辩论的非营利组织,它一直在跟踪哪些国家在其立法、政策文件或讨论中设定了净零目标。根据追踪器,苏利南和不丹是世界上仅有的两个已经实现净零排放的国家。包括欧盟、英国和加拿大在内的 13 个国家/地区已经在其法律中规定了净零目标。爱尔兰、智利和斐济在其国家立法中提出了净零目标。有 28 个国家在其政策文件中规定了 2035 年、2040 年、2050 年或 2060 年的净零目标。非洲、亚洲和美洲的大多数发展中国家的净零目标还在讨论中[9]。
零净目标。数据基于[9]。数据中的我们的世界。
上图的数据基于[9]。我已经用 geopandas 绘制了上面的地图。在地理数据框架中,我合并了数据框架中的一列,其中包含各个国家的国家净零目标的状态。该图的笔记本显示在这里。
简单地说
近几十年来,GHG 的人为排放量持续上升。仅在过去三十年中,除了 2007 年至 2009 年的全球金融危机期间以及 2020 年由于新冠肺炎相关的经济放缓,排放量大幅上升。世界上的发达和工业化地区是目前排放水平和随后气温上升的核心。重要的是,这些国家应对其造成的气候危机承担责任,并因此以身作则,迅速向低碳经济转型,支持发展中国家跳过化石燃料,转向清洁能源。
每升高一度,弱势群体就更难摆脱气候危机造成的不平等循环。因此,可以正确地说,气温升高的每一个微小的变化都会限制气候崩溃的危险。
参考文献
[1]《联合国气候变化框架公约》(2015 年)。巴黎协定。
[2]气专委(2021 年)。气候变化 2021 物理学基础。
[3]赫内等人,(2020 年)。排放:世界有四倍的工作或三分之一的时间。
[4]阿伯格(2021 年)。COP 26 是什么,为什么重要?
[5] Smil,V. (2017)。能源转型:全球和国家视角。
[6]英国石油公司(2020)。2021 年世界能源统计综述。
[7]全球碳项目(2020 年)。2020 年全球碳预算。
[8]《气候行动追踪》(2021 年)。气温:应对全球变暖。
[9]能源和气候情报股(2021 年)。净零追踪器。
4 个库可以并行处理现有的 Pandas 生态系统
使用这些框架通过并行处理来分配 Python 工作负载
Pandas 是一个非常受欢迎的 Python 库,因为它提供了高级可用和灵活的 API 以及高性能的实现。Pandas 提供了大量用于数据争论探索的 API,但是忽略了计算的性能和可伸缩性。Pandas 非常慢,或者有时无法在大型数据集上执行探索,因为它使用了 CPU 的单核。它没有 100%利用 CPU 内核。
在本文中,我们将讨论 4 个开源库,它们可以在 CPU 的多个内核上并行化现有的 Pandas 生态系统:
Dask:
Dask 是一个用于并行计算的开源 Python 库。它可以用于扩展 Numpy、Pandas、Scikit-Learn 操作,还可以在可用的 CPU 内核之间并行化自定义功能。Dask 允许在笔记本电脑或大型分布式集群上并行操作。
Dask 提供的 API 与 Pandas、Numpy 和 Scikit-Learn 非常相似,因此开发人员不必担心学习新东西。Dask 提供了这些著名库的高级 API 的优势以及伸缩能力。
(来源),Dask 有能力整合现有项目
Dask 实际上是建立在 Pandas、Numpy 和 Scikit-Learn 库之上的,因此,它提供了所有 API 的高级实现。
Dask 提供了一个高级集合,包括:
- Dask 数组:建立在 Numpy 之上
- Dask Dataframe:建立在熊猫之上
- Dask Bag:专为处理非结构化数据而打造
- Dask 延迟:并行化定制函数
- Dask Futures:扩展 Python 的
**concurrent.futures**
接口。
(来源),引擎盖下工作的 Dask
为在 dask 集合上执行的所有操作和操纵创建任务图,任务图由 Dask 调度器并行化。
要了解关于 Dask 及其实现的更多信息:
阅读 Dask Github 库和 Dask 文档
Vaex:
Vaex 是一个开源 Python 库,用于处理核外数据帧。Vaex 库可用于在大型数据集上执行可视化和探索。Vaex 使用表达式系统、惰性计算、和内存映射的概念来处理大于内存的数据集,并在其上执行探索。
Vaex 几乎可以通过内存映射瞬间加载 1TB 左右的内存。Vaex 不会立即执行任何计算,它会创建一个表达式系统,并且仅在需要或明确请求时执行计算。
(图片由作者提供),什么是表达系统
Vaex 提出了有效的算法,并使用延迟计算(惰性计算)来执行计算。Vaex 大约可以处理**10**9 rows/second**
。Vaex 提出了一个类似熊猫的 API,它可以与 Jupyter notebook 和 Jupyter Lab 集成,以提供交互式可视化。
阅读下面提到的文章,了解更多关于 Vaex 库的实现和工作的信息。
摩丁:
Modin 是一个建立在 Pandas 库之上的开源 Python 库,它能够在所有 CPU 内核上扩展 Pandas 工作流。与其他分布式库不同,Modin 可以很容易地与 Pandas 库集成。摩丁的 API 和熊猫的 API 非常相似。
Modin 充分利用了 CPU 内核,从而提升了计算的性能。开发人员不需要太担心学习新的代码片段,因为他们只需要对代码中的 import 语句做一行修改。
(来源),熊猫和摩丁的 CPU 核心利用率
阅读下面提到的文章,了解更多关于摩丁库的实现和工作。
跟随这个站点,浏览摩丁文档。
IPython 并行:
IPython Parallel 或 ipyparallel 是一个开源的 Python 库,它有一组 CLI 脚本来控制 Jupyter 的集群。IPython parallel 使您能够利用 Jupyter 笔记本电脑的多个 CPU 内核。
(来源),IPython 架构
Ipyparallel 是专门为在集群上并行执行 Jupyter 笔记本而设计的。它使用一个映射,将任何函数应用于一个序列,并将工作分配给可用的 CPU 内核。对于复杂的任务,开发人员可以分配特定的功能来远程或并行运行它。
结论:
在本文中,我们已经讨论了 4 个分布式 Python 库,它们可以扩展 Pandas 数据帧的计算。这些库不仅可以加速 Pandas 的工作流程,还可以加速其他流行的库,如 Scikit-Learn、Numpy 和自定义函数。
有几个其他的库可以在可用的 CPU 内核之间分配工作流,包括 Ray 、 Pandarallel 、 Dispy 、 Joblib 。
参考资料:
[1] Dask 文件:https://dask.org/
[2] Vaex 文件:https://vaex.io/docs/index.html
[3]摩丁文献:https://modin.readthedocs.io/en/latest/
感谢您的阅读
高级用户应该警惕的 Google Data Studio 的 4 个局限性
(以及如何克服它们)
格伦·卡斯滕斯-彼得斯在 Unsplash 上拍摄的照片
~2022 年 2 月 17 日更新 — Google Data Studio 刚刚推出了高级数据混合选项,基本上消除了本文(1)中提到的一个限制。请继续阅读本文: Data Studio 引入了新的数据混合选项——数据可视化的游戏规则改变者 。 本帖中提到的其他限制还有待解决。
Google Data Studio 是我在过去几个月中越来越常用的一个工具。随着使用率的提高,我开始注意到它相对于其他工具的优势,它的能力,但也有它的局限性。
有许多关于技术的教程和数据可视化指南,但没有多少讨论该工具的常见缺陷以及如何克服它们。
因此,这里有 4 个谷歌数据工作室的限制,高级用户在建立他们的报告之前绝对应该考虑。
1.数据混合使用左外连接
Google Data Studio 中的混合数据遵循左外连接的 SQL 参数。
左外部联接的工作方式是混合数据,即从左数据源获取所有记录,并将它们与右数据源的匹配记录相结合。
数据混合在谷歌数据工作室解释,来源: GDS 演示:混合数据报告
总共有 7 种类型的表连接,这是数据科学专业人员习惯使用的。对于高级用户来说,只拥有一个会感觉很无力。
这在实践中意味着什么?
您必须特别注意两个数据源是如何混合的,更具体地说,就是将它们添加到混合数据实体的顺序。
根据左外连接的定义,添加的第一个表(数据源)将用作基础,因此第二个表中的任何附加数据条目(超出第一个表的连接键字段)都不会被允许进入新的数据集。
这是一种非常有限的连接表的方法,因为尽管它在寻找模式方面足够先进,但它拒绝空值。
有哪些替代方案?
如果您可以使用它,Big Query 是处理更大数据集的一个很好的选择。所谓伟大,我指的是在混合数据和连接表的上下文中,就必须建立数据管道、学习 SQL 和为每个查询付费而言,并不是那么伟大。如果基础设施存在,请使用它进行数据处理。
或者,对于更小的数据集和更可控的操作,Gsheets 也应该做得很好。 Dave Mendl 写了一个很棒的指南,介绍了可以用来复制 Gsheets 中七种 SQL 连接的不同函数,使用了 VLOOKUP、FILTER 和 advanced operations 等函数。
2.混合最多只能有五个数据源,所有数据源都应该共享一个连接键。
虽然仍然是关于连接表和混合数据源的主题,但我遇到的最令人沮丧的限制之一是,在创建一个新数据源时,您最多只能混合五个数据源。
虽然这听起来可能很多,但相信我——不是的。
看看 SEO 领域的几个例子。我使用 GDS 可视化定制提取尖叫青蛙,这是每月做一次。有了时间戳,就可以导入和可视化这些数据,显示趋势线。嗯,我的意思是,五个数据点的趋势线…
想象一下,如果有一个单独的表格显示客户站点上的任何改进的日期。将这些数据来源结合起来,理论上就可以衡量我提出的具体建议的影响。遗憾的是,考虑到这种限制,任何这样的混合都必须在更新之前进行。
那么,这会对你产生什么影响呢?
如果您和我一样,您希望在可视化功能方面突破工具的极限,并从合并的数据中为报告用户提取最大价值。最多可以使用五个共享一个维度的数据源,并且可以在这个维度上进行连接,这通常会限制您可以显示什么以及如何显示。
关于连接的另一个奇怪的事情是,Data Studio 作为一个可视化工具不处理缺失值。因此,如果连接键中有这样的值,混合将无法进行。
除了最多只能将五个数据源混合成一个之外,Google Data Studio 无法基于包含缺失值的连接键来连接数据。,资料来源:GDS
有哪些选择?
最简单的解决方案是离线混合数据,使用谷歌工作表或 Excel。您可以将这两者与 Zapier 或其他自动化工具集成在一起,尽管这种解决方案在实现上相当不可靠。
3.合并许多数据源可能会导致报表中断。
如果您曾经构建过 Data Studio 报告,您应该知道“死亡之吻”——破坏图表、未知数据源、用户配置错误、数据集配置错误……错误错误错误。
可悲的是,当您的表损坏时,Data Studio 在友好或乐于助人方面并没有什么好名声,就好像他们甚至不在乎这可能会完全排斥用户再次访问您的报表。
我非常喜欢胡安·贝洛的这篇文章,这篇文章讲述了 Data Studio 常见的错误以及如何修复它们。我不会深入讨论每个错误,但我会说有几种不同的情况您应该调查。
我所学会实现的是这两个宝石的规则:
- 简化——简化、删除和减少。
- 连接的所有权——这意味着尽一切力量管理添加的数据源及其连接方式
通过减少不需要的东西并将不同的仪表板合并成一个,您可以保持良好的用户体验,而不必牺牲报告的质量。一个好的经验法则是提供一个好的、稳定的整体概述,它链接到奇特的、不太稳定的、粒度数据视图。
4.连接器的可用性很大程度上取决于它们的内部数据库模式。
您可以在报表中使用数百个连接器,还可以嵌入自己的数据源。一个多世纪以前,Emmert Wolf 写道“一个人的好坏取决于他的工具”,这句话直到今天仍然适用。
那么,我们来谈谈工具。
我注意到的是,笨重、难看的电子表格是最好的数据源。例如,Google Analytics 数据源的每个属性都有一个连接,其中包括所有数据字段。相比之下,SEMrush 的连接器包括三个不同菜单之间的选择,每个菜单连接到 SEMrush 上包含的不同数据段。
有哪些替代品?
直接与 API 集成,而不是使用连接器。这不仅是最安全的连接,因为它可以管理数据源,避免身份验证和潜在的延迟,而且可以按照您希望的方式构建数据源。
外卖
虽然这可能有很多需要理解,但在提供外卖之前,我只想强调:Data Studio 绝对令人惊叹,我每天都用它来制作各种报告。
我有构建小型报告的经验,比如跟踪我的收入流的个人财务仪表板,SEO 咨询公司的强大报告,复杂到在一份报告中使用数百个不同的数据源。
我大力提倡将数据可视化和报告融入生活的方方面面,这也许是我如此热爱 Data Studio 的原因。所以,也许正如老话所说:
我们批评我们最爱的东西
不过,严肃地说,希望这个列表能够帮助初学者和高级用户更好地了解 Data Studio 的功能、它的局限性以及如何克服它们。
总而言之,这里列出了 Google Data Studio 的 4 个局限性,以及一些克服这些局限性的简便方法。
- 数据混合使用左外连接
替代方案:根据数据的大小和复杂性以及您的基础设施容量,在 GSheets 或 Big Query 中执行复杂的数据扩充。
2。混合最多只能有 5 个数据源,所有数据源都应该共享一个连接键。
替代方案:离线混合数据,使用自动化工具简化流程。
3。合并许多数据源可能会导致报告中断
备选方案:简化报告并维护数据源的所有权。
4。连接器的可用性高度依赖于它们的内部数据库模式
替代:使用 API,而不是连接器。
感觉好奇?继续阅读…