TowardsDataScience 博客中文翻译 2020(四百八十一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

如何从任何 Sklearn 管道中获取特性重要性

原文:https://towardsdatascience.com/how-to-get-feature-importances-from-any-sklearn-pipeline-167a19f1214?source=collection_archive---------9-----------------------

入门

管道可能很难导航,下面是一些通用的代码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由昆腾·德格拉夫Unsplash 上拍摄

介绍

管道太神奇了!我基本上在我从事的每个数据科学项目中都使用它们。但是,轻松获得特性的重要性要比需要的困难得多。在本教程中,我将介绍如何从管道中访问单个特征名称及其系数。在那之后,我将展示一个通用的解决方案来获取几乎所有管道的特性重要性。

管道

让我们从一个超级简单的管道开始,它应用一个单独的特征化步骤,然后是一个分类器。

from datasets import list_datasets, load_dataset, list_metrics
from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import svm# Load a dataset and print the first examples in the training set
imdb_data = load_dataset('imdb')classifier = svm.LinearSVC(C=1.0, class_weight="balanced")
model = Pipeline(
    [
        ("vectorizer", TfidfVectorizer()),
        ("classifier", classifier),
    ]
)
x_train = [x["text"]for x in imdb_data["train"]]
y_train = [x["label"]for x in imdb_data["train"]]
model.fit(x_train, y_train)

这里我们使用优秀的数据集 python 包来快速访问 imdb 情感数据。这个由 HuggingFace 整理的包有大量的数据集,它们都已经准备好了,所以你可以直接进入有趣的模型构建。

上面的管道在一个列表中定义了两个步骤。它首先接受输入并将其传递给 TfidfVectorizer,后者接受文本并将文本的 TF-IDF 特征作为向量返回。然后,它将该向量传递给 SVM 分类器。

注意这是如何按顺序发生的,TF-IDF 步骤,然后是分类器。您可以链接任意多的特征化步骤。例如,上述管道相当于:

model = Pipeline(
    [
        ("vectorizer", CountVectorizer()),
        ("transformer", TfidfTransformer()),
        ("classifier", classifier),
    ]
)

在这里,我们甚至更多地手动操作。首先,我们得到每个单词的计数,其次,我们应用 TF-IDF 变换,最后,我们将这个特征向量传递给分类器。TfidfVectorizer 一步就完成了这两项工作。但这说明了一点。**在原始管道中,事情按顺序执行。**稍后我们将讨论如何将特性堆叠在一起。现在,让我们努力获得第一个示例模型的特性重要性。

特征重要性

管道使得访问单个元素变得容易。如果您在培训后打印出模型,您将会看到:

Pipeline(memory=None,
         steps=[('vectorizer',
                 TfidfVectorizer(...)
                ('classifier',
                 LinearSVC(...))],
         verbose=False)

也就是说有两个步骤,一个叫做vectorizer,另一个叫做classifier。我们可以通过查看管道的named_steps参数来访问它们,如下所示:

model.named_steps["vectorizer"]

这将返回我们拟合的 This 矢量器。相当整洁!Sklearn 中的大多数特征化步骤还实现了一个get_feature_names()方法,我们可以通过运行该方法来获得每个特征的名称:

# Get the names of each feature
feature_names = model.named_steps["vectorizer"].get_feature_names()

这将为我们提供矢量器中每个特征名称的列表。然后我们只需要从分类器中获取系数。对于 Sklearn 中的大多数分类器来说,这就像获取.coef_参数一样简单。(集合方法略有不同,它们有一个feature_importances_参数代替)

# Get the coefficients of each feature
coefs = model.named_steps["classifier"].coef_.flatten()

现在我们有了分类器中的系数和特征名称。让我们把它们组合成一个好的情节。

import pandas as pd# Zip coefficients and names together and make a DataFrame
zipped = zip(feature_names, coefs)
df = pd.DataFrame(zipped, columns=["feature", "value"])# Sort the features by the absolute value of their coefficient
df["abs_value"] = df["value"].apply(lambda x: abs(x))
df["colors"] = df["value"].apply(lambda x: "green" if x > 0 else "red")
df = df.sort_values("abs_value", ascending=False)

想象一下:

import seaborn as snsfig, ax = plt.subplots(1, 1, figsize=(12, 7))
sns.barplot(x="feature",
            y="value",
            data=df.head(20),
           palette=df.head(20)["colors"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90, fontsize=20)
ax.set_title("Top 20 Features", fontsize=25)
ax.set_ylabel("Coef", fontsize=22)
ax.set_xlabel("Feature Name", fontsize=22)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以我们可以看到,负面的单字似乎是最有冲击力的。那很酷。获得这些特性的重要性很容易。让我们尝试一个稍微复杂一点的例子。

从要素联合中获取要素重要性

在大多数真实的应用程序中,我发现我以复杂的方式将许多功能结合在一起。前面我们看到了管道如何按顺序执行每个步骤。我们如何处理多个同时发生的步骤?答案是 FeatureUnion 类。假设我们想要构建一个模型,在这个模型中,我们采用 TF-IDF 的二元模型特性,但是也有一些手工策划的二元模型。(参见我关于使用模型寻找好的 unigrams 的博文。)我们可以使用 FeatureUnion 来定义这个管道。FeatureUnion 接受一个transformer_list,它可以是转换器、管道、分类器等的列表。然后连接它们的结果。

classifier = svm.LinearSVC(C=1.0, class_weight="balanced")
vocab = {"worst": 0, "awful": 1, "waste": 2,
         "boring": 3, "excellent": 4}
model = Pipeline([
    ("union", FeatureUnion(transformer_list=[
        ("handpicked", TfidfVectorizer(vocabulary=vocab)),
        ("bigrams", TfidfVectorizer(ngram_range=(2, 2)))])
    ),
    ("classifier", classifier),
    ])

正如你所看到的,我们的模型有两个步骤,一个是 T4,一个是 T5。在union中,我们做了两个不同的特征化步骤。我们找到一组手工挑选的一元特征,然后是所有二元特征。

从这个模型中提取特征稍微复杂一些。我们必须进入联盟,然后获得所有的个人特征。让我们手动尝试一下,然后看看我们是否可以推广到任意管道。我们已经知道如何访问管道的成员,要进入 FeatureUnion 内部,我们可以直接查看transformer_list并遍历每个元素。所以代码应该是这样的。

handpicked = (model
              .named_steps["union"]
              .transformer_list[0][1]
              .get_feature_names())bigrams = (model
           .named_steps["union"]
           .transformer_list[1][1]
           .get_feature_names())feature_names = bigrams + handpicked

因为分类器是对单个向量进行操作的 SVM,所以系数将来自相同的地方并且处于相同的顺序。我们可以再次看到我们的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来我们的二元模型比我们手工选择的二元模型信息量更大。

一般情况

因此,我们已经做了一些简单的例子,但现在我们需要一种方法来实现任何(几乎任何)管道和功能联合的组合。为此,我们求助于老朋友深度优先搜索(DFS)。我们将把管道看作一棵树。每一层都可以有任意数量的特征联合,但它们最终都会叠加成一个特征向量。遍历时大致有三种情况需要考虑。第一种是基本情况,我们在一个实际的转换器或分类器中,它将生成我们的特征。第二个是如果我们在管道中。第三种也是最后一种情况是当我们处于 FeatureUnion 内部时。让我们更深入地讨论这些。

案例 1:特征化步骤

这里我们想写一个函数,给定一个某种类型的特征,它将返回特征的名称。这是我们 DFS 中的基本情况。在 Sklearn 中,有许多不同类型的东西可用于生成特征。一些例子是聚类技术、降维方法、传统分类器和预处理器等等。每一种都允许您以不同的方式访问特性名称。例如,文本预处理器 TfidfVectorizer 实现了一个get_feature_names方法,就像我们上面看到的那样。然而,大多数聚类方法没有任何命名的特征,它们是任意的聚类,但是它们有固定数量的聚类。让我们编写一个助手函数,给定一个 Sklearn 特征化方法,它将返回一个特征列表。

在这里,我们尝试并列举一些可能发生在 Sklearn 内部的潜在情况。我们使用hasattr来检查所提供的模型是否有给定的属性,如果有,我们调用它来获得特性名称。如果该方法类似于聚类,并且不涉及实际命名的特征,那么我们通过使用提供的名称来构造我们自己的特征名称。例如,假设我们将这个方法应用到有两个组件的PCA,我们将步骤命名为pca,那么返回的结果特征名称将是[pca_0, pca_1].

深度优先搜索

现在我们可以实现 DFS 了。

让我们一起来解决这个问题。这个函数需要三样东西。首先是我们要分析的模型。这个模型应该是一个管道。第二个是我们想要提取的所有命名的特征化步骤的列表。在我们的上一个示例中,这是bigramshandpicked.这是我们在模型中使用的各个步骤的名称。最后一个参数是我们正在查看的当前名称。这对于递归来说是必要的,在第一遍中并不重要。(我应该创建一个 helper 方法来对最终用户隐藏这一点,但是现在需要解释的代码较少)。

  • 第 19–25 行构成了基本案例。它们处理步骤名称与我们所需名称列表中的名称匹配的情况。这对应于一个叶节点,它实际上执行特征化,我们希望从它那里获得名称。
  • 第 26–30 行管理管道中的实例。当这种情况发生时,我们希望通过访问named_steps参数来获得每一步的名称,然后遍历它们来收集特征。我们遍历管道中的每个命名步骤,并在一个列表中获取所有的特性名称。
  • 第 31–35 行管理我们在 FeatureUnion 时的实例。当这种情况发生时,我们希望从transformer_list参数中获得每个子转换器的名称,然后遍历它们来收集特性。

有了这些,我们现在可以使用任意嵌套的管道,比如说下面的代码,并以正确的顺序获得特性名称!

from sklearn.decomposition import TruncatedSVD
classifier = svm.LinearSVC(C=1.0, class_weight="balanced")
vocab = {"worst": 0, "awful": 1, "waste": 2,
         "boring": 3, "excellent": 4}
model = Pipeline([
    ("union", FeatureUnion(transformer_list=[
        ("h1", TfidfVectorizer(vocabulary={"worst": 0})),
        ("h2", TfidfVectorizer(vocabulary={"best": 0})),
        ("h3", TfidfVectorizer(vocabulary={"awful": 0})),
        ("tfidf_cls", Pipeline([
            ("vectorizer", CountVectorizer()),
            ("transformer", TfidfTransformer()),
            ("tsvd", TruncatedSVD(n_components=2))
        ]
        ))
    ])
     ),
    ("classifier", classifier),
])

在这个例子中,我们构造了三个手写的规则特征化器和一个子管道,该子管道执行多个步骤并导致维数减少的特征。我们可以使用一行代码从这个管道中获得所有的特性名称!

get_feature_names(model, ["h1", "h2", "h3", "tsvd"], None)

它会回来的

['worst', 'best', 'awful', 'tsvd_0', 'tsvd_1']

正如我们所料。

结论

有很多方法可以混合和匹配管道中的步骤,获得特性名称可能是一种痛苦。如果我们使用 DFS,我们可以按照正确的顺序提取它们。这种方法在 SciKit-Learn 的生态系统中的大多数情况下都有效,但我还没有测试所有的东西。要扩展它,你只需要查看你试图从中提取名字的任何类的文档,并用一个新的条件检查来更新extract_feature_names方法,如果想要的属性存在的话。我希望这有助于使管道更容易使用和探索:)。你可以在这里找到一个 Jupyter 笔记本,里面有这篇文章的一些代码示例。和我所有的帖子一样,如果你遇到困难,请在这里评论或在 LinkedIn 上给我发消息,我总是很有兴趣听到人们的意见。编码快乐!

如何获得免费的 GPU 硬件

原文:https://towardsdatascience.com/how-to-get-free-gpu-hardware-e51574578cae?source=collection_archive---------5-----------------------

以及当你长大后该怎么做

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Rafael Pol 在 Unsplash 上的照片

你听说过深度学习。你已经听说它正在改变世界。你也听说过需要一个非常好的 GPU

很自然,你看一看你的计算机,看看你有什么样的硬件。你可能会发现以下三种情况中的一种:

  • 你根本没有专用的 GPU(笔记本电脑常见)。
  • 你有一个 GPU,但它不是深度学习非常需要的 Nvidia GPU。
  • 你有一个 Nvidia GPU,但它远不足以满足你的深度学习需求。

那么——现在怎么办?你如何接触到必要的硬件来接触深度学习?让我们来看看。

Kaggle 笔记本

Kaggle 笔记本(也称为内核)是由 Kaggle 提供的一个免费的计算环境,你可以用它来运行你的代码。以下是技术规格:

  • 9 小时的执行时间
  • 5gb 自动节省的磁盘空间(/kaggle/working)
  • 16gb 的临时暂存磁盘空间(外部/ka ggle/工作)

CPU 规格

  • 4 个 CPU 内核
  • 16 千兆字节的内存

GPU 规格

  • 2 个 CPU 内核
  • 13 千兆字节的内存

你可以从上面看到,你有两个选择:基于 CPU 的笔记本电脑或基于 GPU 的笔记本电脑。既然在讨论深度学习,我们就假设 GPU 笔记本。注意:如果对 GPU 笔记本电脑的需求很高,你可能会被放在一个队列中,不得不等待一个。

对于 GPU 笔记本,你得到一个单一的英伟达特斯拉 P100。这个 GPU 有 12GB 的内存和 4.7 万亿次双精度性能。

Kaggle 还预装了运行深度学习实验所需的几乎所有库,使设置变得极其简单。真的,你要做的就是打开一个带 GPU 的 Kaggle 笔记本,开始编码。

在我看来,这是一个惊人的选择,但它也有一些缺点。首先,当提交代码时,你只能得到 6 个小时的执行时间。提交代码是保存代码的方式。深度学习实验需要几天的训练并不罕见,所以如果你开始处理更复杂的问题,6 小时的限制可能会非常有限。

其次,尽管硬件的零成本令人惊叹,但对于需要大量内存或大量培训的模型来说,单个 GPU 可能太小。例如,在视频或大型文本语料库上训练的深度学习模型。这两者都需要大量的 GPU 内存。几乎可以肯定的是,他们在单个 GPU 上训练的时间会超过 6 个小时。

这两种失败都只发生在试图训练相当大的深度学习模型的高级用户身上。出于这个原因,如果你刚刚开始深度学习,我强烈建议你从 Kaggle 笔记本开始。它们不需要任何成本,让您能够访问一个良好的单个 GPU,预装了基本上所有必要的库,并允许您专注于学习如何利用深度学习。

然而,如果你继续沿着深度学习的道路走下去,在某一点上,你可能会超越你的 Kaggle 笔记本。那么——然后呢?

云的魅力

在这一点上,我看到很多人转向云。这很容易上手,你只需为你使用的东西付费,你就可以使用一些真正强大的机器。

例如,每小时大约 31 美元,你就可以使用一台 8 特斯拉 V100s 和 256GB 总 GPU 内存的机器。那是一台很重要计算机。你还可以以每小时 0.90 美元的价格获得单个 K80 GPU。K80 GPU 不是最好的(它比 Nvidia 1080 GPU 慢 2.5 倍),但它有 24GB 的内存!

也就是说,对于大多数人来说,我会避免在云中训练你的深度学习模型。

主要原因很简单——如果你总是不得不花钱尝试新模式或进行新实验,这将在精神上侵蚀你。你每次都必须决定你想要运行的模型是否值得。这种心理斗争会阻止你尽可能多地学习和尝试。

此外,如果你继续使用更便宜的机器,你不会比从 Kaggle 得到更多的硬件。你将得到的最大好处是无限的时间来运行你的模型,但是因为你是按小时付费的,这将开始累加。此外,如果你从 Kaggle 大幅升级你的硬件,它也开始变得相当昂贵。

那么,你还有什么选择呢?

建造它

如果你已经开始使用 Kaggle 笔记本进行深度学习,并且你知道你想变得更大,跳过云的精神痛苦,建立自己的深度学习平台。

让我们浏览一些数字。

现在让我们假设你对 1 个 GPU 没问题,但想要更长时间运行的模型的自由,而你在 Kaggle 上没有,以及以后升级到更多 GPU 的能力。那正是我建造我的机器的地方。

我选择了以下核心组件:

  • 英特尔酷睿 i7–6850k3.6 GHz 6 核处理器。我选择这款处理器是因为它可以为您提供 40 个 PCI-E 通道,让您能够最大限度地运行 2 个 GPU。此外,拥有 6 个内核非常有利于并行数据处理。
  • 海盗船复仇 LPX 32gb(2x 16 GB)DDR 4–3200 内存,因为在我看来,如今 16GB 是不够的。
  • 三星 970 PRO512 GB m . 2–2280 NVME 固态硬盘,以便尽可能最快地从我的硬盘上加载数据。我还买了一个 3 TB 的旋转磁盘来存储我目前培训时不需要访问的数据。
  • 技嘉 GeForce GTX 1080 Ti 11 GB AORUS 显卡。当我购买我的机器时,这真的是基于桌面的深度学习的最佳选择。如果我今天购买,我会仔细看看 2080 Ti。

现在,你可以用大约 2400 美元来构建上述系统(包括所有其他必要的组件)。

为了保守的比较,让我们把这个和 AWS 上的一个 p2.xlarge 的成本进行比较,AWS 是一个更差的机器(除了更多的 GPU 内存)。这台机器每小时收费 0.90 美元。增加 512GB 的存储空间可能会让你每小时多花 0.07 美元。花 2400 美元,你可以运行这台机器大约 103 天。

听起来很神奇,对吧?

除了当我想到可能花了两周的计算时间才搞清楚强化学习,所以我可以在超人的水平上玩乒乓球。如果你认为你尝试的每个项目可能需要大约 14 天的训练来找出所有的错误并进行优化,那么在你达到 2400 美元之前,你会得到大约 7 个项目。

哎哟。

更糟糕的是,想象一下每次你训练 2 天后发现一个 bug。那个窃听器花了你将近 50 美元。对我来说,每次我想训练一个模特都要付钱,这太痛苦了。我宁愿沉下建造自己机器的成本,然后放心去疯狂。我知道我通过这种方式学到了更多,因为我不怕尝试。事实上,由于我预先花了这么多钱,我没有动力去做尽可能多的实验。

余钱

建造你自己的机器有非金钱的好处。通过为我的机器选择所有的部件,然后把它们组装起来,我学到了很多。当然——这有时令人沮丧,但最终,这是一种巨大的成就感。

我还能够发现如何安装和优化所有必要的库、驱动程序和软件包来运行深度学习。如果我想升级我的系统,我有一个非常强大的基础。比如,就在这个月我买了一个更大的 NVME 硬盘(升级到 1 TB)。我现在以大约 150 美元的投资获得了 1.5TB 真正快速的数据存储。如果我想将我的 GPU 升级到 2080 Ti,我就不必购买全新的机器。我会买新的图形处理器,然后把它放进去。一旦你建立了自己的机器,这种随着时间的推移逐步升级的能力是惊人的!

希望我已经让你相信,一旦你不再需要 Kaggle 笔记本电脑,就可以自己制造一台机器。2400 美元不是一笔小投资,但我认为大多数人在攒钱造机器的同时继续使用 Kaggle 笔记本会更好。这并不是说你不应该接触云计算。如果在保存的时候你有一个大规模的模型想要运行,试试 AWS 或者 Google 云计算。我只是不认为云对于那些想做很多深度学习项目的人来说是一个好的长期解决方案。

然而,无论你选择哪条道路,我希望你能在构建深度学习模型方面取得成功!

注意:当链接到产品时,我使用附属链接,但这些是我实际购买和使用的产品。

这个故事也可以在这里找到。

免费获得掌握数据科学的 11 种极其有用的资源

如何使用 Python 获得免费的历史和实时股票价格和外汇汇率

原文:https://towardsdatascience.com/how-to-get-free-historical-and-live-stock-prices-and-fx-rates-using-python-part-i-a7718f0a4e4?source=collection_archive---------25-----------------------

Python 中的股票价格

这是一个指南,展示了如何使用 Python 从雅虎财经Alpha Vantage 获得历史和实时股票价格和外汇汇率。

这两个 API 都是免费的,但是 Alpha Vantage 标准 API 限制为每分钟 5 个请求,每天 500 个请求。这对于一个简单的投资组合股票监控工具来说应该足够了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

克里斯·利维拉尼在 Unsplash 上的照片

有多少 API?

这个清单很长,而且近年来还在增加。允许免费 API 调用股市数据的提供者列表包括: Finnhub.ioTenQuant.ioUniBitIEXCloudmarketstackQuandlEOD 历史数据并且是不断变化的。

我使用哪些市场标识符?

在金融服务行业的实践中,你会遇到 SEDOL、ISIN、CUSIP、RIC、BB Ticker、BB Full Ticker(最后两个是彭博社的标识符),但对于免费的 API,你可以在这里查看这个 MICs(市场标识符代码)列表。

雅虎财经

雅虎财经 API 是免费的,但是报价器的世界是有限的。也很难确定在 API 调用中应该使用什么代码,但是上面的 ISO 列表会有所帮助。下面是一组函数,可以返回一个报价器或一组报价器的收盘价。您可以更改周期,但有些报价机的数据没有那么旧。

下面的代码使用了一个为雅虎财经 API 包装的 Python,更多细节你可以点击这里

以下是使用美元英镑货币对的价格函数的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另一个是两种股票价格:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

阿尔法优势

Alpha Vantage 正在提供基于云的股票市场 API。用户可以访问历史和实时财务数据、技术指标和其他数据类型。这家创业公司的两位创始人都是哈佛商学院的 MBA 毕业生。

要使用 Alpha Vantage 标准 API,你必须先注册。如果您想获得更多或其他种类的数据,有一个文档页面提供了更多 API 调用的示例。

下面的代码使用了 Alpha Vantage API 的 Python 包装器,更多细节请点击这里

下面是一个为微软公司(MSFT)和 Tesla 公司(TSLA)使用 get_prices 函数的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另一个是与英镑配对的外汇汇率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于一个基本的股票投资组合工具,价格和利率是你计算自己的指标所需要的最低要求。

如何被聘为机器学习工程师

原文:https://towardsdatascience.com/how-to-get-hired-as-a-machine-learning-engineer-a9d4dca34dbf?source=collection_archive---------18-----------------------

获得机器学习工程师工作的 7 个步骤

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成为一名机器学习工程师绝不是一件容易的事情(文章开头一个积极的注解)。但是如果你有耐心和自律,这是完全可行的。坏消息是,要想在科技公司找到工作,你必须大量学习。好消息是,即使在大型科技领域,熟练的机器学习工程师也很短缺,而且薪水高得离谱。非常疯狂。值得吗?对我来说完全是。但这取决于你。

那么我该如何开始呢?

了解你的性别

在考虑申请之前,你必须了解一些基本知识。我说的基础不是指卷积神经网络。即使是 K- Means 也不行。我指的是基本的计算机科学原理。算法与数据结构,编程语言(最好是 Python),调试,测试,版本控制,云计算。这个清单还在继续。

但是请记住。机器学习工程师首先是软件工程师。他不是数据科学家,也不是数据分析师。为了学习一切,我个人会选择 Coursera 的这门令人惊叹的课程,关于 Python 编程,以及 Udacity 的这门课程,关于算法和数据结构

了解你的机器学习

没有第一步重要,但还是有用的。您应该熟悉基本算法,如回归、决策树、K 均值,并熟悉数据预处理和建模。还是那句话,不要太花里胡哨。一般来说,公司不会寻找能从数学上证明反向传播的人。他们寻找开发人员来编码和构建他们的机器学习管道。在这些管道中,机器学习只占了大约 5%的工作。同样,这些由 CourseraUdacity 开设的课程是你的朋友。

你也可以在我们的博客 AI Summer 上找到围绕机器学习的很棒的教育内容,在那里我们分析了现实生活应用中使用的不同人工智能算法和模型。

得到经验

假设你知道基础知识(你应该知道),下一个重要的步骤是获得经验。我建议开始做一些你感兴趣的个人项目(也许你可以用神经网络预测比特币价格,或者在大规模数据集中运行快速排序,我不知道),参加一两个 Kaggle 比赛,也许可以从客户那里获得一些小型自由职业者的工作。

重要的是从零开始建造整个东西。从数据库和服务器到生产中部署的 API。这是真正理解整个堆栈并接触管道所有组件的唯一方法。相信我。任何课程或教训都无法与之相比。它会立刻给你一个全新的视角。

建立投资组合和简历

现在你感觉自信了,而且你已经参与了一些现实世界的项目,是时候建立你的简历了。但是,你的简历不仅仅是一个 pdf。这是一个展示你所有项目和课程的个人网站。这是一个 LinkedIn 账户(非常重要),里面有你所有的最新信息。这是一个 GitHub 配置文件,包含了您在过去几个月中编写的所有代码。也许是一个展示你目前所学的博客。最好是以上全部。

这就是你如何从你梦想的公司吸引招聘人员的注意。这就是招聘经理在谷歌上搜索你的名字时会发现的。

准备编码面试

现在到了有趣(没那么有趣)的部分。你要准备编码面试。不要假设你知道你在做什么。即使你有麻省理工的硕士学位。让我再说一遍。你得做好准备。

如果你对自己的算法和数据结构技能有信心,下面是你需要做的。拿一本破解编码面试(软件面试的圣经),开一个 Leetcode 账号。开始练习简单的问题。试着想出一个蛮力解决方案,然后试着优化。卡住的时候,想想还有哪些数据结构可以用。或者查一下书上类似的问题。但是不要放弃。

那就再做一个。还有一个。随着你解决的问题越来越多,你开始识别模式,你可以着手解决中等甚至困难的问题。你应该解决多少问题?越多越好。如果你想在 FAANG 工作,可能要 150 英镑。否则大约 50。

还有,我的建议是,在你练习的时候,尽快尝试和模拟实际的面试体验。设置一个计时器。大声解释你的想法。

学习系统设计

面试中不可或缺的一部分是系统设计环节,在这一环节中,你要描述你将如何构建一个流行的架构,比如 Instagram 或网飞。它评估你所有的技术能力,你的背景和你的一般知识。因此,这不是你一夜之间就能学会的。

虽然你可以准备。你可以从 10 个最流行的应用程序的系统设计开始,然后尝试设计一个不同的应用程序。重复这个过程,直到你感到自信。

你还应该强调机器学习架构,如推荐系统或搜索自动完成。一般来说,这一轮公司会测试你的 ML 背景。但请记住,这是一个非常高层次的谈话。

应用

最后一步是开始申请。当然,你可以在公司的在线平台上提交申请。但是不要期待任何结果。为了加快这一过程,我将重点关注三件事:

  • 在 LinkedIn 上找到招聘人员,向他们发送好友请求,表达你对某个职位的兴趣,让你的简历/ GitHub 账户/网站为你做所有的工作。但是要巧妙的做。表达你对这家公司的兴趣,打电话询问信息,等等。
  • 向一位在科技公司工作的朋友寻求推荐(50%的人是通过推荐被雇佣的)。
  • 参加招聘会和社交活动

就这样吗?就这么简单?Lol。可以说这是一个漫长的过程,在被拒绝后继续下去需要勇气和决心。但是不要气馁。没有一个人没有被拒绝过。你也应该知道,不幸的是,这也是一个时机和运气的问题。

但最终,你所有的努力都会有回报。这不是时机或运气的问题。这是必然的。

如果你有兴趣阅读更多关于人工智能的帖子,请不要不看我们的博客就离开 艾夏

原载于 2020 年 2 月 8 日 https://theaisummer.com

Foobar 挑战:谷歌的秘密招聘过程

原文:https://towardsdatascience.com/how-to-get-hired-by-google-b19806ad3c62?source=collection_archive---------3-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Google Foobar 招聘挑战(图片由作者提供)

终极指南

关于谷歌桌面挑战赛你需要知道的一切

最近,当我在谷歌上搜索关键词“无头浏览器”时,我的窗口出现了一个不寻常的弹出窗口,上面有一条信息:

众所周知,好奇的开发人员会寻求有趣的问题。从谷歌解一个?

我很惊讶地看到谷歌给我发送了一个挑战,我立即接受了!点击“我想玩”,我进入了谷歌的 Foobar 页面。

这是谷歌足球挑战赛!

Google Foobar Challenge 到底是什么?

Google Foobar challenge 是该公司在全球招募顶级程序员和开发者的秘密招聘程序。众所周知,谷歌的一些开发人员就是通过这种方式被聘用的。

挑战包括五关九题,每关难度递增。

得到挑战后怎么办?

选择“我想玩”选项后,你进入 Foobar 的网站,它有一个类似 Unix 的外壳界面,包括一些标准的 Unix 命令,如help, cd, ls, cat and etcetera.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者提供)

所以,挑战从一个科幻冒险故事情节开始(在上面的蓝色文字中)。要开始限时挑战,我们必须在 shell 中输入一个request命令。

请求挑战后,命令行文件夹中添加了四个文件:solution.javasolution.pyreadme.txtconstraints.txt ,我们必须使用cat and ls命令访问它们(列于help)。

***java******python 2.7*** 中,我们有一个选择来解决问题。

要开始编写代码,我们必须运行命令edit file.pyedit file.java,一个代码编辑器将在同一个网页上打开(并使用快捷键save代码)。我们可以通过运行verify file命令随时验证我们的代码。代码将通过在几个测试用例上运行来验证,其中两个是可见的,其余的是隐藏的测试用例。一旦代码准确地通过了所有的测试用例,我们就可以通过运行submit file命令来提交我们对那个问题的解决方案。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者提供)

五个层次的足球挑战

随着挑战的深入,难度会不断增加。

第一关:这一关只有一个问题,简单明了,很容易解决。它不需要任何特殊的算法来解决它。给 48 小时来解决这个问题。

**第二关:**本阶段有两个问题,每个问题的解决时间为七十二小时。这两个问题都是基于线性代数和数学的基本原理。

在解决了这两个问题后,我们会得到一个推荐链接,也就是说,我们可以邀请我们的一个朋友参加 Google Foobar 挑战赛!

第三关:这是挑战开始变得有点棘手的地方。要通过这一关,我们必须解决三个问题,每个问题的时间为七天。

要解决这些问题,需要很好的数学知识和编程概念,如动态编程、马尔可夫链等。

但是如果你不知道这些概念,你也不需要担心,你可以随时在网上学习这些概念。挑战给你足够的时间来理解概念,并在给定的编程问题中实现它们。在其中一个问题中,我用最直观的方法解决了问题,但是对于大值来说不够理想,需要执行动态编程才能得到结果。

[## 动态编程初学者指南

使用一些简单的技术优化你的代码

towardsdatascience.com](/beginners-guide-to-dynamic-programming-8eff07195667)

完成第 3 级后,我们被要求填写我们的详细信息,以便与 Google 招聘人员联系!

他们会询问你的基本信息:姓名、电话号码、电子邮件地址、国家、简历(可选),以及你是学生还是专业人士。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者 ) Foobar 招聘表

第四级:我发现这一级是五级中最难的。它需要实现几个概念来解决一个问题。这一级总共有两个问题,每个问题有两个星期的时间来解决。

在这一级需要广泛的算法和数据结构知识。

第一个问题是基于数论和图形的概念。为了解决这个问题,我必须实现贝尔曼-福特算法。

我花了很多时间去理解这些概念,并实现它们来解决这些问题。但是我能够按时解决这两个问题。

成功完成第 4 级后,您将获得另一个推荐链接,邀请您的另一位朋友尝试这项挑战!

**第五关:**这是整个挑战中第二难的问题,完全基于数学概念。最后一关只有一个问题,给了 22 天的时间来解决这个问题!

该题要求理解排列组合和实施【pólya】计数定理伯恩赛德引理 。理解了这两个定理后,编码部分就简单多了。

随着这个问题的提交,Google Foobar 挑战就完成了!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者 ) Foobar 挑战完成

结束挑战后,我得到了一个加密的字符串,使用base64很容易解密。

import base64encrypted="THE ENCRYPTED MESSAGE"my_eyes=str.encode("MY USER NAME")decoded=base64.b64decode(encrypted)decrypted=""for i in range(0,len(decoded)):decrypted+=chr((my_eyes[i%len(my_eyes)] ^ decoded[i]))print(decrypted)

这是我用来解密信息的代码。解密的消息是:

{'success' : 'great', 'colleague' : 'esteemed', 'efforts' : 'incredible', 'achievement' : 'unlocked', 'rabbits' : 'safe', 'foo' : 'win!'}

完成挑战后会发生什么?

在成功完成所有五关之后,谷歌的招聘人员很可能会联系你进行面试。

你可能会收到一封电子邮件或一个电话,如果你通过了面试,那么你就可以被谷歌录用。

如何获得 Foobar 挑战?

不幸的是,这一挑战并不是每个人都可以获得的,谷歌只向特定的开发人员发送(这可能是基于他们的搜索历史——技术关键词)。

如果你没有收到邀请,不要担心,这不是在谷歌找到工作的唯一途径。

不要找 Foobar,让 Foobar 找你!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者提供)

结论

我想说这是一个很好的学习机会,如果你收到邀请,我会建议你解决这些问题。

在解决问题的同时,不要把目标放在被谷歌录用上,而是要学习新的技术,体验最好的编码挑战之一。

Foobar 更多的是学习和执行,而不是之前什么都知道!

如果您有任何疑问或意见,请发表在评论区。

要改进你的代码,请点击这里查看我们的文章

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由作者提供)

看看这个:https://www.fiverr.com/share/LDDp34

最初发表于:www.patataeater.blogspot.com

Resources:
[https://foobar.withgoogle.com/](https://foobar.withgoogle.com/)
[https://www.freecodecamp.org/news/the-foobar-challenge-googles-hidden-test-for-developers-ed8027c1184/](https://www.freecodecamp.org/news/the-foobar-challenge-googles-hidden-test-for-developers-ed8027c1184/)

没有学位如何进入数据科学

原文:https://towardsdatascience.com/how-to-get-into-data-science-without-a-degree-2f84516f1afd?source=collection_archive---------4-----------------------

来自同一职位的数据科学家的建议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由卡莱斯·拉巴达Unsplash 上拍摄

介绍

这篇文章是为那些属于下列类别之一的人而写的:

  1. 你没有大专学位,但你对数据科学感兴趣。
  2. 你没有 STEM 相关的学位,但是你对数据科学感兴趣。
  3. 你在一个与数据科学完全无关的领域工作,但你对数据科学感兴趣。
  4. 你只是对数据科学感兴趣,想了解更多。

你可能在想,“我还有机会吗?”

答案是,“是的,有可能。”

好消息是你已经通过了第一步,那就是你对数据科学感兴趣。现在,这不会是一个轻松的旅程,因为你处于劣势,但要以此为燃料,每天激励自己。

最重要的是,我要给你我的建议,我希望我在开始的时候就有。

首先,简单介绍一下我自己…

我有商科学位,但我从大学二年级开始就对机器学习感兴趣。因此,我自学了今天我所知道的大部分知识,并且我很幸运地在一些数据分析师/数据科学工作中工作过。

我为什么要告诉你这些?我想说清楚,我也曾经和你有过类似的处境!

请记住,这是一个长期目标,因此你应该期待长期结果。如果你愿意投入 100%的精力,我会给你至少一年的时间来决定是否继续。

说完这些,让我们深入探讨一下:

没有学位如何进入数据科学

进入数据科学归结为两件事,成长展示你的技能。

1)提高您的数据科学技能

不久前,我写了一篇文章,“如果可以重来,我会如何学习数据科学。“在这篇文章中,我按科目划分了要学的内容,即统计&数学、编程基础和机器学习。

在这篇文章中,我将根据你的理解水平来划分你应该学什么。

0 级:基础

你必须从最基本的开始,构建模块,不管你想叫它什么。但是相信我这么说,你的基本面越好,你的数据科学之旅就会越顺利。

特别是,我建议你在以下主题上建立你的基础:统计与概率、数学和编程。

**统计和概率:**如果你读过我以前的文章,那么你可能已经听过无数次了,但是数据科学家实际上只是一个现代统计学家。

  • 如果你很少或者没有接触过统计和数学,我推荐 可汗学院的统计和概率课程
  • 但是,如果你有一些微积分和积分方面的知识,我强烈推荐你去上乔治亚理工学院的课程,叫做“ 统计方法 ”。当它通过更多的证明时,会有一点困难,但是它会帮助你理解每个想法的复杂性。

数学:取决于你在高中的注意力有多集中,将决定你需要花多少时间学习基础数学。你应该学习三个领域:微积分、积分和线性代数:

  • 当涉及到与优化相关的任何事情时,微积分是必不可少的(这在数据科学中非常相关)。为此我推荐 可汗学院的微积分课程
  • 当涉及到概率分布和假设检验时,积分是必不可少的。我推荐 可汗学院的积分课程
  • 如果你想进入深度学习,线性代数尤其重要,但即使如此,了解其他基本的机器学习概念也是很好的,如主成分分析和推荐系统。惊喜惊喜,你能猜到我为此推荐什么课程。此处 提供了 的链接。

正如对数学和统计学有一个基本的了解很重要一样,了解编程的核心基础知识会让你的生活变得容易得多,尤其是在实现方面。所以,我建议你在一头扎进机器学习算法之前,先花时间学习基本的 SQLPython

  • 如果你完全不熟悉 SQL,我推荐你去浏览一下Mode 的 SQL 教程 ,因为它非常简洁透彻。
  • 同样,如果你完全不熟悉 Python, Codecademy 是熟悉 Python 的好资源。

第一级:专业化

一旦你学会了基础知识,你就可以专攻了。此时,是否要专注于机器学习算法、深度学习、自然语言处理、计算机视觉等,就看你自己了……

你可以专攻的东西太多了,所以请你在做决定之前多探索一下!

第二级:实践

像任何事情一样,你必须练习你所学的东西,因为你失去了你不用的东西!这里有 3 个我推荐的资源来练习和完善你的技能。

  1. leet code 是一个很棒的资源,它帮助我学会了我从来不认为是可能的技能和巧妙的技巧。这是我在找工作时充分利用的东西,也是我会经常回去查阅的资源。最好的部分是,他们通常有推荐的解决方案和讨论板,因此您可以了解更有效的解决方案和技术。
  2. 熊猫练习题: 这个资源 是一个装满了专门为熊猫准备的练习题的资源库。通过完成这些练习题,你将知道如何:过滤和排序数据,汇总数据,使用。apply()操作数据等等。
  3. Kaggle 是世界上最大的数据科学社区之一,有数百个数据集可供您选择。有了 Kaggle,你可以在比赛中竞争,或者只是利用可用的数据集来创建自己的机器学习模型。

2)展示您的数据科学技能

学习数据科学是一回事,但人们通常忘记的是营销自己——你最终会想要展示你所学到的东西。如果你没有数据科学相关的学位,这对你来说尤其重要**。**

一旦你完成了几个个人数据科学项目,以下是你展示它们和推销自己的几种方式:

你的简历

首先,利用你的简历展示你的数据科学项目。我建议创建一个名为“个人项目”的部分,在那里你可以列出两到三个你已经完成的项目。

同样,你可以在 LinkedIn 上的“项目”部分添加这些项目。

Github 知识库

**如果您还没有创建 Github 库,我强烈建议您创建一个。当我们谈到 Github 时,学习 Git 将是一个好主意。在这里,你可以包含你所有的数据科学项目,更重要的是,你可以把你的代码分享给别人看。

如果你有一个 Kaggle 帐户,并在 Kaggle 上创建笔记本,这也是一个不错的选择。

一旦你有了一个有效的 Kaggle 或 Github 帐户,确保你的帐户网址可以在你的简历、LinkedIn 和你的网站(如果有的话)上找到。

个人网站

说到网站,我强烈建议以网站的形式建立一个数据科学作品集。HTML 和 CSS 很容易学习,这将是一个有趣的项目!如果你没有时间,像 Squarespace 这样的东西也可以。

在媒体上写博客

我有偏见,因为这对我很有效,但这并不意味着我不能推荐博客!有了 Medium 这样的平台,你就可以写项目走查了,就像我在 葡萄酒品质预测 上写的。

非营利机会

最后,利用非营利数据科学机会。我偶然看到苏珊·柯里·西维克、写的一篇足智多谋的文章,文章提供了几个组织,你可以在那里获得从事现实生活中的数据科学项目的机会。

感谢阅读!

我希望这能为您的数据科学事业提供一些指导和帮助。没有一成不变的方法来处理这个问题,所以请放心地持保留态度。尽管如此,我还是希望你在数据科学的努力中一切顺利!

不确定接下来要读什么?我为你挑选了另一篇文章:

** [## 你不应该成为数据科学家的 4 个理由

为什么数据科学工作可能不适合你

towardsdatascience.com](/4-reasons-why-you-shouldnt-be-a-data-scientist-e3cc6c1d50e)

特伦斯·申

如何从纽交所获取不到 3 行的市场数据(Python)。

原文:https://towardsdatascience.com/how-to-get-market-data-from-the-nyse-in-less-than-3-lines-python-41791212709c?source=collection_archive---------5-----------------------

在本文中,您将学习使用 Python 包获取股票市场数据,如价格、交易量和基本面数据。(不到 3 行代码)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Aditya VyasUnsplash 上拍摄的照片

来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指南 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

在本文中,您将学习使用 Python 包获取股票市场数据,如价格、交易量和基本面数据。(中不到 3 行代码)

首先,在开始之前,您需要安装 Python 3 版本和以下软件包:

  • 熊猫
  • 熊猫 _datareader
  • 日期时间

如果这些软件包中的任何一个尚未安装,您可以使用如下所示的 pip 命令。

pip install pandas-datareader
pip install DateTime

一旦您确保安装了以下软件包,我们就可以开始了。

如果你已经有了使用 Python 的经验,你可以跳到第三步。第一步和第二步包括导入数据并转换为日期格式。

一、进口包装

第一步将包括导入必要的包。

首先,您将使用以下代码行导入先前安装的软件包:

上面的代码行用于导入 python 库。

从 pandas_datareader 库中,我准备只导入数据和 wb 模块**。**

一旦我们设置好了,让我们进行下一步。

现在库已经导入,第二步将由日期转换成日期时间格式组成。

二。将日期转换为日期时间格式

如果您之前已经转换过日期,则此步骤不是强制性的。但是,如果您没有,我建议您使用下面的代码行:

在上面的代码行中,Python 将日期从字符串格式转换为日期时间格式。

你会注意到,关于结束日期,我故意用今天作为结束日期。这是 DateTime 模块的优点之一。它将不断地让你的笔记本保持最新的日期。

例如,如果您在 3 个月后重新运行您的内核,您的数据框架和图表将会用最新的市场数据进行更新。

设置好开始和结束日期后,我们现在可以导入市场数据。

三。使用 Yahoo Finance 或 Alpha Vantage API 导入数据

既然我们已经以正确的格式转换了开始和结束日期。我们将使用 Tesla 作为例子来设置我们的导入。

Pandas DataReader API 将需要 4 个强制参数,顺序如下:

  • 心脏
  • 特定的 API(雅虎、AlphaVantage、sooq……)
  • 开始日期
  • 结束日期
  • 和潜在的 API 密钥

对于我们的例子,股票代码将是 TSLA ,API 将是雅虎,开始和结束日期已经在上面定义了(从 2020 年 2 月 4 日到今天)。快速提醒一下,特斯拉的股票代码是 TSLA

因此,让我们通过使用下面的代码行来尝试这种组合:

让我们检查一下输出…

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嘣!!!

你得到的市场数据包括成交量、最高价、最低价、开盘价和调整收盘价。

我希望你喜欢这篇文章,如果你有任何问题或使用不同的方式,评论如下。

赛义德·莱萨尼

完整的 Python 代码:

来源:

(1)一天学会算法交易:

* [## 一天学会算法交易(美国大选更新)

交易 707 是数据科学家和交易员的结合。我们都在伦敦工作和生活。我们觉得累了…

www.udemy.com](https://www.udemy.com/course/learn-algorithmic-trading-in-one-day/?couponCode=TOWARDSCIENCE)*

如何在 operator 中使用 SQL 获得更多洞察?

原文:https://towardsdatascience.com/how-to-get-more-insights-using-sql-in-operator-9bbe73f9b4ba?source=collection_archive---------45-----------------------

使用 IN 运算符跨表合并数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

克里丝蒂娜·瓦格纳Unsplash 上拍照

我们都知道 SQL IN 是一个有用的操作符,它允许您在 WHERE 子句中选择多个条件。然而,IN 操作符甚至比您想象的更有用。在中,您可以跨表合并数据。

一个使用 Google BigQuery 公共数据集的例子

为了举例说明,我将快速浏览一遍教程。我使用 Google BigQuery 的公共数据集,名为 austin_bikeshare 。因此,你可以很容易地按照我的代码来练习。

这个数据集中有两个表。 bikeshare_stations 表格包含有关站点名称、状态和位置的信息。 bikeshare_trips 表包括关于行程的开始时间、结束时间、开始站、结束站、持续时间和订户类型的信息。

作为一名数据分析师,我可能想通过出行次数了解每个起点站的性能。然而,我只对仍然活跃的站感兴趣。因此,我可以把我的问题框定如下:

每个活动始发站进行了多少次旅行?

您可以从 bikeshare_trips 表中轻松找到始发站和相关的行程。但是,每个站点的状态位于 bikeshare_stations 表中。解决方案可能是使用 JOIN:

还有一个使用 IN 的解决方案,在这个方案中,您不必使用 JOIN。首先,通过从 bikeshare_trips 表中计算行程 id,选择所有起点站的名称和行程数。然后,在 WHERE 子句中,编写一个子查询,从 bikeshare_stations 表中选择所有活动的站点,并使用 in 运算符。结果,所选择的站被限制在活动站的子集内,而不是所有站。代码如下:

另一个 Leetcode 问题的例子

我用 607 号问题(销售人员)来进一步说明。问题是选择表销售人员中的所有姓名,他们没有销售给“RED”公司。

表:salesperson

+----------+------+--------+-----------------+-----------+
| sales_id | name | salary | commission_rate | hire_date |
+----------+------+--------+-----------------+-----------+
|   1      | John | 100000 |     6           | 4/1/2006  |
|   2      | Amy  | 120000 |     5           | 5/1/2010  |
|   3      | Mark | 65000  |     12          | 12/25/2008|
|   4      | Pam  | 25000  |     25          | 1/1/2005  |
|   5      | Alex | 50000  |     10          | 2/3/2007  |
+----------+------+--------+-----------------+-----------+

表:company

+---------+--------+------------+
| com_id  |  name  |    city    |
+---------+--------+------------+
|   1     |  RED   |   Boston   |
|   2     | ORANGE |   New York |
|   3     | YELLOW |   Boston   |
|   4     | GREEN  |   Austin   |
+---------+--------+------------+

表:orders

+----------+------------+---------+----------+--------+
| order_id | order_date | com_id  | sales_id | amount |
+----------+------------+---------+----------+--------+
| 1        |   1/1/2014 |    3    |    4     | 100000 |
| 2        |   2/1/2014 |    4    |    5     | 5000   |
| 3        |   3/1/2014 |    1    |    1     | 50000  |
| 4        |   4/1/2014 |    1    |    4     | 25000  |
+----------+----------+---------+----------+--------+

由于该问题仅询问销售人员的姓名,因此从销售人员表中选择姓名是有意义的。然而,那些没有销售给“红色”公司的呢?

在这个场景中,IN 操作符发挥了作用。我们不用 IN,而只用 NOT IN。首先,我们通过连接 orders 表和 company 表,选择销售 id,并使用公司名称为“RED”的条件,来选择与公司“RED”有销售关系的雇员子集。然后,我们只需选择不属于该子集的销售 id。以下是需要遵循的代码:

通过这两个例子,我希望您能更好地理解如何使用 IN 操作符在不使用 JOIN 的情况下跨表合并数据。

借助 RapidsAI,将您的机器学习管道速度提高 300 倍

原文:https://towardsdatascience.com/how-to-get-more-then-300x-speed-up-of-your-machine-learning-pipeline-with-rapids-cuml-library-cbed4c4be6a0?source=collection_archive---------46-----------------------

你有没有在 GPU 卡上运行过最近邻!没有吗?那你为什么还不读书?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

https://unsplash.com/photos/9HI8UJMSdZA

当在大型数据集上使用简单的机器学习算法(如最近邻算法)时,找到好的模型超参数甚至建立强大的交叉验证框架往往会变得很困难,因为即使使用简单的训练测试分割,也需要模型时间来完成训练!克服这个问题的一种方法是使用 Dask 或 PySpark 在 CPU 上进行分配。但是今天我想向您展示另一种方法——使用您的 GPU 能力来拟合模型。以前从 sklearn 库中没有好的方法可以做到这一点,但是现在你可以使用 Rapids AI cuML 库来适应绝大多数 Sklearn 模型!在这篇文章中,我想给你看一个 Rapids cuML 和 Sklearn 在近邻算法上的快速比较。如果你对安装过程感兴趣,在 Rapids github 页面上有很好的描述。我们开始吧!

代码

我将使用 Kaggle 平台,该平台每周提供 30 小时的免费 K-80 GPU 使用(TPU 也可用)。

首先,让我们从两个库中导入最近邻算法。这两个库中的 API 调用看起来是一样的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,我将使用sk learn . datasets . make _ blobs方法创建一个虚拟数据集。我将创建 5 个不同大小的数据集:从小到大。在每个数据集上,我将使用 10 个邻居来拟合最近邻居模型,然后计算测试集中每个点的最近邻居。让我们先来拟合 Rapids GPU 最近邻。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如你所见,它运行得非常快。现在,是时候适合 Sklearn 了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

哇!这真的很长。正如你在小数据集上看到的,sklearn 优于 rapids,但在最大数据集上,我们获得了 300 倍的速度提升。

让我们也使用 Plotly 构建一个小的比较图(我将使用 log 转换,以便更好地显示结果)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

哇,我有时候还是不相信会有这么大的速度提升,cuML 库绝对值得一试!将 Rapids 与 Dask 之类的东西进行比较也很有趣,但这是另一篇文章的想法。

感谢您的阅读!

你可以在我的 网站 上查看其他帖子

如何用机器学习技术获得更多的 YouTube 浏览量

原文:https://towardsdatascience.com/how-to-get-more-youtube-views-with-machine-learning-techniques-9e7000f6fcf7?source=collection_archive---------12-----------------------

Python 中流行健身频道的循序渐进过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: Pixabay

在本帖中,我们将机器学习算法应用于 YouTube 数据,就如何获得更多浏览量提出建议。

我们将包括端到端流程

  • 抓取 YouTube 数据
  • 在视频标题上使用自然语言处理
  • 特征工程
  • 构建预测决策树
  • 更多

尽在 Python

如果你想知道数据科学如何帮助 YouTube 频道获得更多的浏览量/收入,那就看看吧。

让我们开始吧。

我们正在分析的 YouTube 频道是Sydney Cummings——我们最喜欢的教练。她发展很快,最近已经超过了 20 万用户。

此外,Sydney 每天都会发布各种锻炼视频,这是一个很好的分析数据量。

今天没健身吗?下面是她最近的一个视频。

30 分钟手臂撕裂和强健臀肌锻炼!🔥燃烧 310 卡路里!* 🔥

你可能已经注意到她的视频的标题都遵循标准格式。它们通常包括长度、身体部位、消耗的卡路里和其他关于锻炼的描述性词语。在我点击这个视频之前,我会知道:

  • 30 分钟——我将在 30 分钟内完成整个锻炼。
  • 手臂和臀大肌——我会在手臂和臀大肌上下功夫,重点是力量。
  • 燃烧 310 卡路里——我会燃烧相当多的卡路里。

我们将分析这些关键信息。

让我们看看是否可以向 Sydney 推荐任何新的内容创作策略来进一步改进甚至

准备:收集数据

抓取 YouTube 数据有不同的方法。由于这只是一个一次性项目,我们用最简单的方法来做,这需要手工操作,但是不需要额外的工具。

以下是逐步程序:

  1. 向下滚动到频道的视频页面,直到所有视频都出现。
  2. 右击最新的视频,选择“检查*”。*
  3. 将光标悬停在每行上,找到 HTML 代码/元素的最低级别,突出显示所有视频。
    例如,我们使用 Chrome 浏览器,它看起来是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:悉尼的 YouTube 视频页面

4.右键单击元素并选择“复制”,然后选择“复制元素”。
5。将复制的元素粘贴到文本文件中并保存。我们使用 JupyterLab 文本文件,并将其保存为 sydney.txt
6。使用 Python 提取信息和清理数据。我们不解释细节,因为每个案例都不一样。为了您的方便,这里的代码是。

现在我们可以开始有趣的部分了!

我们将从该数据集中提取特征,并研究影响视图数量的特征。

步骤 1:观察数据

将数据加载到 Python 是在最后一节完成的;让我们来看看我们的数据集 df_videos

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df_videos 有 8 个描述每个视频细节的特征,包括:

  • 标题
  • 时间发布 _ 之前
  • 长度
  • 视图
  • 链接
  • 卡路里
  • 发布日期
  • 天 _ 自 _ 贴

还有 837 个视频。

此外,我们发现数据中存在重复,因为 Sydney 多次上传了相同的视频。但是我们会忽略它,因为重复的很少。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步:用自然语言处理技术对视频进行分类

在这一步中,我们着重于根据标题中的关键字对视频进行分类。

我们希望根据以下内容对视频进行分组:

  • 这段视频关注的是身体的哪些部位?
  • 这个视频到底是在帮我们增力还是减脂?
  • 其他关键词?

我们使用自然语言处理技术和自然语言工具包来处理标题。

在这篇文章中,我们不会解释这些技术的所有细节。如果你不熟悉的话,可以看看这篇文章(如何在 Python 中使用 NLP:一个实用的分步示例)。

形成关键词列表

首先,我们标记视频的标题。

此过程使用空格(" ")等分隔符将标题文本字符串显式拆分为不同的标记(单词)。这样,计算机程序可以更好地理解文本。

这些标题中有 538 个不同的单词。列表的顶部在下面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

很多词使用频率很高。这再次证明悉尼确实使用标准格式的视频标题。

通过查看上面的列表,我们创建了 3 个关键字列表,可用于在未来的步骤中对视频进行分类。

  • body_keywords —标识视频关注的身体部位,如“丰满”的身体、“腹肌”、“双腿”。
  • 健身程序 _ 类型 _ 关键词 —显示健身程序类型,如“有氧”、“拉伸”、“力量”。
  • other_keywords —包括经常使用但难以归类的关键词,如“训练营”、“倦怠”、“调色”。

对关键字列表进行词干分析

在形成这些关键字列表后,我们还提取它们。词干提取过程确保计算机程序能够匹配具有相同意思的单词。

比如“abs”和“ab”这两个词,词干“ab”是一样的。

标记和词干化 YouTube 标题

除了关键词,我们还需要对标题进行分词和词干处理。

这些过程为进一步匹配准备了关键字和标题列表。

相关文章:

现在我们已经准备好构建特性了!

步骤#3:设计特性

经过头脑风暴,我们提出了与 Sydney 的 YouTube 视图相关的两种主要类型的功能——基于关键字和基于时间。我们一个一个来看。

基于关键字的功能

-指示器特征

感谢上一步的辛勤工作,我们有了 3 个关键词列表和精简的标题。我们现在可以匹配它们来对视频进行分类。

对于 body_keywordsworkout_type_keywords ,一个视频中可能有多个关键字。所以在匹配之前,我们还要创建 2 个特征区域健身类型。这些功能将一个视频的所有身体部位和锻炼类型连接成一个字符串。
例如,一个健身视频可以同时做“ab”和“leg”,或者同时做“cardio”和“strength”。该视频的功能区域为“ab+腿部”,锻炼类型为“有氧+力量”。

同时,我们还识别出“总”和“全”、“核心”、“ab”等相似的关键词,并进行分组。

最后,我们创建三种不同类型的虚拟特征:

  • is_{}_area 用于识别视频中是否包含特定的身体部位。
  • 是 _ { } _ 健身程序用于识别健身程序类型。
  • title_contains_{} 查看健身程序标题是否包含其他关键字。

明确地说,“腿部力量耗尽锻炼”的视频标题将具有 is_leg_area = True、is_strength_workout = True 和 title _ contains _ burnout = True 而所有其他指标都是假的。

请阅读下面的 Python 代码了解详细信息。

-频率特性

除了这些指标,我们还创建了三个功能,称为 num_body_areasnum_workout_typesnum_other_keywords 。他们计算一个视频标题中提到的关键词的数量。

举个例子,标题“腹肌和腿部有氧力量锻炼”的 num_body_areas 和 num_workout_types 都是 2。

这些功能有助于我们确定视频中应包含的最佳身体部位数量或锻炼类型。

-费率特性

最后但同样重要的是,我们创建一个功能卡路里每分钟查看卡路里燃烧率。

毕竟,我们都想要一些明确的(可量化的)锻炼目标。

资料来源: Giphy

在进入基于时间的功能之前,我们还修复了几个分类错误的视频。该过程是手动的,所以我们在这里不包括它们。

基于时间序列的特征

通过上述基于关键词的特征,我们已经可以找到特定的流行类型的视频。但这是否意味着悉尼应该总是发布相同类型的视频?

为了回答这个问题,我们还创建了一些基于时间序列的功能:

  • num_same_area —过去 30 天内关注同一区域的视频(包括当前视频)数量。
    例如,当当前视频关注上身时,此功能= 6,并且在过去 30 天内还有 5 次其他上身锻炼。
  • num_same_workout —此功能与 num_same_area 相似,不同之处在于计算健身程序类型。
    例如,当当前视频是一个 HIIT 健身程序,并且在过去 30 天内还有 2 个其他 HIIT 健身程序时,此功能= 3。
  • last_same_area —自上一个视频聚焦于与当前视频相同的身体区域以来的天数。
    比如当前视频聚焦 abs 时这个特征= 10,之前的 abs 视频是 10 天前的。
  • last_same_workout —该功能与 last_same_area 类似,只是比较了不同的健身程序类型。
  • num_unique_areas —过去 30 天内处理的唯一身体区域的数量。
  • num_unique_workouts —过去 30 天内发布的独特锻炼类型的数量。

这些特征有助于我们看到观众更喜欢相似的还是各种类型的视频。

下面看看特征工程的详细流程。它包括一些转换以适应熊猫的滚动功能。

我们发现 Sydney 偶尔会发布一些与锻炼无关的视频。他们获得的浏览量明显更少,表现也与锻炼视频不同。所以我们把它们从分析中剔除。

我们还过滤掉前 30 天的视频,因为它们缺乏足够的历史数据。

多重共线性测试

多重共线性(也称共线性)是一种现象,在这种现象中,多元回归模型中的一个预测变量可以通过其他预测变量以相当高的准确度进行线性预测。

多重共线性不会降低模型整体的预测能力或可靠性,至少在样本数据集内是如此;它只影响关于单个预测因子的计算。

正如维基百科解释的那样,多重共线性确实会影响个体特征对结果的影响力。

为什么这很重要?

假设 Sydney 只在周一发布力量训练,她的视频总是在周一获得更多的浏览量。这些视频获得更高的浏览量是因为它们发布在周一还是因为它们是力量训练?

在做推荐的时候,我们希望回答这些类型的问题。因此,我们希望确保我们的要素之间没有强烈的共线性。

既然我们已经清楚了多重共线性测试的原因。让我们看看我们应该使用哪种方法。

我们经常使用成对相关来测试共线性,但有时这是不够的。多个要素(多对)之间可能同时存在共线性。

因此,我们使用一种更复杂的方法。在高层次上,我们使用 K 倍交叉验证来实现这一点。

详细过程如下:

  • 根据我们的判断选择一组关键特征来测试共线性。

我们选择以下特征,因为它们对于预测 YouTube 视频的观看量至关重要。

可以看到,我们还添加了三个由随机数组成的特征 rand0rand1rand2 。在比较特征之间的关系时,它们充当锚。如果一个预测特征与这些随机特征相比不太重要或相似,则它不是目标特征的重要预测。

  • 为 K 倍交叉验证准备这些特征。

在此过程中,我们转换了分类特征区域和锻炼类型。这种转换确保每个类别级别至少有 K 个值。

  • 使用其中一个特征作为目标,其余特征作为预测器,训练预测模型。

接下来,我们遍历每个特征,并使用其他特征拟合一个模型来预测它。我们使用一个简单的模型梯度推进模型(GBM) 和 K 倍验证。

根据目标特征是数值的还是分类的,我们应用不同的模型和分数(模型预测能力评估度量)。

当目标特征为数值时,我们使用梯度推进回归器模型和均方根误差(RMSE);当目标特征是分类的,我们使用梯度推进分类器模型和精确度

对于每个目标,我们打印出 K 倍验证分数(分数的平均值)和最重要的 5 个预测值。

  • 研究每个目标特征的得分和重要预测因素。

我们研究每个目标特征以及它们与预测因子的关系。我们不会涵盖整个过程,而只是解释下面的两个例子。

我们发现长度和卡路里特征是相关的。这一发现很直观,因为锻炼时间越长,燃烧的卡路里可能就越多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们也可以想象这种关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如你所见,长度和卡路里之间存在正相关关系。但是它不够强壮,我们不能扔掉它们。40-45 分钟的视频中燃烧的卡路里与 30-35 分钟、50-55 分钟甚至 60 多分钟的视频重叠。因此,我们保留了它们。

我们还发现 num_same_area 和 area_full 特征是相关的。这一发现有些令人惊讶。我们来探究一下原因。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下图显示了 num_same_area 和 area 之间的关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

num_same_area 功能统计过去 30 天内发布的关注同一区域的视频(包括当前视频)的数量。特色 area_full 代表全身锻炼,是悉尼视频中最常见的类型。

因此,当 num_same_area 较大时,这些视频关注的唯一可能的区域是整个身体。

假设我们发现更高的 num_same_area (>=10)确实会导致更高的 YouTube 浏览量。我们无法知道是因为 area_full 还是 num_same_area。所以我们放弃了 num_same_area 特性来防止这种情况。

除此之外,我们还使用类似的逻辑删除了 num _ same _ outsets。

步骤#4:创建目标

你可能还记得,这个项目的目标是增加 YouTube 的浏览量。我们是否应该仅仅以浏览量作为我们的目标?

观点的分布是高度倾斜的。视频的平均浏览量为 27,641 次,最高浏览量为 130 万次。这种偏斜会给模型的解释带来问题。

因此,我们创建 feature views_quartile 作为目标,而不是视图。

我们将视频分为两类——高浏览量视频(“高”)和低浏览量视频(“低”)。“高”被定义为第 75 百分位的视图(35,578)或以上,而“低”则不然。

通过这种方式,我们使用预测模型来找到产生前 25%观看视频的特征组合。这个新目标提供了稳定的结果和更好的见解。

步骤#5:构建决策树

最后,我们拥有了构建模型的一切!

我们在 target views_quartile 上训练决策树模型。

为了避免过度拟合,我们将一片叶子的最小样本设置为 10。为了便于理解,我们将树的最大深度设置为 8 级。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关文章: 如何可视化 5 步决策树

步骤 6:阅读决策树

在这最后一步,我们研究并总结导致高视图或低视图的“分支”。

我们发现的主要洞见是什么?

洞察力#1:每分钟燃烧的卡路里是最重要的特征

是的,卡路里每分钟是最重要的特征。

人们似乎不太关心锻炼的类型或身体的部位。

在每分钟消耗的卡路里较高(≥ 12.025)的锻炼中,51/(34+51) = 60%的视频观看率较高。

而每分钟消耗热量较少(≤ 9.846)的视频比其他视频受欢迎程度低得多。只有 12/(154+12) = 7.2%的浏览量很高。

对于每分钟消耗的卡路里中等的视频(介于 9.846 和 12.025 之间),其他因素开始起作用。

当然,每个人都想高效地燃烧卡路里!

洞察力#2:不同身体部位的各种独特锻炼不会增加视野

这种洞察力和我们想象的有些不同。健身项目的多样性不是更好吗?

当过去一个月工作的独特身体区域的数量(num_unique_area)高(≥ 10)时,视频往往具有较低的观看率。即使每分钟燃烧的卡路里很高,这种说法也是正确的。

结合前面两种观点,42/(12+42) = 78%的视频在以下情况下获得了更多的观看次数

  • 每分钟燃烧的卡路里很高(≥ 12.025)
  • 过去一个月中工作的独特区域的数量较少(< 10)。

最近几个月提到的太多身体部位可能会给观众造成困惑。

洞察力#3:臀部锻炼很受欢迎

当一个视频燃烧的卡路里较少(卡路里 _per_min ≤ 9.846)时,5/(10+5) = 33%的人只要是屁屁锻炼,仍然获得高浏览量;然而,只有 7/(144+7) = 4.6%的非屁股有高的看法。

虽然我们在树上看不到其他特定的身体部位,但悉尼的观众想找出“屁股”区域!

获得更多视图的可能建议

那么,我们可以向悉尼推荐哪些策略呢?

策略 1:燃烧更多卡路里🔥

我们可以看到,每分钟燃烧的卡路里是最重要的特征。每分钟燃烧 12.025 卡路里似乎是神奇的数字。

下表是不同长度的热门视频应该燃烧多少卡路里的良好起点:

  • 30 分钟锻炼:361 卡路里
  • 40 分钟锻炼:481 卡路里
  • 50 分钟锻炼:601 卡路里
  • 60 分钟锻炼:722 卡路里

我们怀疑数字(长度和卡路里)的显示是心理作用。人们可能喜欢看到卡路里的前两位数字形成一个比长度大得多的数字。

策略 2:使用较少不同的身体部位关键词🔻

有时候就是多。

人们不喜欢健身标题中描述的太多独特的身体部位。根据我们的模型,一个月内专注于少于 10 个身体部位组合更好。

我们注意到 Sydney 在她最近的视频中使用了更少的身体部位关键词。最明显的一个是她一直使用“手臂”或“上身”,而不是像“二头肌”或“背部”这样的词。

策略 3:创造更多的臀部锻炼🍑

悉尼的订户可能更多是女性,她们倾向于关注锻炼“臀部”,而不是获得肌肉发达的手臂。人们愿意牺牲燃烧更少的卡路里来获得更健美的臀部。也许悉尼应该总是包括一些燃烧更少卡路里的视频。

额外策略

除了上述策略,还有其他想法值得进一步研究。

例如,悉尼可以尝试:

  • 在月初发起新的活动。
    月初发布的视频更容易获得较高的浏览量。也许人们喜欢设立新的目标来开始新的一个月。
  • 避免在 5 天内发布相同类型的锻炼。

这是一个我们正在尝试开发的应用程序,用来提高 YouTube 的浏览量。有一些限制:

  • 这些建议基于过去的经验。YouTubers 倾向于尝试超越他们过去常规的创新想法。鉴于这一点,我们可以将机器学习应用于他们的既定竞争对手,以获得洞察力。
  • 我们只关注标题的分析。还有其他数据,比如可以抓取的视频标题。它们也可能包含有价值的见解。
  • **我们的数据比 YouTube 频道的所有者还少。**还有其他重要信息,如用户统计数据。可能会有更多的特性、更多的见解以及对这些见解的更好的解释。

感谢您的阅读。我们希望你觉得这篇文章很有趣。

留下评论让我们知道你的想法!

【https://www.justintodata.com】原载于 2020 年 3 月 1 日

更多来自 Lianne & Justin 的关于数据科学的文章,请在 网站 上注册我们的电子邮件简讯。我们在推特上分享它们,有时也会在媒体上发布。

* [## Python 中的数据清理:终极指南(2020)——只进入数据

我们用 Python 创建了这个新的完整的分步指南。你将学习如何寻找和清理的技巧:丢失…

www.justintodata.com](https://www.justintodata.com/data-cleaning-python-ultimate-guide/) [## 如何在 Python 中使用 NLP:一个实用的分步示例——只进入数据

在这篇文章中,我们展示了一个分步的 NLP 应用程序。这是对…的技术解释

www.justintodata.com](https://www.justintodata.com/use-nlp-in-python-practical-step-by-step-example/) [## 如何提高体育博彩赔率 Python 中的一步一步指南-只是进入数据

体育博彩可能不仅仅是利用你的直觉。查看我用来赚 20,000 美元的数据科学策略…

www.justintodata.com](https://www.justintodata.com/improve-sports-betting-odds-guide-in-python/)*

使用 C#或 Python 生成 OneDrive 直接下载链接

原文:https://towardsdatascience.com/how-to-get-onedrive-direct-download-link-ecb52a62fee4?source=collection_archive---------17-----------------------

为新冠肺炎数据集生成直接下载链接并导入熊猫数据框架的示例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插图作者:金彩云

在许多项目中,您可能需要文件托管服务来共享大量数据集、脚本或任何带有直接下载选项的文件。你可能已经在使用最流行的托管服务,比如 Google Drive、微软 OneDrive、DropBox 和 iCloud。在这篇文章中,我将重点介绍如何从 OneDrive.com 的制作直接下载链接。

为什么直接下载链接?

直接下载可以让你在其他软件中灵活地使用这个文件。例如,如果您托管带有直接下载链接的 excel 或 csv 表数据集,接收者可以直接将其加载到 Python 中的 Pandas 数据框架。

为什么选择 OneDrive?

我想我没有必要介绍那么多关于 OneDrive 的东西。它免费提供 5 GB 的存储空间。这对任何大型数据集来说都足够了。如果您有非常大的数据集要共享,请考虑数据库。你们大多数人甚至有微软 Office 365,其中包括 1 TB 的在线空间。此外,它很容易使用,分享,在线编辑。

我们开始吧

共享你的 OneDrive 文件

您只需转到 OneDrive,拖放到那里上传任何文件,单击页面顶部的“共享”按钮,然后单击复制链接。就是这样!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与微软 OneDrive 共享 CSV 文件【全球新冠肺炎病例时间序列 CSSE 】(作者)

例如,我通过 OneDrive 以 excel 表格的形式分享了来自 CSSE 的新冠肺炎时间序列数据集。当您通过您创建的链接访问该数据集时,浏览器将自动打开 Excel Online,以便您以表格格式浏览该数据集。多方便啊!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看可分享的 CSV 文件【全球新冠肺炎病例时间序列来自CSSE】来自 OneDrive 链接(作者)

但是,不幸的是,如果您的接收者想要下载数据集,它需要几次点击或重定向。所以,如果你的目的是让你的接收者下载文件,你最好分享一个直接下载链接。

生成 OneDrive 直接下载链接

根据 OneDrive API 文档,您可以使用以下逻辑轻松生成 OneDrive 直接下载链接:

  1. 首先,使用 base64 编码 URL。
  2. 通过删除值末尾的=字符,用_替换/,用-替换+,将 base64 编码的结果转换为未填充的 base64url 格式。)
  3. 追加u!作为字符串的开头。

选项 1:用 C#生成直接下载链接

为了遵循上述逻辑,OneDrive API 文档还为您提供了一个 C#示例脚本,如下所示:

string sharingUrl = **"Your OneDrive Link here";**
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');

您可以尝试使用以下链接在 C#中在线运行该脚本:

[## 从 onedrive.com 获得直接链接,C# - rextester

用 C#从 onedrive.com 获得直接链接

rextester.com](https://rextester.com/QNSY6325)

打开链接后,您只需将sharingUrl更改为您的任何一个 OneDrive 链接。等待几秒钟,然后您会在输出控制台中获得输出 direct OneDrive 下载链接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从 onedrive.com 获得直接链接(作者)

选项 2:用 Python 生成直接下载链接

Python 在许多数据科学项目中很受欢迎。因此,在对数据集进行数据分析之前,您可能希望直接在 Python 中生成一个直接下载链接。如果有人(或您自己)共享 OneDrive 链接,您可以使用以下 Python 脚本将其转换为可下载的链接:

one drive _ DD _ generator . py(作者)

例如,您可以按照下面的脚本以 excel 格式从我们的新冠肺炎数据集示例中生成直接下载链接。URL:https://1drv.ms/x/s!AmLiprCs46qqhMgFb5pcJisePNNlXw?e=ZgPsGZ然后导入到熊猫数据框:

**import pandas as pd** # Input any OneDrive URL **
onedrive_url = "**[**https://1drv.ms/x/s!AmLiprCs46qqhMgFb5pcJisePNNlXw?e=ZgPsGZ**](https://1drv.ms/x/s!AmLiprCs46qqhMgFb5pcJisePNNlXw?e=ZgPsGZ)**"**# Generate Direct Download URL from above Script
**direct_download_url = create_onedrive_directdownload(onedrive_url)
print(direct_download_url)**# Load Dataset to the Dataframe
**df = pd.read_excel(direct_download_url)
print(df.head())**# Continue with your data analysis ...

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

****上面脚本的输出数据帧示例。(作者)

结论

本文介绍了如何通过 OneDrive 分享你的文件,并用 C#或 Python 将其转为可直接下载的链接。请注意,您也可以使用 apply 这个逻辑并用任何其他编程语言重写它。

我希望你喜欢这篇文章,并发现它对你的日常工作或项目有用。如果您有任何问题或意见,请随时给我留言。

关于我&查看我所有的博客内容:链接

平安健康**!💪**

感谢您的阅读。📚

如何对 HTAP 数据库进行基准测试

原文:https://towardsdatascience.com/how-to-get-real-time-analytics-by-consolidating-databases-85791066d20c?source=collection_archive---------46-----------------------

整合数据库以降低成本并变得实时

塞尔吉奥·费拉古特和蒙特·兹韦本

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如何在不崩溃的情况下整合您的 RDBMS 和数据仓库(图片: Sawitre

你曾经为了昨天的销售报告等了一夜吗?或者,您可能渴望通过实时销售点和订单管理数据预测库存需求的最新需求预测。我们总是在等待我们的分析。更糟糕的是,要求修改我们的报告通常需要几周时间。雪上加霜的是,您一直在为专用分析数据库不断增加的成本缴税。

但是如果这不再是必要的呢?如果您可以整合分析,使其与运营工作负载在同一个数据库上运行,会怎么样?你的第一反应可能是,“你疯了。我们将分析从数据库中移走,因为它永远不够快。”过去是这样,但现在不是了。现在,通过将您的分析整合到一种称为混合事务分析平台(HTAP)的不同类型的 SQL RDBMS 上,可以降低您的数据库成本。一些 HTAP 数据库可以是专门的工程系统,可能花费数百万美元。但是在一个横向扩展架构上有一种新的 HTAP。这种架构将数据分布在多个服务器上,并在每个服务器上的不同引擎上执行计算,以实现混合工作负载的规模和性能。

HTAP 是 Gartner 创造的一个术语,用来描述新兴的数据库技术和应用程序,这些技术和应用程序可以提供在线事务处理(OLTP)和分析处理(OLAP),从而产生更丰富的应用程序体验和更多的商业价值。Forrester 称之为 Translytical 数据平台。如果没有这种平台,企业将被迫通过利用运营数据存储、数据仓库和数据集市的复杂管道来转换数据并将其移出应用数据库,以便最终实现分析和数据科学。这非常耗时,并导致以下方面的延迟:

  1. 生成报告
  2. 更新已部署的机器学习模型的特征,从而对旧数据进行预测
  3. 机器学习模型重新训练,导致模型不太准确。

在这篇博客中,我们展示了如何测量 HTAP 工作负载的性能。为此,我们将在同一组表上同时运行的 TPC-C 和 TPC-H 基准组合起来。TPC-C 模拟批发零售企业用户接受销售订单、处理付款、进行库存水平检查,并在大量交易数据上以高并发性记录交付。TPC-H 基准测试由 22 个复杂的分析查询组成,这些查询以相对较低的并发性扫描大量历史数据。

我们在这里使用开源基准测试项目来驱动最初发表在The mixed workload CH-benCHmark,Richard Cole 等人,db test’11,Athens,Greece 中的测试。基准测试依赖于 OLTP-Bench 中提供的代码:一个用于对关系数据库进行基准测试的可扩展测试床,D. E. Difallah,A. Pavlo,C. Curino 和 P. Cudre-Mauroux 在 2014 年 VLDB 大会上。这种处理 HTAP 工作负载的方法从 TPC-C 作为基线开始,然后覆盖修改后的针对 TPC-C 模式的 TPC-H 查询。我们已经让位于这里的集群免费试用。

TPC-C 新订单交易

我们测试的工作负载运行中测量的事务不是单个 SQL 语句,而是实际上复杂的应用程序逻辑,由一系列打包在 ACID 事务中的 select、insert 和 update 语句组成,这些语句要么作为一个整体提交,要么作为一个整体回滚。每个新订单事务平均由十个不同的行项目组成,平均需要 46 条 SQL 语句来处理。

我们的实验是在 AWS 上的开源 RDBMS 平台即服务的拼接机器上进行的。(声明:两位作者都在 Splice Machine 工作,一位是 CEO)。Splice Machine 为数据工程师和数据科学家提供集成开发环境的“笔记本”。这些笔记本包括用于多语言编程的 JupyterLab 和 BeakerX,跨单元格的变量共享,以及许多其他很酷的编码和可视化 API。下面一组 Jupyter 笔记本单元格显示了构成新订单事务的 SQL 语句。为了简化这里给出的代码,我们对示例事务的一些元素进行了硬编码:我们在订单中使用了一个商品,并将订单保存在同一个仓库的本地。基准并不局限于此。

新订单交易从客户和地区查找开始,以便获得折扣、信用和税收信息,并保留订单 id,这些都是处理新订单所需要的。我们在这里使用一个 python 单元来存储 SQL 的结果,并为多语言访问设置一些 BeakerX 变量:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,我们更新该地区递增的下一个订单 id,在 order 和 NEW_ORDER 表中创建一个新的订单条目,并检查所订购商品的仓库库存水平:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,应用程序逻辑计算订单中每个项目的订单总数和补货需求,更新库存记录,并创建订单行记录。在示例代码中,我们只做一次,但是在实际的基准测试中,订单中的每个行项目都会发生一次,平均每个订单 10 次。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TPC-H 查询

TPC-H 基准旨在测试决策支持系统,为业务运营提供见解。在这里,TPC-H 查询#2 搜索欧洲的供应商,这些供应商具有尺寸为 15 的黄铜零件的最低欧洲价格:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这要求我们首先计算整个欧洲当前的最低价格,然后找到在欧洲以最低价格供应的 15 号黄铜零件。这需要跨大型数据集的多个连接和聚合。这种查询通过使用并行分布式处理进行水平扩展来实现更高的吞吐量。

拼接机 RDBMS 有单独的工作人员负责 OLTP 和 OLAP 工作负载。为了实现以下结果,我们利用了一个由 8 个 m5.2x 大型节点组成的 AWS 集群,该集群由 4 个 OLTP 工作线程和 4 个 OLAP 工作线程组成,同时运行 100 个并发 TPC-C 用户和 8 个并发 TPC-H 用户。Splice Machine 提供了一个免费的试用集群,利用相同的硬件配置和附带的 HTAP 笔记本,让您可以轻松地试验其他并发配置。我们运行了 10 分钟长的 HTAP 工作负载,按工作负载的事务类别测量总计数,并记录所有响应时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前两个图表是已完成交易的累计计数。X 轴以秒为单位测量经过的测试时间。在 TPC-C 图表中,计数按请求类型划分,其中测量的每个事务是许多 SQL 语句的集合;图例中的 2I 3U 4S 表示 2 次插入、3 次更新、4 次选择作为最小操作计数。在许多事务中,SQL 语句计数随着订单中项目计数的增长而增长,平均订单大小为 10 个项目。在 TPC-H 查询图表中,我们统计了已执行查询的总数。这些是复杂的查询,涉及表扫描、大型连接和聚合、子查询以及其他开销很大的查询结构。

延迟图表向我们展示了事务响应时间在整个工作负载执行过程中是如何变化的。第 99 百分位线显示,99%的事务运行时间不到一秒钟。第 50 百分位线显示 50%的查询持续运行不到一秒。

总之,在一个 4x4 拼接机数据库上,在 100 个 TPC-C 用户和 8 个 TPC-H 用户的情况下,运行 10 分钟,我们看到完成了 191,789 个 TPC-C 事务和 14 个 TPC-H 查询,99%的查询的 SLA 都在 1.085 秒内运行,但由于测试初始化开销,只有一个 3.3 秒的初始峰值。

接下来,我们想了解如果我们将资源翻倍,这将如何扩展。我们建立了一个 8 OLTP x 8 OLAP 拼接机数据库,并对 100 个 TPC-C 用户和 8 个 TPC-H 用户重新运行了 10 分钟的相同测试:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更多计算资源这导致两种工作负载的吞吐量显著增长:

  • TPC-C 交易= 279,480 (+46%)
  • TPC-H 查询= 32 次(+128%)

SLA 也更好,99%的事务运行时间不到 0.79 秒。

TPC-H 的增长似乎好于预期,而 TPC-C 没有预期的那么多,因此我们进行了另一项测试,试图更好地理解这一点。我们的理论是 100 个 TPC-C 用户不会使拼接机 OLTP 工作线程饱和,因此我们将 TPC-C 上的并发数增加到 200,并再运行 10 分钟:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该测试的结果是:

  • TPC-C 交易= 330,728(与第一次相比增加了 72%)
  • TPC-H 查询= 24 次(与第一次相比增加了 71%)
  • SLA—99%的交易在 1.3 秒内完成

确认我们仍然可以通过请求更多事务来增加 8x8 的吞吐量。

结论

我们能够运行并发的 TPC-C 和 TPC-H 工作负载,同时保持稳定的事务响应时间。我们还通过将 OLTP 和 OLAP 工作人员增加一倍来测试增加的资源,并看到两种工作负载都有近乎线性的提高。然而,最终测试中 TPC-H 成绩的下降促使我们调查为什么会发生这种情况。

通过检查所有服务的资源消耗,我们意识到使用 CPU 请求的默认 Kubernetes 配置(相对于 CPU 限制)允许一个服务通过抓取分配给其他服务的未使用的 CPU 来消耗超过其分配量的 CPU。

可变资源分配可能是一件好事,也可能是一件坏事,这取决于你的需求。考虑到可变的工作负载,我们可能希望动态地将 OLTP 工作线程的资源用于 OLAP 工作,就像我们在第二个测试中看到的那样,或者当我们增加 OLTP 端的工作时,回收分配给 OLAP 工作的 CPU。另一方面,为了保证 OLTP SLAs,我们可能希望为 OLAP 工作人员尝试固定的 CPU 限制。关于可用配置、如何调整它们以及它们的影响的更多信息将在以后的博客文章中进行深入探讨。

要执行您自己的测试,可以从这里获得基准。数据库启动后,只需点击数据库快速启动页面上的“运行 HTAP 基准”链接。

如何开始分析新冠肺炎数据

原文:https://towardsdatascience.com/how-to-get-started-analyzing-covid-19-data-808822437c32?source=collection_archive---------18-----------------------

Kaggle 上的新冠肺炎公开研究数据集挑战

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

国家癌症研究所Unsplash 上拍摄的照片

本月早些时候,Kaggle 发布了一项新的数据集挑战:新冠肺炎开放研究数据集挑战。这一挑战呼吁人工智能专家开发文本处理工具,以帮助医疗专业人员找到高优先级问题的答案。

为此,卡格尔与 AI2 大学、CZI 大学、MSR 大学、乔治城大学、国家卫生研究院和白宫合作,收集了一个“超过 29,000 篇学术文章的数据集,其中包括超过 13,000 篇关于新冠肺炎、新型冠状病毒和相关冠状病毒的全文。”

我相信许多数据科学家正在寻找机会来帮助对抗新冠肺炎疫情,这是一个很好的起点。Kaggle 提供数据,甚至一系列任务供您处理。例如,一项任务是:

我们对新冠肺炎风险因素了解多少?我们从流行病学研究中学到了什么?

为了帮助其他人开始使用这个数据集,我想我会提供一个相当简单的方法来分析数据。需要注意的是,这种方法并不旨在对数据或任务进行全面的审查。相反,只是一个想法被走过,以帮助你有希望开始你的想法。

元数据

我想把精力集中在提供的CORD-19-research-challenge/2020–03–13/all _ sources _ metadata _ 2020–03–13 . CSV文件上。您可以使用以下代码将该文件读入 Pandas 数据框:

meta = pd.read_csv("/kaggle/input/CORD-19-research-challenge/2020-03-13/all_sources_metadata_2020-03-13.csv")

以下是元数据文件的前 5 行:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将专门研究抽象栏。该文件中有 29,500 行数据,其中 2,947 行缺少摘要(约 10%)。以下是关于摘要长度(字符数)的一些基本统计数据:

count     26553.000000
mean       1462.129176
std        1063.536406
min          17.000000
25%        1087.000000
50%        1438.000000
75%        1772.000000
max      122392.000000

抽象向量

我的想法很简单:

  1. 将摘要转换成向量
  2. 计算余弦相似度以找到与其他摘要相似的摘要

其目标是,如果医学研究人员发现一篇有价值的论文,他或她可以提取该论文的摘要,并快速找到其他相似的摘要。

为了计算我们的抽象向量,我们将利用空间。scispaCy 是一个“Python 包,包含用于处理生物医学科学临床文本的 spaCy 模型。”我决定使用 allenai 创建的这个包,因为它是专门为生物医学文本培训的,非常容易使用。我们可以使用以下代码计算所有摘要的向量:

nlp = spacy.load("en_core_sci_sm")
vector_dict = {}
for sha, abstract in tqdm(meta[["sha","abstract"]].values):
    if isinstance(abstract, str):
        vector_dict[sha] = nlp(abstract).vector

这段代码利用了一个预先训练的单词向量模型,该模型将抽象中的每个单词转换为向量表示,希望这是该单词的良好表示。一个好的表示应该在向量空间中接近其他相似的单词(在非常高的水平上)。然后,对所有的单词向量进行平均,以将摘要表示为单个向量。

我使用 sha 值作为查找键,这样我们可以很容易地将向量与论文联系起来。为了快速处理所有的摘要,我还使用了小版本的模型。在 Kaggle 内核上运行上述代码大约需要 20 分钟。

余弦相似性

既然我们已经将所有的抽象表示为向量,那么使用 sklearn 计算所有的成对余弦相似性就很容易了。余弦相似度是一种比较两个向量相似度的方法。

values = list(vector_dict.values())
cosine_sim_matrix = cosine_similarity(values, values)

我们的余弦相似性矩阵的每个值是两个摘要之间的相似性得分(由行表示的摘要和由列表示的摘要)。值越高,抽象就越相似(假设我们的向量是好的)。因此,我们只需要选择一行(抽象的)并按照具有最大值的索引对它进行排序(忽略它自己的索引,因为它总是与自己最相似)。代码如下:

n_sim_articles = 5
input_sha = "e3b40cc8e0e137c416b4a2273a4dca94ae8178cc"keys = list(vector_dict.keys())
sha_index = keys.index(input_sha)
sim_indexes = np.argsort(cosine_sim_matrix[sha_index])[::-1][1:n_sim_articles+1]
sim_shas = [keys[i] for i in sim_indexes]
meta_info = meta[meta.sha.isin(sim_shas)]

您只需要提供您想要的类似文章的数量和您的查询摘要的输入 sha 就可以获得结果。让我们把下面的例子抽象为一个查询:

【2019 年 12 月,湖北武汉报告有华南海鲜市场暴露史的不明原因肺炎病例。一种新的冠状病毒,新型冠状病毒,被确定是造成这种疾病的原因。人际传播得到证实,这种疾病(被世界卫生组织(世卫组织)命名为新冠肺炎)在全国和全世界迅速传播。截至 2020 年 2 月 18 日,确诊病例数已达到 75,199 例,其中 2009 例死亡。与严重急性呼吸综合征(SARS)和中东呼吸综合征(MERS)相比,新冠肺炎导致确诊病例中的病死率低得多(约 2.67%)。在从已发布的官方报告中收集的 45 例死亡病例的症状构成中,前四位是发烧、咳嗽、气短和胸闷/疼痛。死亡病例的主要共病包括高血压、糖尿病、冠心病、脑梗塞和慢性支气管炎。病毒的来源和这种疾病的发病机理仍未得到证实。还没有发现特定的治疗药物。中国政府已经启动了一级公共卫生响应,以防止疾病的传播。与此同时,加快研制疫苗和治疗药物也至关重要,这将使我们能够尽快击败新冠肺炎。

根据我们的算法,最相似的抽象应该是:

背景:直到 2008 年,在法属圭亚那从未报告过人类狂犬病。2008 年 5 月 28 日,法国国家狂犬病参考中心(巴黎巴斯德研究所)根据一名圭亚那人的皮肤活检和唾液样本的半巢式聚合酶链反应,确认了狂犬病诊断,这名圭亚那人从未出国旅行,在出现临床典型脑膜脑炎后死于卡宴。方法/主要发现:病毒的分子分型鉴定出一种狂犬病毒(狂犬病毒种),与拉丁美洲吸血蝙蝠(主要是圆齿蝙蝠)中传播的狂犬病毒密切相关。启动了一个多学科危机小组。其目标是实施一项流行病学调查和一项兽医调查,提供控制措施并建立一个交流计划。污染源尚未正式确定,但根据分离出的病毒类型,可能与蝙蝠咬伤有关。在确认 90 人暴露后,他们接种了狂犬病疫苗:42 人来自该病例的随行人员,48 名医护人员。为了应对这一突发事件和当地人口对疫苗接种的日益增长的需求,利用电视、报纸、广播等多种媒体建立了一个专门的宣传计划。结论/意义:这一事件发生在远离法国大陆的一个部门,强烈影响了当地人口、医护人员和当局,管理团队面临巨大压力。这一观察证实了在法属圭亚那感染狂犬病的风险是真实的,并对人口教育计划、控制措施、医疗诊断和暴露后预防产生了影响。

如果你看看前 5 个最相似的摘要,它似乎将查询文章与讨论狂犬病的文章联系起来。在我看来,这似乎不是一个很好的结果。也就是说,我不是医学研究者,所以我可能遗漏了一些东西。但是让我们假设第一遍是没有价值的。

后续步骤

我认为上述想法是合理的。我的猜测是,向量这个词并不特别适合这种研究。下一步,我会在提供的所有论文的文本中寻找训练词向量。这应该有助于向量更好地适应这一研究领域。

此外,还可以进行大量的文本处理,以潜在地改进流程。例如,删除停用词可能有助于减少某些摘要中的噪音。

LinkedIn 上的 Vinit Jain 也建议尝试一下 Biobert 或 BioSentvec,我认为这也是个好主意。尤其是以一种比平均单词向量更聪明的方式将摘要转换成向量的想法。

虽然我第一次尝试为新冠肺炎数据集提供价值时表现平平,但我希望本文实现了它的真正目标,即帮助您开始分析数据。

你可以在这里找到我的 Kaggle 内核和所有讨论过的代码。

这篇文章也可以在这里找到。

有兴趣了解有关 Python 数据分析和可视化的更多信息吗?查看我的课程

如何从零开始构建股票交易机器人

原文:https://towardsdatascience.com/how-to-get-started-building-a-stock-cryptocurrency-forex-trading-program-2abbf0a4729f?source=collection_archive---------4-----------------------

交易策略,资源,和以前做过的人的建议。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尼古拉斯·霍伊泽在 Unsplash 上拍摄的照片

想不出策略?不确定使用哪个 API 和包?不想多此一举?我从头开始建立了一个股票日交易程序( github repo ),并希望分享一些有用的资源以及一些关于如何开始的建议。我知道开始一个新的项目,尤其是在一个外国领域,是具有挑战性的,我希望这篇文章能帮助拉平学习曲线。退一步说,我也想讨论一下我对“好”项目的标准。你可以做很多项目,那么为什么要做这个呢?

免责声明: 这并不代表理财建议。您使用下面的算法、策略或想法进行的任何投资都是自担风险的。我对与本文包含的信息相关或由其引起的任何后果不承担任何责任。

大纲:

为什么我认为建立一个交易机器人是一个“好”项目:

1.整合感兴趣的技术

鉴于买卖股票/加密货币/外汇的复杂性几乎是无限的,引入新技术的空间很大。你是一名 数据科学家 并且想要分析埃隆马斯克的一些推文或者识别 SEC 文件中的关键词吗?一个有抱负的 云工程师 希望使用云在 EC2 实例上全天候运行您的脚本?一个 后端开发者 想给终端用户提供一个 API,从你的算法中获取何时买卖的信号?一个 ETL 或数据工程师 想要使用 Kafka、Spark、DynamoDB 等大数据工具,并构建一个管道来传输价格数据,并将其放入 NoSQL/SQL 数据库。一位 前端开发人员或财务分析师 对使用 DASH 或 React+Flask 向最终用户展示算法的性能感兴趣?你想加入一些机器学习吗?希望你能明白。

2.合作的

通过将您的程序分成感兴趣的领域,轻松地与他人协作。我想任何项目都可以是合作的,但是考虑到这种挑战的复杂性,人们可以选择他们的兴趣并简单地应对这些挑战。这个项目的总体目标很明确,即赚钱,这也很有帮助。有时很难合作,因为人们迷失在细节中,忘记了整体目标。无论你是建立一个数据管道,创建仪表板,还是建立一些机器学习模型,目标都是明确的。

3.成功的明确衡量标准:$$$

有时候很难衡量成功与否,但是对于这个项目来说,知道这个项目赚了多少钱或者赔了多少钱才是最终的指标。坦率地说,从学习的角度来看,这是一个双赢的局面。如果你赚了钱,想想怎么才能赚更多的钱或者少亏一些。如果你在亏钱,想一想你如何能赚更多的钱或损失更少。没错,没有区别。总是有改进的空间,所有的努力都是一样的。有时候对于其他项目,很难知道你的改变是否有益。成功可能依赖于用户的反馈,或者仅仅是观点的问题。相比之下,这个项目很棒,因为成功和失败都很明显。然而,重要的是要记住市场是无限复杂的。虽然衡量进步很容易,但这并不意味着取得进步很容易。

4.容易被招聘者/未来雇主/奶奶理解

有一个大家都能理解的项目就好。几乎每个人都投资股票市场。低买高卖的目标很容易理解。当雇主询问项目时,大多数人会漫无边际地谈论他们已经实施的一些技术,而忽略了招聘人员或招聘经理的细节。这并不是说这项技术不重要,而是这个项目的最终目标是让解释这项技术变得更容易。例如,“我想限制股票报价机的范围,所以我使用 K 均值聚类来聚类我所有成功的交易,并找到相似的股票”,而不是“我实现了 K 均值聚类”。即使你不知道 K-Means 聚类是什么,你也能明白它的用途。

5.潜在有利可图(但不太可能)

你可以通过构建一个成功的算法来赚钱。几个月前,当我第一次开始这个项目时,我确信建造一些有利可图的东西主要是运气和机会。我仍然基本上是这样认为的,但我相信创造一些有利可图的东西是可能的。我绝不会拿我输不起的钱去冒险,我强烈建议其他人也采取同样的心态。赚钱不应该是这个项目的目标,但这是一个不错的附带利益和令人向往的目标。

6.无限复杂

这与我之前关于轻松整合任何技术的观点一致。无限的复杂性意味着你永远不会完成。(我认为这是半杯水)。总会有新的策略、技术、指标和度量标准需要整合和测试。这是一个永无止境的游戏。随你怎么解释,但我觉得这很有趣,也很令人兴奋。

如何入门?

定义策略

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JESHOOTS.COM 在 Unsplash的照片

制定一个有效的策略。请注意,我没有说创建一个有利可图的策略。事实是你会重复。定义策略将有助于提供一些可以改进的框架。这是我创建的一个股票交易策略的例子:

我在我写的另一篇文章中解释了这个策略,这篇文章讲述了我的股票交易算法的最初表现。现在重复这个策略并提供更多的细节。一旦你觉得自己有了可以轻松实现的东西,就开始思考如何实现。这时,我觉得我可以开始实施:

注意:包括我希望在实现过程中使用的 API 调用。这可能比伪代码阶段当前需要的更具体。

你将如何实施你的战略?

什么 API、包和其他资源有助于或者有必要实现这个伪代码?这可能吗?这是我做了一些研究,发现有 Robinhood (不推荐) TD Ameritrade羊驼的股票 API 可以执行买卖单。对于新闻故事,我正在考虑使用 Python 模块 Beautiful Soup 和 Selenium 和 Scrapy 做一些网络抓取。我可以使用雅虎财经 API 来获取移动平均线和跟踪交易量。为了构建一些机器学习模型,我可能会使用 scikit-learn、pandas 和 numpy(我不建议一开始就过多关注机器学习)。我在 Jupyter 笔记本上写了我的初始程序,用 Github 作为我的回购。

现在,在这一点上,你可能会开始钻研新的技术和平台,如结合一些云或使用气流或 kubeflow,但我建议专注于尽快实施。如果您对整合其他技术感兴趣并且更有经验,您可以在整合技术之前,对您计划使用的技术进行概念验证(POCs)。如果您在一个小组中工作,有些人可能只关注做概念验证,看看什么最有效。

迭代:快速失败

简单地经历实现伪代码的过程会教会你很多东西。你开始明白设计中的瓶颈和改进在哪里。并且可能已经了解了有用的新 API、包或框架。我也推荐做一些纸上交易(模拟交易)来测试你的程序的表现。记住,没有什么比现场交易更好的了。当你进行实时交易时,有很多因素会影响你的程序的表现。阅读我之前的一篇文章,其中描述了我在构建算法时面临的一些挑战。

资源

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Fikri RasyidUnsplash 上拍摄

下面是一些帮助我开始的资源,可能对你也有帮助。同样,有些人可能会提供具体的建议,而其他人则为您提供一些领域知识和专业技能。

注意:我会不断更新下面有用的资源列表。

Github Repos

  1. 为 Quants(定量金融)精心策划的令人疯狂的库、包和资源列表
  2. 新闻 API
  3. 特朗普推特兑现
  4. 刮新闻文章

其他媒体文章

  1. 股市 API
  2. 股票市场策略(高级)
  3. 指标和更高水平
  4. 如何获取指标值(使用抓取从 Finviz)
  5. 使用指示器的例子
  6. 启发我的算法的刷单策略实现
  7. 财经网页抓取示例
  8. 构建比特币流媒体后端
  9. 流式股票数据
  10. 埃隆·马斯克发推特赚钱

网站:

  1. 点击一个报价器,查看专业交易者使用的所有指标和过滤器。这可能会启发您在自己的过滤算法中使用哪些指标。
  2. 市场观察:日内交易者的热门新闻来源。(收集这些故事并做一些情感分析可能会很有趣)。
  3. SEC 文件:如果你输入一个股票代码,你会看到该公司所有的官方文件。(我们正在考虑从这些文件中提取一些,为我们的股票交易算法提供信息)。
  4. Subreddit AlgoTrading :算法交易的 Subreddit。这里也有一些很棒的资源。这里有一个关于最好的 API 交易平台的讨论。交易算法 Python 介绍

油管(国外视频网站)

  1. 熊牛交易者:新手交易者培训视频
  2. Forrest Knight :构建日交易算法的资源
  3. 关于人工智能在外汇领域的有趣 TED 演讲

  1. 闪光男孩:大家之所以要对股市赚钱持怀疑态度。

播客:

这是一些描述高级策略的播客。(你也可以谷歌一下“日内交易播客”——有很多)。

  1. 交易欲望:采访日交易系统开发者
  2. 顶尖高手交易

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果你喜欢你所读的

子栈:

我最近创建了一个子栈来学习如何用 Python 编程和解决 LeetCode 问题。请点击这里查看:

  1. 我的子栈

注来自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

数据科学如何入门

原文:https://towardsdatascience.com/how-to-get-started-in-data-science-af865b3d5231?source=collection_archive---------30-----------------------

有这么多的资源,我应该从哪里开始呢?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由皮克斯拜的尼诺·卡雷拍摄

介绍

当开始学习数据科学时,可能会有些力不从心。你需要了解统计学、编程、机器学习……在这些领域中的每一个领域中,都有许多许多子领域可以主导一个人的注意力,一旦他们读完了关于一件事情的所有知识,他们可能不会觉得比开始时更深入。

在这篇文章的过程中,我将谈论一些入门的挑战,将数据科学视为一门学科的最佳方式,以及如何入门。

入门的挑战

资源的数量是巨大的

今天尝试进入数据科学的一个惊人之处是有大量的资源…也就是说,浏览所有这些资源可能有点令人不知所措。你应该从什么开始,你应该把你的时间和金钱花在什么上面,这些都是经典的问题,似乎没有一个有抱负的数据科学家有答案。

udemy、udacity 和其他学习网站上有无数的机器学习课程,其中许多课程从非常浅显的角度涵盖了机器学习…我看到,当个人使用这种类型的资源时,他们经常从一门课程跳到另一门课程,试图更深入,但却得到了许多冗余的材料。这并不是说这些资源不好,但当涉及到像这样的课程的时间安排时,人们需要方向。

有一些非常昂贵的付费项目,也可以很好地让人们在这个领域立足,这些项目在内容的管理和线性学习结构方面非常出色,人们需要成功,但总而言之,在数据科学领域起步可能不是绝对必要的。在这两种情况下,收集一些基础知识并熟悉这个领域可以帮助一个人更成功,也可以帮助他们真正验证自己的兴趣。

发生的另一件事是,一个人可能会学习一门 ML 课程,然后学习一门基本的 python 课程,然后跳到一门 ML 工程课程,等等。这导致了一种非常脱节的教育,在这种教育中,一个人正在学习的原则不一定是建立在彼此之上的。

冒名顶替综合症

数据科学中一个非常普遍的现象就是所谓的冒名顶替综合症。冒名顶替综合征是一种感觉,也许你不属于,或者不值得你拥有的头衔,因为有太多你不知道的。因为数据科学的范围如此之广,这使得数据科学家很难深入该领域的每个子学科。数据科学家通常被视为所有数据科学方面的专家,因此,盲点经常被凸显出来。事实是,在这个领域有太多的东西需要了解,你会很难学会所有的东西。克服冒名顶替综合症的关键是要很好地理解什么是真正属于数据科学领域的,什么是必要的,什么是值得拥有的。

昂贵的

从硕士课程、纳米学位、视频课程到时事通讯、教科书等等;这些资源可能很贵!虽然其中许多无疑有很大的内容,它可以构成许多障碍。补充关于冒名顶替综合征的说明,并很好地理解一个人真正需要什么,什么是优先考虑的;如果你是这个领域的新手,并开始学习深度学习,你可能会在感觉没有更接近你作为数据科学家的第一个角色时烧掉一大块改变。

数据科学到底是什么?

正如我所回避的,关键的第一步是真正掌握数据科学家的工作流程,以及不同的技能和技术是如何发挥作用的。

在下一节中,我们将对此进行分解。

数据收集

首先,也是最重要的,你需要能够获得数据。不管你希望用它做什么,拥有获得它的技能是关键的第一步。

如果您还不熟悉,请尝试一下 SQL。SQL 代表结构化查询语言。这都是关于从数据库中提取数据。就代码而言,这实际上非常简单,因为主要目的是向数据库请求数据。

假设你是 SaaS 一家 B2B 公司的数据分析师。他们将所有销售活动数据保存在一系列数据库表中。你的老板想知道他们应该关注哪些行业。作为第一步,你需要了解公司已经销售给哪些行业,以及他们在每个行业的表现如何。这可能是一个非常有价值的分析,第一步是能够编写一个 SQL 查询。

如果你刚刚开始;我几乎总是说先从 SQL 开始。我不会在这里分解 SQL 的细节,但这是思考数据、数据结构以及如何正确提取和使用数据的良好开端。

SQL 有多种风格,最终取决于您使用的 DBMS(数据库管理系统)。你可能会听说过 redshift、mysql、sql server、mariadb 等等……这里的语法变化通常很小,只需简单的谷歌搜索即可。不要觉得有必要马上熟悉每一种的独特风味…它们没有足够的不同以至于没有必要,尤其是在开始的时候。

有很棒的 SQL 课程。可汗学院有一个免费的 SQL 课程,这是一个很好的介绍。Codeacademy & datacamp 也有优秀的 SQL 课程,会给你开始收集数据所需的基础知识。

除了 SQL,还有许多其他地方可以获得数据。数据可以来自 csv、excel 文件,也可以直接来自网站、JSON 等。虽然熟悉是有帮助的,但我会称之为有好处的。在您作为数据科学家的早期,您需要知道您可以很好地编写 SQL 查询。

数据清理

数据清理就是让您的数据进入一种状态,在这种状态下,无论接下来进行什么样的分析,它都是可用的。

数据清理有很多方面;我们如何处理丢失的值,数据类型是否正确,是否需要对变量进行任何特定类型的重新编码,以及许多其他事情——在很大程度上要考虑后面的分析。

数据争论

数据争论是数据清理的相邻步骤。这也与让你的数据以正确的格式变得有用有关。

您可能有一系列需要合并成一个的数据集。因此,您可以使用所谓的连接或联合来组合所述数据集。还有一个考虑是让你的数据集更宽而不是更长,我不会在这里详细说明,但是在你的工具箱中有这些简单的操作将会有很大的帮助。

您通常可以使用 SQL 完成大多数数据争论需求,也就是说,R 或 Python 提供了许多额外的功能。

探索性数据分析

探索性数据分析或 EDA 代表对数据的熟悉。这包括查看数据集的样本、查看其数据类型、通过不同的图表选项评估不同变量组合之间的关系、使用汇总统计数据评估不同变量。

建模之前,参与 EDA 过程有助于理解不同变量之间的模式和关系,并有助于您最终进行的分析。

这就是数据可视化软件技能的用武之地。虽然您可以使用 R 或 Python 创建这些可视化,但有时让它们存在于 Tableau、Domo、PowerBI 等数据可视化平台中会很有帮助。

到目前为止,我认为你有资格成为一名数据分析师。也就是说,典型的数据科学家可能会在我们已经讨论过的任何领域引入更复杂的方法或途径。这并不是说你不会发现数据分析师在做超出这个范围的工作,但这只是我识别区别的典型地方。

统计分析和建模

一旦你对你的数据有了很好的理解,这就是你开始展示你的统计学肌肉的地方。这包括概率密度函数、t 检验、线性回归、逻辑回归、假设检验等等。

有许多需要熟悉的统计工具和方法,这是让你成为数据科学家的一个重要方面。数据科学作为一个领域主要源于统计学,但通常被视为更复杂的机器学习方法。

拥有扎实的统计学背景将使你成为一名数据科学家。

机器学习

机器学习或 ML 构成了许多更基本的统计学原理的抽象,否则你可能会用到这些原理。许多最有用的 ML 算法代表传统线性回归的不同包装,或者它可能只是构建各种线性回归模型,从输入到传递给它们的数据略有变化,最终达到理想的模型。

从神经网络到深度学习,一路都是如此。

当您第一次开始时,努力对支持更复杂算法的统计学和数学有一个基本的了解,这将有助于对您正在使用的东西有信心,而且还将帮助您更好地确定给定算法的适当用法。

ML 很容易显得势不可挡。当人们意识到人工智能是建立在传统的统计模型之上时,人工智能这个同义词通常会让人感到惊讶。

这里我的建议是先学基础。给自己足够的时间来掌握数据分析师路线,接触使用各种统计工具和分析,不要被 ML 的概念淹没,努力让自己接触广阔的机器学习算法,并寻求理解它们与其他任何算法的区别。

ML 工程

我想强调的最后一点是众所周知的 ML 工程。

首先,我应该澄清,这不是我明确解释为数据科学领域的东西。虽然许多数据科学家都具备这些技能,但作为一名数据科学家,你并不一定了解这个领域的所有知识。

事实上,机器学习工程师是一个非常常见的职位,一个人的全部工作都围绕着这个领域。ml 工程就是部署 ML 模型。这是从建立团队和个人可以与模型交互的 API,设置重新训练模型和重新运行预测的作业,存储这些模型并使它们可访问的一切。

结论

数据科学是一个令人兴奋的新领域,但往往会让人不知所措。从这个角度思考这个问题,将有助于您在从事数据科学教育时做出艰难的决定,即应该选择哪些资源和顺序。

数据科学保护伞

  • 数据收集
  • 数据清理
  • 数据争论
  • 探索性数据分析
  • 统计分析
  • 机器学习
  • 机器学习工程

以线性方式思考您的数据科学教育,并牢记这些特定技能,将有助于您在成为数据科学家的旅程中迈出下一步。

祝你好运!祝数据科学快乐!

如何开始 Kaggle 竞赛

原文:https://towardsdatascience.com/how-to-get-started-on-kaggle-competitions-68b91e3e803a?source=collection_archive---------23-----------------------

关于如何在 Kaggle 上构建第一个数据科学项目的分步指南

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Jonathan Chng 在 Unsplash 上的照片

如果你正在开始你的数据科学和机器学习之旅,你可能听说过全球最大的数据科学社区 Kaggle 。随着无数的课程、书籍和教程在网上讨论这个问题,感到不知从何开始是完全正常的。

虽然在开始学习一项技能时,没有一致同意的最佳方法,但从数据科学道路的起点开始使用 Kaggle 是一个可靠的建议。

这是一个学习和分享经验的绝佳场所,所有级别的数据科学家都可以从与其他用户的协作和互动中受益。更有经验的用户可以跟上新的趋势和技术,而初学者将找到一个很好的环境来开始该领域的工作。

Kaggle 有几个速成班帮助新手训练技能。有关于 python、熊猫、机器学习、深度学习的课程,仅举几例。随着你获得更多的自信,你可以参加比赛来测试你的技能。事实上,在几门课程之后,你会被鼓励加入你的第一场比赛。

在这篇文章中,我将用一种简单明了的方式向你展示如何构建你的第一个项目的一些技巧。我将参与房价竞赛,这是在 Kaggle 上开始的最好的动手项目之一。

1.了解数据

当你面对一个新的数据集时,第一步是花些时间去了解数据。在 Kaggle 比赛中,你会遇到类似下面的例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kaggle 竞赛登录页面

在竞赛页面上,您可以在概述上查看项目描述,并在数据选项卡上找到关于数据集的有用信息。在 Kaggle 竞赛中,通常在单独的文件中提供训练集和测试集。在同一个选项卡上,通常会有您将使用的功能的摘要和一些基本的统计数据。理解需要解决的问题和我们手头的数据集是至关重要的。

您可以使用 Kaggle 笔记本来执行您的项目,因为它们类似于 Jupyter 笔记本。

2.导入必要的库和数据集

2.1.图书馆

这个项目中使用的库如下。

2.2.数据集

下一步是将数据集读入 pandas DataFrame,并获得目标向量 y ,这将是列SalePrice,以及预测值 X ,这将是剩余的列。

为了获得数据的概述,让我们检查第一行和数据集的大小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据帧的第一个样本的样本

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检查 X 和 y 的大小

我们有 1460 行和 79 列。稍后,我们将检查这些列,以验证它们中的哪一个对模型有意义。

下一步,我们将把数据分成训练集和验证集。

3.培训和验证数据

将我们的数据分成一组用于训练模型,另一组用于验证结果,这一点至关重要。值得一提的是,我们不应该在这里使用测试数据。我们的测试集保持不变,直到我们对模型的性能感到满意。

我们要做的是将预测值 X 和目标向量 y 分成训练集和验证集。为此,我们将使用 scikit-learn 的train_test_split

4.分析和准备数据

现在,我们开始通过检查一些关于特性的信息来分析数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检查 X 信息

从上面的总结中,我们可以观察到一些列缺少值。让我们仔细看看。

4.1.缺少值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检查缺少的值

一些要素的大部分条目都有缺失值。检查竞赛页面,我们会发现关于每个特性值的更多详细信息,这将有助于我们处理缺失的数据。

例如,在PoolQCMiscFeatureAlleyFenceFireplaceQu列中,缺少的值意味着该房屋不符合该特定特征,因此,我们将用“NA”来填充缺少的值。以GarageBsmt开头的列中的所有空值分别与没有车库或地下室的房屋相关。我们将用“NA”或平均值填充这些值和剩余的空值,考虑要素是分类的还是数值的。

4.2.预处理分类变量

大多数机器学习模型只对数值变量有效。因此,如果我们在没有对分类变量进行预处理的情况下向模型输入分类变量,我们将会得到一个错误。

有几种方法可以处理分类值。这里,我们将使用 One-Hot Encoding ,它将创建新的列,指示原始数据中每个值的存在或不存在。

One-Hot 编码的一个问题是处理具有许多唯一类别的变量,因为它将为每个唯一类别创建一个新列。因此,该项目将只包括不超过 15 个唯一值的分类变量。

4.3.创建管道

管道是保持数据建模和预处理更有组织、更容易理解的好方法。创建一个管道,我们将处理丢失的值和前两步中涉及的预处理。

如上所述,数值缺失条目将用平均值填充,而缺失分类变量将用“NA”填充。此外,分类列也将使用一键编码进行预处理。

我们使用简单估算器来填充缺失值,而列转换器将帮助我们在单个转换器中应用数字和分类预处理程序。

5.定义模型

既然我们已经在管道中捆绑了我们的预处理器,我们可以定义一个模型。在这篇文章中,我们正在与 XGBoost 合作,这是最有效的机器学习算法之一,在许多 Kaggle 比赛中取得了很好的结果。作为评估指标,我们使用的是平均绝对误差

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

验证集的平均绝对误差

6.交叉验证

使用交叉验证可以产生更好的结果。交叉验证不是简单地使用训练集和测试集,而是在不同的数据子集上运行我们的模型,以获得模型质量的多种度量。

我们将使用默认设置中的交叉验证器 KFold 将训练数据分成 5 份。然后,每个折叠将被用作一次验证,而剩余的折叠将形成训练集。之后,交叉验证将评估指标。在这种情况下,我们使用平均绝对误差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交叉验证后的平均绝对误差

通过交叉验证,我们可以提高分数,减少误差。下一步,我们将尝试进一步改进模型,优化一些超参数。

7.超参数调谐

XGBoost 在默认设置下通常会产生很好的结果,但是它也有很多可以优化的超参数来改进模型。这里,我们将使用一个名为 GridSearchCV 的方法,它将搜索指定的参数值并返回最佳值。我们将再次利用管道和上面定义的交叉验证器 KFold

GridSearchCV 将对参数进行彻底搜索,这可能需要大量的计算能力,并需要大量的时间来完成。我们可以通过将参数n_jobs设置为-1来稍微加快进程,这意味着机器将使用任务上的所有处理器。

最佳参数值为:

  • n_estimators: 400
  • 最大深度:3
  • 最小 _ 子 _ 体重:0.0001
  • learning_rate: 0.1

8.生成测试预测

在调优了一些超参数之后,是时候再次检查建模过程以对测试集进行预测了。我们将根据 GridSearchCV 提供的优化值定义我们的最终模型。

9.提交您的结果

我们快到了!机器学习建模已经完成,但是我们仍然需要提交我们的结果来记录我们的分数。

这一步相当简单。我们需要创建一个包含预测的.csv文件。该文件由两列数据帧组成。在这种情况下,一列用于“Id ”,另一列用于目标特征的测试预测。

10.参加比赛

最后,我们只需要加入竞争。请根据 Kaggle 的说明,遵循以下步骤。

  • 首先进入竞赛页面,点击加入竞赛
  • 在你的 Kaggle 笔记本中,点击窗口右上角的蓝色保存版本按钮。
  • 将出现一个弹出窗口。选择选项保存并运行所有,然后点击蓝色的保存按钮。
  • 笔记本电脑运行时,左下角会出现一个新的弹出窗口。当它停止运行时,点击数字右边的保存版本按钮。您应该点击最新笔记本版本右侧的省略号(…) ,并选择在查看器中打开。这将使您进入同一页面的查看模式。
  • 现在,点击屏幕右侧的输出选项卡。然后,点击蓝色的提交按钮,将您的结果提交至排行榜。

提交后,您可以在排行榜上查看您的分数和排名。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

竞赛排行榜

结论

本文旨在提供指导,帮助数据科学初学者以简单的步骤构建他们在 Kaggle 上的第一个项目。通过这种简单的方法,我得到了 14,778.87 的分数,这个项目排在前 7%。

在进一步学习后,你可以回到过去的项目,并尝试使用你学到的新技能来提高他们的表现。为了改进这个项目,我们可以更仔细地调查和处理异常值,对缺失值应用不同的方法,或者进行一些特性工程。

我给初学者的建议是,一开始就保持简单。不要以“完美”的模式为目标,而是专注于完成项目,正确应用你的技能,并从你的错误中学习,了解你在哪里以及为什么把事情搞砸了。数据科学社区在不断扩张,有很多更有经验的人愿意在 Kaggle 或 Stack Overflow 这样的网站上提供帮助。试着从他们过去的错误中吸取教训!通过练习和训练,开始构建更精细的项目并在 Kaggle 的比赛中排名上升只是时间问题。

如何开始你的人工智能之旅

原文:https://towardsdatascience.com/how-to-get-started-on-your-ai-journey-4b340b0fc73?source=collection_archive---------54-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

弗拉德·巴加西安在 Unsplash 上拍摄的照片

现在有一千个理由让你至少了解一点人工智能。有些引用像“成功创造人工智能将是人类历史上最大的事件。不幸的是,这也可能是最后一次,除非我们学会如何规避风险。”由斯蒂芬·霍金,“我们的智慧是我们成为人类的原因,而人工智能是这种品质的延伸。”我想起了 Yann LeCun。但忘记所有这些,对我来说,学习人工智能最重要的原因是你对它感兴趣。

一个好的起点是理解人工智能是什么,它是如何起源的,以及它目前在哪里。你还应该考虑建立它与机器学习、深度学习、强化学习以及数据科学等常见术语的关系。还需要找出在该领域中使用的编程语言。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马库斯·斯皮斯克在 Unsplash 上拍摄的照片

遇到的常见困难

像生活中的大多数事情一样,学习人工智能有一些好处和困难。我遇到的一些困难包括

大量可用的资源和学习材料

寻找高效学习的最佳路线图和时间表

为初学者选择最好的项目,以及你的投资组合中哪些项目看起来不错

评估所需的数学知识

我花了很多时间寻找这些问题的解决方案。网上有很多关于最佳方法、学什么、应该学多长时间的想法和观点。然而,经历了这么多之后,我发现每个人都是不同的,对一个人有效的可能对你无效。

我的建议是找出适合你的方法,尝试你能接触到的东西。你可以从阅读一本关于人工智能的教科书开始,参加在线或物理课程,查看人工智能博客和网站,听人工智能和数据科学播客,参加人工智能训练营,并查看一些人工智能 YouTube 频道

你可以尝试其中的两种或更多种,给自己一个好主意,哪种学习路线最适合你。上面提到的所有要点也可以免费获得。最重要的是入门,借用耐克的广告语“做就好!”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由乔治·帕甘三世Unsplash 上拍摄

避免倦怠,应对冒名顶替综合症

在我看来,最好是一次做一件事,同时专注于完成你已经开始的事情。多任务处理不同的教科书或课程有它的好处,但对初学者来说是不可取的。最重要的是知道自己的极限,避免给自己太大压力。睡眠不足不会带来任何好处。

如果你来自非计算机科学或技术背景,你会发现自己有时像个骗子。以我为例,在石油行业工作了 16 个月后,我决定从石油工程(我的学士学位)转行到数据科学。从我开始学习 Python 的那一刻起,我就开始经历冒名顶替综合症。即使在我的 GitHub 上学习了 9 个月和 15 个以上的项目后,它仍然存在。

当我决定开始申请入门级职位和实习时,我感受到了这一点的全部重量。我一直觉得自己低于标准,永远不够好。即使是现在,我仍在处理这件事,尽管与我开始时相比,现在的规模已经变小了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

杰斐逊·桑托斯在 Unsplash 上拍摄的照片

帮助我应对冒名顶替综合症的是:

**1。**加入一个好的人工智能社区:他们可以帮助你成长,给你带来惊人的机会。

**2。**持续学习:当你完成一门课程或一本教科书时,不要害怕进入下一门课程,尝试新的东西。抱着终身学习的态度。

**3。**做很多副业:做副业是值得的;它们有助于巩固你所学的知识。他们也是伟大的信心建立者。

4。参加黑客马拉松:它们让你知道你的武器库中有什么,让你知道你还有多少需要学习,激励你变得更好。

**5。**参加人工智能会议和训练营 : 这些让我大量接触到了这个行业的最新发展水平,让我和其他初学者联系起来,让我感觉到自己真正的归属。

**6。**听 AI 和数据科学播客 : 数据怀疑论者偏导数来了我强烈推荐给初学者。我从他们身上学到了很多。

要获得的利益

学习人工智能的一些显著好处包括

让你更加了解当今世界发生的事情

帮助您快速找到现实世界的趋势

为您提供算法、推荐引擎如何工作的基本理解

让你明白数据(尤其是你的个人数据)的价值

将 21 世纪最强大的问题解决工具添加到您的武器库中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Haupes 公司Unsplash 上拍摄的照片

人工智能已经对我们今天的生活产生了巨大的影响。它存在于我们周围,在我们的家里、办公室、电话、电器、汽车里,在我们玩的游戏里,在我们访问的网站上。你不能忽视它。我祝你在人工智能的旅程中好运。干杯。

数据怎么入门?—第一部分

原文:https://towardsdatascience.com/how-to-get-started-with-any-kind-of-data-part-1-c1746c66bc2d?source=collection_archive---------42-----------------------

从数据开始

即使你以前没有做过分析。

我的数据科学之旅始于在德国最大的汽车制造商之一的高级分析部门的一份学生工作。我很天真,还在攻读硕士学位。

我对这份工作很兴奋,因为我目前的专业是数字化。我想知道它到底是如何工作的。我也学过编程,但不是 python。我的同事都非常聪明——博士、数学家和物理学家。他们对分析的理解水平远远超出了我仅仅通过读书所能获得的!

最初几天,各种各样的项目和任务、分析和项目让我不知所措。但是,你知道什么更令人困惑吗?像什么是分析这样的问题?为什么这么做?这么多数据的这些文件都是什么?结果中的这些数字说明了什么?一个分析项目看起来像什么?他们说在分析数据是什么意思?

势不可挡!

我花了几天时间理解分析和工作本身。我狼吞虎咽地阅读了各种教授 python、统计学、数据科学等的书籍和在线课程。渐渐地,我对这些课题有了理解,并在同一个系成功地完成了我的论文。

我在下面为你解释了数据分析的诀窍。希望你能以此为指导,即使你的成分随着应用而改变。

让任何项目成功的最重要的一步是有一个清晰的开端。无论你的项目有多大或多小,如果你没有所需形式的配料和合适的工具,即使是一个大师级厨师的食谱也不能保证最后是一顿美味的饭菜。

先说食材,再开始准备。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自 Pixabay 的图片由 Seksak Kerdkanno 提供

配料:

1。问题

你在谷歌中搜索你的查询后,有没有得到不相关的结果?那你会怎么做?重新措辞并提炼关键词,再次搜索。同样,在一开始就明确你分析的“为什么”有助于你更好地解释你的结果。

在获得所有需要的数据后,下一步是理解和定义问题陈述。这里需要解决业务案例的难点。你的目标必须与公司的商业战略相一致,这样分析才能对利益相关者证明是富有成效的。

考虑上面的商店位置示例。根据您的分析结果,您将获得分配给每个潜在位置的分数。如果你的管理策略是,只有当新地点在一个人口最少为 5000 的新城市产生超过 100,000 美元的利润时,才为项目融资。因此,您有明确的标准来根据您公司的愿景缩小分析结果的范围。

2。数据

对于任何一种数据分析,获取数据是毋庸置疑的。数据可以从各种相关来源获得。因此,它可能有不同的类型和格式。你的工作是根据它的类型切割和粉碎它,这样它就可以用在你的食谱上了。

在数据的表格表示中,每一列是一个数据字段,每一行是一条记录。每个记录可以用一个 ID 唯一地标记。

例如,为了预测下一个开设新店的地点,您可能必须使用
的年度销售数据、现有商店地点的销售数据、地点的人口密度、家庭总数、人口普查数据、土地面积。如果你的公司销售宠物产品,那么你需要有宠物的家庭数量。如果你的公司销售儿童产品,那么有 15 岁以下儿童的家庭数量。

最常见的输入文件类型有。csv(逗号分隔值文件)。xlsx (excel 表格文件)和。txt(文本文件)。Excel 文件在导入数据时会消耗更多内存。相反,CSV 文件速度更快,消耗的内存更少。

无论文件类型如何,您都必须清理每个文件,然后将所有文件混合到一个文件中进行分析。你可以在这里查看更多信息:

[## 什么是数据准备?

数据准备是收集、清理和整合数据到一个文件或数据表中的过程,主要是…

www.datawatch.com](https://www.datawatch.com/what-is-data-preparation/)

3。软件

用于分析的软件可以根据您想要的结果类型进行选择;对于那些不喜欢编程的人来说,可以简单地使用任何模块化分析软件。在这样的工具中,你只需拖放所需的功能,你就可以很好地处理结构精美的结果和演示。

流行的“无代码”分析软件包括:

对于这些,你只需要去他们的网站,创建一个帐户并下载(有些可能只允许有限时间的试用版本)

之后,只需上传您的数据文件进行分析和运行。当你读完这篇文章的时候,你已经有结果了。

统计计算的流行 ide:

[## Python 数据分析入门

这篇文章最初发表在 blog.zakjost.com 上

towardsdatascience.com](/getting-started-with-python-for-data-analysis-64d6f6c256b2)

您还可以直接在线启动您的数据分析项目,无需下载或安装任何东西!

准备:

不同类型的数据有不同的格式。通常来自不同来源的数据需要在下游流程中进行清理、丰富和适当整合,以形成一种可用的形式。通常使用的技术术语是数据清理、特征选择、数据转换、特征工程和降维。

数据清理和准备是整个分析过程中最耗时的任务。

对任何文件要做的第一件事是检查给定的路径是否正确,以及它是否正确无误地打开。将数据加载到您选择的软件中。现在,看看里面。

查看数据的一个例子是 Alteryx 中的字段汇总工具,它提供了所有字段的数据汇总。摘要如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数字域:图片来自 Alteryx 软件的 Priyanka Mane

使用统计工具分析和解释数据(即发现相关性、趋势、异常值等)。).但是,数据可能有缺失值、键入错误或不同的日期格式;为了获得更好的结果,必须首先确定并解决这个问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

字符串字段:图片来自 Alteryx 软件的 Priyanka Mane

变数

分类变量是可以取属于固定数量类别的值或标签的变量。性别是一个名义分类变量,有两个类别——男性和女性。这些类别没有内在的顺序。序数变量有明确的顺序。温度是一个序数分类变量,有三个有序类别(低、中、高)。为了便于分析,这些变量使用不同的技术进行编码。

数量变量代表测量和计数。它们有两种类型:连续型(可以取区间内的任何值)和离散型(可数)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据类型:数值型和分类型

下面的链接概述了对变量进行编码的方法。

[## 什么是分类变量,如何编码?

初学者分类变量编码指南。

towardsdatascience.com](/what-are-categorical-variables-and-how-to-encode-them-6e77ddc263b3)

在准备数据时,您可能必须应对以下挑战:

  • 空值/缺失数据

空值在数据中显示为 NaN 或“非数字”值。NaN 属性与数字相同,但不是合法的数字。在 python 中,使用 isNaN()全局函数检查值是否为 NaN。在 Alteryx 软件中,运行代码后,值显示为[Null]。可以使用公式工具中的 isNull 对它们进行筛选。此外,汇总工具还可以帮助您计算空值。

当数据集中没有为某个观测值存储数据值时,在统计数据中称为缺失数据或缺失值。 Rubin 阐述了缺失数据发生的三种机制:随机缺失(MAR)、完全随机缺失(MCAR)和非随机缺失(MNAR)。

将替代值分配给缺失值的过程称为插补。如果数据的一小部分(高达 5%)缺失,那么可以使用平均值、中值或众数等方法对这些值进行估算。它使用同一列中的其他值进行插补。原则性方法,如多重插补(MI)方法、全信息最大似然(FIML)方法和期望最大化(EM)方法。

如果超过 10%的数据丢失,建议删除字段,因为这可能会增加结果的统计偏差。

在 Alteryx 中,字段汇总工具显示每个数据字段缺失记录的百分比。

请点击此链接了解在 excel 中处理缺失数据的步骤和公式。

[## 处理缺失数据

收集数据时面临的另一个问题是一些数据可能会丢失。例如,在与…进行调查时

www.real-statistics.com](http://www.real-statistics.com/descriptive-statistics/missing-data/)

  • 异构数据

由于格式不统一,年龄、货币、日期等数字字段很有可能出错。例如,年龄可以写成 30 岁或 30.2 岁或简单地写成 30 岁。货币的千位分隔符和小数点分隔符因国家和地区而异。确保这些列的格式一致。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由米莎·塞格皮克斯拜拍摄

  • 离群值

一旦数据集被清理,就该对其运行另一个预处理机制了。异常值是数据集中可能导致计算中出现统计错误的异常值。它们异常远离数据集中的其他值,可能会严重扭曲您的输出值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

回归结果中的异常值:图片来自 Jim 的统计

当您需要立即识别数据中的异常值时,散点图非常有用。使用图表简单地显示每个预测变量和目标变量之间的关系。

以下是一些链接,可以帮助您了解处理异常值的术语和方法:

[## 7.1.6.数据中的异常值是什么?

7.产品和工艺比较。异常值的定义异常值是一个存在于…

www.itl.nist.gov](https://www.itl.nist.gov/div898/handbook/prc/section1/prc16.htm) [## 四分位数、盒子和胡须

对于统计中的许多计算,假设您的数据点(即列表中的数字)是…

www.purplemath.com](https://www.purplemath.com/modules/boxwhisk.htm)

以上是第 1 部分的全部内容。查看第 2 部分,了解数据科学项目的分析和演示阶段。敬请期待!

步入正轨的最好方法是做好准备,远离你的毒瘾。阅读以下内容,了解更多信息。

[## 你对任何东西的上瘾——解释!

以及如何控制它!激励性的谈话没有帮助。引发你内心的化学反应。

medium.com](https://medium.com/illumination/why-am-i-not-motivated-enough-for-my-success-f2a0fb5735a5) [## 毫无准备是没有借口的

有太多事情要做的时候该做什么。事半功倍。

medium.com](https://medium.com/age-of-awareness/there-is-no-excuse-for-being-unprepared-7725634d4f30)

普里扬卡·马内|学习者|数字内容创作者

insta gram:Wanderess _ Priyanka|LinkedIn:Priyanka Mane

数据怎么入门?—第二部分

原文:https://towardsdatascience.com/how-to-get-started-with-any-kind-of-data-part-2-c4ccdbcc8b13?source=collection_archive---------57-----------------------

从数据开始

业余爱好者循序渐进指南

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

麦克斯韦·尼尔森在 T2 的照片

数据科学是一门艺术。你需要实践来完善它。2017 年我第一次和它联系在一起。你可以在这里阅读我的故事到这篇文章的第一部分。在本文中,我继续了数据项目的下一阶段——通过构建模型进行分析,并使用图形进行展示。

分析:

选择正确的数据字段可以显示正确的结果。

优化变量选择

方法 1:

为您的分析选择最佳变量会对您的结果产生巨大影响。使用回归模型时,可以通过查看模型统计结果中 p 值列的星号来衡量变量的显著性。

在下面的线性回归结果快照中,查看右边的最后一列:

每个预测变量都是重要的,因为它的 p 值<= 0.05. A low p-value suggests that the slope is not zero, which in turn suggests that changes in the predictor variable are associated with changes in the response variable. The multiple R-squared and the adjusted R-squared values must be close to 1. Low p-values and high R-squared value suggests that the model is highly predictive.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Selecting predictor variables from Linear Regression results using P-Value: Image by Priyanka Mane 来自 Alteryx 软件

方法二:

使用交叉表!列联表或交叉表显示了某组数据出现的频率变化。您可以获得更好的可读性。它有助于同时对各种领域进行相互比较,以明确决定最有效的领域。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自维基百科的交叉表图片

如果你熟悉 Python 中的 Pandas,下面的链接很有帮助。

[## 熊猫交叉表解释

Pandas 提供了几个分组和汇总数据的选项,但这种多样性的选项可能是一种祝福和一个…

pbpython.com](https://pbpython.com/pandas-crosstab.html)

分小块分析

如果数据集非常大,将它分成更小的块。使用这些组块进行训练和验证。比较您的模型对这些块的整体准确性,以了解模型对不同集合的表现。

构建和运行“模型”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过比较不同模型的准确性进行分析:图片由 Alteryx 软件的普里扬卡·马内提供

数据清理结束后,将清理后的数据存储在一个单独的文件中,以供分析使用。这样你的模型会看起来很瘦。它将运行得更快,因为预处理已经完成了。

将清理后的数据分成测试和验证样本。将模型应用于这两个数据样本。这一步有助于您了解您对新数据的预测有多准确。也不要过度合身。这里,您必须将定型数据集结果与验证数据集结果进行比较。总体精度是一个很好的比较参数。为最终结果选择精确度最高的模型。

在上述分析的模型比较结果中,查看“准确性”列。FM_Credit 是我给森林模型起的名字。它被认为是其他模型中精度最高的,所以我选择它进行最终分析。AUC(曲线下面积)也必须很高。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Alteryx 软件中的模型比较:图片由 Alteryx 软件中的普里扬卡·马内提供

演示:

人类大脑处理图像的速度比处理文本快 60,000 倍,传输到大脑的 90%的信息是视觉的。

你的可视化越好,你的工作就越有影响力!

数据可视化

以有意义的方式呈现这些数据:图表、可视化、图表、表格等。数据分析师可以向项目经理、部门主管和高级业务主管报告他们的发现,以帮助他们做出决策并发现模式和趋势。本文第 1 部分中提到的 Tableau 软件是迄今为止最好的、最用户友好的说服性可视化软件。

Mathplotlib 非常有名,但不一定是最容易使用的。它的优点是“可以从 python 的舒适中使用”。Rand python 的其他一些鲜为人知但极具影响力的选项是plot . ly——它可以将 java 嵌入到网页中,也可以离线工作, bokehggplot

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来自 xkcd 的网络漫画

作为初学者

  • 数据分析师的大部分工作时间都花在为管理层理解和解释业务案例上。因此,合理的做法是尽可能多地阅读数据科学案例。你将能够理解不同的场景和权衡。与此同时,你将获得根据问题进行结构化思考的专业知识。
  • 如果你不知道从哪里开始获取数据,只需在 Kaggle 上寻找数据科学项目和竞赛。
  • 将这些项目上传到 GitHub 上,从其他用户那里获得真知灼见。
  • Stackoverflow 也是一个从别人的问题和错误中学习的好地方。

如果您觉得这个方法有用,或者您想要我在本系列文章中使用的任何项目的详细的一步一步的解释,请告诉我。

[## 你对任何东西的上瘾——解释!

以及如何控制它!激励性的谈话没有帮助。引发你内心的化学反应。

medium.com](https://medium.com/illumination/why-am-i-not-motivated-enough-for-my-success-f2a0fb5735a5) [## 毫无准备是没有借口的

有太多事情要做的时候该做什么。事半功倍。

medium.com](https://medium.com/age-of-awareness/there-is-no-excuse-for-being-unprepared-7725634d4f30)

普里扬卡·马内|学习者|数字内容创作者

insta gram:Wanderess _ Priyanka| LinkedIn:Priyanka Mane

如何开始使用 Python 和 R 进行数据分析和数据科学——一种实用的方法

原文:https://towardsdatascience.com/how-to-get-started-with-data-analysis-and-data-science-in-python-and-r-a-pragmatic-approach-a6ff498dec61?source=collection_archive---------41-----------------------

没有编码背景的数据分析师学习 Python 或 R 的实用方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当使用一个软件进行数据分析时,人们经常会感到沮丧,这个软件并不特别适合某个特定的任务,但是仍然继续使用它,因为他们熟悉这个软件。例如,使用 MS Excel 处理主要由文本组成的数据。使用 Python 或 R 会使工作变得更容易,让人们工作得更有效率。然而,人们经常回避学习 Python 或 R,因为他们认为编码很难。一个常见的误解是,要成为一名优秀的程序员,你需要擅长数学(查看这个了解更多的误解)。如果你是这些人中的一员,让我向你保证这不是真的。在这篇文章中,我想为您提供一套工具,帮助您入门 Python 或 r 中的数据分析和数据科学,我已经在 2019 年在伦敦大学学院教授了一门初学者数据科学夏季课程,并将在这里分享我所有的技巧和资源(免费)。

如何开始

就像你学习任何新东西一样,你需要从基础开始。在这种情况下,学习基本语法。我建议至少花一个周末的时间,通过做一些简单的算术,熟悉简单的数据结构(列表、集合、字典等),编写一些函数、if-else 语句和 for-loops,来对你想学的语言有所了解。有足够的资源让你开始。建议你去看看 Coursera、Udemy、edX、Udacity 这样的网站,找一门适合你学习风格的课程(我个人比较喜欢 IBM 关于 Coursera 的课程大纲“ Python for Data Science 和 AI ”)。Hackerrank 和 Leetcode 也是练习编码技能的好网站,不需要你下载任何东西到你的电脑上——你可以在浏览器中练习(尽管我更喜欢离线练习——下一节会有更多的介绍)。查看 Hackerrank 的 Python 挑战Datacamp 对 R 的介绍。

下载 Anaconda(或使用 Google Colab)

对于 Python,以及 R,建议大家下载 Anaconda 。Anaconda 是用于科学计算的 Python 和 R 的免费发行版,旨在简化包管理(如果您不知道什么是包,不要担心,稍后会有更多介绍)。Anaconda 附带了一个名为 Jupyter Notebook 的工具,这是一个开源的 web 应用程序,允许您创建和共享包含实时代码、等式、可视化和叙述性文本的文档。这是我最喜欢的数据分析工具。如果你想体验一下,可以去看看谷歌实验室,这是一个免费的 Jupyter 笔记本环境,不需要任何设置,完全在云中运行。

Google,百度或者 Yandex it!

在过去的几年里,我无数次告诉我的学生*“你不是第一个遇到这个问题的人——以前已经有人问过这个问题了——谷歌一下!”*。如果你得到一个你不理解的错误信息,或者你不知道如何在 python 中将一个数字四舍五入到小数点后两位——stack overflow 是你的朋友!我可以向你保证,不管是什么——已经有人在 stackoverflow 上回答了你的问题。所以,当你陷入困境时,不要害怕谷歌搜索。程序员一直在谷歌上搜索。(正如我告诉我的中国暑期学校学生的那样——谷歌在你们国家被禁并不是不在网上寻找答案的借口)

然而,我在教授暑期学校课程时注意到,许多人不知道如何表述他们的问题,因此很难在互联网上找到答案。知道如何把你的问题用语言表达出来,这本身就是一种技能,需要练习。以上面的舍入例子为例——谷歌搜索*“如何舍入数字”不会给你想要的答案(试试看)。当谷歌搜索“如何舍入数字 python”时,上面的结果会告诉你 Python 内置的 round()函数,这将要求你通读更多不必要的文本。只有当你谷歌“如何四舍五入数字 python 小数点后两位”*你会在 stackoverflow 上得到一个建议问题列表。这可能听起来很明显,但在处理以前没有处理过的问题时可能会很困难。

经历一个众所周知的问题

好了,你知道了基础知识,你已经熟悉了 Jupyter 笔记本、Rstudio、Google Colab 或任何你想使用的其他工具——现在该怎么办?现在,您要寻找一个著名的数据集,它易于理解,但具有足够的挑战性,可以用来做一些有趣的事情。一步一步地浏览教程,试着理解每一行代码和它在做什么。在我的暑期学校课程中,我使用了泰坦尼克号数据集。这是一个很棒的数据集,您可以在其中应用许多数据探索和可视化技术,以及不同的分类算法。您可以将相同的原则用于您自己的数据。这里有两个分步教程,介绍如何分析泰坦尼克号数据集,以及如何训练一个分类器来预测某人在泰坦尼克号上是死是活。

R(我给学生们的泰坦尼克号笔记本,作为他们个人项目报告应该是什么样子的例子)

Python

注意:R 示例涵盖了更多的内容,所以我鼓励你去看一看,即使你想开始使用 Python。

在阅读这样的教程时,你会遇到你可能想要研究的包/库(如 pandas 或 scikit-learn in Python)和机器学习算法,如逻辑回归、决策树、支持向量机或神经网络。这取决于您想要深入研究这些主题中的每一个,并且超出了本文的范围。我只想为您提供入门的初始工具。

查找与您的数据集相似的数据集

如果你想在工作中应用你的新技能,或者对特定类型的数据感兴趣,你的下一步应该是浏览一个著名的数据集,该数据集与你想要分析的数据类型相似(分析图像、声音、文本或数字数据都需要不同的方法)。在我的博士学位中,我主要分析文本数据——这一过程被称为自然语言处理(NLP)。当然,分析像电影评论这样的文本数据与分析泰坦尼克号数据集中给出的数据类型是完全不同的。如果您对如何开始使用 Python 进行文本分析感兴趣,请查看我的另一篇文章。

以下是一些著名数据集的例子(你会在互联网上找到许多关于如何分析和训练机器学习模型的资源):

数值 : 房价预测, 花型分类

图片 : 手写数字分类,服装物品分类

文本 : 文本分类(火腿/垃圾)情感分析(影评)

声音 : 城市声音分类人声分类

注意:你可以使用所有的分类数据集来训练像 k-means 这样的无监督学习算法,这超出了本文的范围。

点击这里阅读一篇中型文章,其中有一个更长的数据集列表

我希望这篇文章对您有所帮助,并为您提供一些关于如何开始使用 Python 或 r 进行数据分析、数据科学和机器学习的线索。如果您有任何问题或希望我写一篇类似于*“机器学习简介”*的文章,请告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值