TowardsDataScience 博客中文翻译 2020(七百八十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

设置一个独立的 HBase 本地实例,并使用 Python Happybase 连接到它

原文:https://towardsdatascience.com/setting-up-a-standalone-hbase-local-instance-and-connect-to-it-with-python-happybase-9751c9fe6941?source=collection_archive---------24-----------------------

最近,在我作为数据科学顾问开始的冒险中,我参与了一个项目,我们从中获取数据的数据库是著名的 Apache HBase。

HBase 是一个分布式的 Hadoop 非关系数据库,在处理海量数据方面非常强大。

在 HBase 数据模型中,行由行键标识,行键或多或少相当于关系主键,它们按行键排序。

列被分组到所谓的列族中,列族是列的物理和逻辑分组,一个族中的列与另一个族中的列分开存储,以便只能对您需要的数据执行查询。

你可以在这里阅读更多关于 HBase 的内容。

我决定安装 HBase 本地实例的原因是,我必须带着无尽的好奇心生活,我喜欢尝试。

步骤 1:设置 Linux 虚拟机

我做的第一件事是用 Alpine Linux 创建一个 Linux 虚拟机,挂载在 VMWare 上。虚拟机运行后,我通过键入以下命令登录安装程序:

localhost login: root
setup-alpine

我按照 shell 指令操作,最后,我重启了系统。我需要 Java 支持才能让 HBase 工作,所以我安装了 openjdk8:

apk add openjdk8-jre

之后,为了方便起见,我在 /home 中创建了几个文件夹:

cd home
mkdir downloads
mkdir andrea
cd downloads

现在我在 /home/downloads 中,我可以下载 HBase 压缩文件夹,解压缩并更改目录:

wget [https://www.apache.org/dyn/closer.lua/hbase/2.2.3/hbase-2.2.3-bin.tar.gz](https://www.apache.org/dyn/closer.lua/hbase/2.2.3/hbase-2.2.3-bin.tar.gz)tar xzvf hbase-2.2.3-bin.tar.gzcd hbase-2.2.3

这个文件夹里面有两个重要的文件夹: binconf

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

我走进了 conf :

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

然后将h base _ env . sh内的 JAVA_HOME 环境变量修改为*/usr/lib/JVM/open JDK 8-JRE*(文件夹可能不同):

export JAVA_HOME=/usr/lib/jvm/openjdk8-jre

此外,对于独立的 hbase,我用示例 1 中的这里的报告了文件 hbase-site.xml 的内容。

然后,我向上导航一个文件夹,回到 Hbase 主文件夹,转到 bin 目录:

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

要检查 HBase 是否正常工作:

./start-hbase.sh./hbase shell

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

瞧啊!

要查看表格,请键入 list:

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

当然,这里没有表,但是我们可以按照以下约定创建一个表:

create 'table_name','columnFamily1',...,'columnFamilyN'

在外壳中:

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

现在让我们添加两行:

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

要检索该表,让我们运行一次扫描:

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

现在,表就在那里,我们可以使用 Python 包 Happybase 连接到它,这个包是使用 Python Thrift 构建的。

首先,停止 HBase 实例,安装 Python 3Happybase 包:

apk add python3pip install happybase

然后,启动节俭服务器:

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

和 HBase:

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

现在,我们打开一个交互式 Python 会话,并连接到 HBase,以查看使用 Happybase APIs 时一切正常:

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

感谢您的阅读,有任何问题请联系我!

在本地机器上设置 Amazon SageMaker 环境

原文:https://towardsdatascience.com/setting-up-amazon-sagemaker-environment-on-your-local-machine-7329e0178adc?source=collection_archive---------10-----------------------

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

埃里克·马塞利诺在 Unsplash 上的照片

亚马逊 SageMaker 不仅仅是托管的 Jupyter 笔记本电脑,它是一种完全托管的服务,使您能够构建、训练、优化和部署机器学习模型。一个常见的误解是,为了使用这些服务,您需要一个 SageMaker Notebook 实例或 SageMaker (Studio)笔记本,特别是当您开始使用 SageMaker 时。事实上,您可以直接从您的本地机器或者甚至从您喜欢的 IDE 中启动所有这些服务。

在我们继续之前,让我们考虑一下如何与 Amazon SageMaker 服务交互。您有两个 API

SageMaker Python SDK —这是 Python 中的一个高级 API,它抽象了构建、训练和部署机器学习模型的代码。具体来说,它提供了第一类或内置算法的估计器以及支持的框架,如 TensorFlow、MXNET 等。在大多数情况下,您将使用它来与您的交互式机器学习任务进行交互。

AWS SDK —这是一个低级 API,用于与所有受支持的 AWS 服务进行交互,并不特定于 SageMaker。AWS SDK 可用于大多数流行的编程语言,如 Java、Javascript、Python (boto)等。在大多数情况下,您将使用这个服务级 API 来为自动化创建资源,或者与 SageMaker Python SDK 不支持的其他 AWS 服务进行交互。

为什么是本地环境

成本可能是第一个出现的问题,但它也是使用自己的 IDE 的灵活性,以及离线工作的能力,并在您准备好的时候启动 AWS 云上的工作。

本地环境如何工作

您像平常一样编写代码来构建您的模型,但不是 SageMake Notebook 实例(或 SageMaker Studio Notebook ),而是在运行 Jupyter 的本地机器上或从您的 IDE 中完成。当您准备好了,就可以开始在 AWS 上进行 SageMaker 实例的培训了。一旦训练完成,模型就存储在 AWS 中。然后,您可以从本地机器开始部署或运行批处理转换作业。

使用 conda 的环境设置

建议您将其设置为 Python 虚拟环境。在我们的例子中,我们使用conda来管理我们的虚拟环境,但是您也可以使用virtualenv。亚马逊 SageMaker 也使用conda来管理环境和包。假设你已经有了conda的设置,如果没有,这里头

创建新的 conda 环境

conda create -n sagemaker python=3

激活并验证环境

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

作者图片

安装标准数据科学包。

您可以使用condapip来安装软件包。我们会坚持conda

conda install -y pandas numpy matplotlib

安装 AWS 软件包

安装 AWS SDK for Python (boto),awscli 和 SageMaker Python SDK。SageMaker Python SDK 不作为conda包提供,所以我们在这里将使用pip

pip install boto3 awscli sagemaker

如果您是第一次使用awscli,您必须对其进行配置。关于如何配置awscli请参见这里的

默认情况下,将安装 SageMaker Python SDK 的版本 2。请务必检查 SDK 版本 2 中的更改,特别是这里的重大更改。

安装 Jupyter 并创建一个内核

conda install -c conda-forge jupyterlab
python -m ipykernel install --user --name sagemaker

验证环境并检查版本

通过发出一个jupyter lab来启动 Jupyter,并选择上面创建的 sagemaker 内核

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

作者图片

接下来验证笔记本中的版本,以确保一切如预期。

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

作者图片

建造和训练

现在,您可以开始在本地构建您的模型,并在准备就绪后开始 AWS 培训

进口包装

导入必要的包并指定角色。这里的关键区别是直接指定角色的arn而不是get_execution_role()。因为您是使用您的 AWS 凭证从您的本地机器运行它,而不是使用一个附加了角色的笔记本实例,所以 get_execution_role()将不起作用。

创建评估者

像平常一样创建估计器并设置超参数。在下面的例子中,我们使用内置的图像分类算法训练一个图像分类器。您还可以指定 SageMaker 实例的类型以及希望用于训练的实例数量

培训渠道

指定培训渠道,同样,与您在笔记本实例上的操作相比,这里没有任何变化

开始培训工作

在 SageMaker 上启动培训作业,调用 fit 方法,该方法启动 AWS 上 SageMaker 实例上的培训作业

classifier.fit(inputs=data_channels, logs=True)

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

作者图片

您可以使用[list-training-jobs](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-training-jobs.html)来检查培训工作的状态

就是这样。在这里,我们看到了如何在本地设置 SageMaker 环境,并使用 Jupyter 在本地机器上构建机器学习模型。除了使用 Jupyter,您还可以从您的 IDE 中做同样的事情。

快乐训练!

在 AWS 上设置 Jupyter

原文:https://towardsdatascience.com/setting-up-jupyter-on-aws-6b3018dff41f?source=collection_archive---------21-----------------------

一个可脚本化的命令行列表,用于在 AWS 中安全、经济高效地部署 Jupyter,并增加了练习

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

图片来源:commons.wikimedia.orgaws.amazon.com

在我之前的帖子中,我给出了在 Google Cloud 上设置 Jupyter 的相同说明——如果你更喜欢 Google Cloud,可以去看看那篇文章。

AWS 是三巨头之一(猜猜,其他是谁?)强大的当代云环境,为数据科学家和数据工程师提供了大量很酷的服务和工具。作为一名数据科学家,当您在本地笔记本电脑上运行分析项目时,您经常会面临技术资源方面的挑战,比如下载大型数据集的网络速度、磁盘大小限制、CPU 能力限制或内存限制。在当代的云环境中,对于这些障碍,您基本上都有简单的解决方案。您的网络连接速度很快。你总是可以用小的、精益的和吝啬的资源开始任何任务。每当你面临磁盘存储问题时,你只需点击几下鼠标,就可以租用一个更大的磁盘。或者你可以将数据集加载到 S3,然后通过 Amazon Athena 查询。或者使用一些其他合适的存储服务来进行成本有效的处理。CPU 能力太小?不用担心,将您的实例类型更改为具有更多 CPU 的类型(当您不再需要它时,可以立即缩减)。内存不足?几次点击之后,你就有了更多的内存,同样,如果你不再需要它,你可以把它拿回来。对于分布式计算来说,任何类型的集群形成通常也只需点击几下鼠标,这时您只需知道要做什么:启动集群以执行更繁重的计算任务,将结果保存在集群外部的某个存储服务中,并关闭集群以防止其闲置(并产生不必要的成本)。

如果你有使用 Jupyter Notebook 的经验,并且对类似 Debian 的环境感到舒适,那么你可能会发现下面的说明很有帮助。

安装并设置 AWS CLI v2(如果尚未安装)

如果您还没有设置 AWS 命令行界面(CLI ),请进行设置。安装 CLI 并为其设置访问密钥,使其能够正常工作。其余说明假设您已经设置了 CLI 和访问密钥。

说明如下:

1.安装 CLI

2.设置访问键

从这一点开始,一切都可以从本地计算机的命令行 shell 界面进行。对我来说,下面提供的说明既适用于 Windows 上的 Git Bash,也适用于 Debian Linux。

创建一个密钥对(如果还没有)

3.根据需要调整密钥名、区域和输出文件名(区域必须与您计划的 Jupyter VM 位置相匹配,并且需要 chmod 400,否则 Debian ssh 客户端会阻止它的使用):

aws ec2 create-key-pair \
        --key-name my-jupyter-kp \
        --region eu-north-1 \
        --query 'KeyMaterial' \
        --output text \
    > my_jupyter_private_key.pemchmod 400 my_jupyter_private_key.pem

启动并设置合适的虚拟机

3.创建并运行虚拟机。我在这里使用t3.micro作为实例类型,因为在编写这些指令时,t3.micro是符合自由层条件的(您可以根据自己的使用需求随意切换,但要注意成本):

IMAGE_ID=`aws ec2 describe-images \
        --owners aws-marketplace \
        --filters "Name=name,Values=debian-10-amd64*" \
        --query 'sort_by(Images, &CreationDate)[-1].ImageId' \
        --output text`AWS_MY_JUPYTER_INSTANCE_ID=`aws ec2 run-instances \
        --image-id $IMAGE_ID \
        --count 1 \
        --instance-type t3.micro \
        --key-name my-jupyter-kp \
        --tag-specifications 'ResourceType=instance,\
                Tags=[{Key=Name,Value=my-jupyter-vm}]' \
        --query 'Instances[0].InstanceId' \
        --placement AvailabilityZone=eu-north-1a \
        --output text`

4.等待虚拟机准备就绪。在我的例子中,在状态检查开始在新创建的虚拟机的 EC2 仪表板 UI 上显示“2/2 检查通过”之前,花了 2 分多钟。

5.**注意:**从这里开始,我们假设AWS_MY_JUPYTER_INSTANCE_ID变量成立。如果出于某种原因,您的 shell 终端关闭了,然后您重新打开它,您需要重新初始化该变量,以便下面的命令能够工作。我建议您备份您的实例 ID(这样,如果需要,您可以稍后用AWS_MY_JUPYTER_INSTANCE_ID=<your instance id>重新初始化它):

# Take a backup note of the value of this variable:
echo $AWS_MY_JUPYTER_INSTANCE_ID

6.我们需要设置适当的安全组(防火墙规则)来启用 ssh 连接:

VPC_ID=`aws ec2 describe-instances \
        --instance-ids $AWS_MY_JUPYTER_INSTANCE_ID \
        --query 'Reservations[0].Instances[0].VpcId' \
        --output text`SG_ID=`aws ec2 create-security-group \
        --group-name my-jupyter-sg \
        --description "My Jupyter security group" \
        --vpc-id $VPC_ID \
        --query ‘GroupId’ \
        --output text`aws ec2 authorize-security-group-ingress \
        --group-id $SG_ID \
        --protocol tcp \
        --port 22 \
        --cidr 0.0.0.0/0aws ec2 modify-instance-attribute \
        --instance-id $AWS_MY_JUPYTER_INSTANCE_ID \
        --groups $SG_ID

7.测试 ssh 连接是否正常工作(对 ssh 指纹问题回答“是”):

DNS_NAME=`aws ec2 describe-instances \
        --instance-ids $AWS_MY_JUPYTER_INSTANCE_ID \
        --query 'Reservations[0].Instances[0].PublicDnsName' \
        --output text`ssh -i my_jupyter_private_key.pem admin@$DNS_NAMEexit # to get back to your local compyter prompt

8.为了能够在以后方便地重新启动虚拟机(这里我们假设我们上面创建的私钥文件在当前工作目录中,并且一直在那里—如果密钥文件的位置不同,那么适当地调整这里构造的别名):

echo >> ~/.bashrcecho "AWS_MY_JUPYTER_INSTANCE_ID=$AWS_MY_JUPYTER_INSTANCE_ID" \
    >> ~/.bashrcecho "AWS_MY_JUPYTER_KEY=\"`pwd`/my_jupyter_private_key.pem\"" \
    >> ~/.bashrcecho "alias aws_start_my_jupyter_vm=\"aws ec2 start-instances \\
        --instance-ids \$AWS_MY_JUPYTER_INSTANCE_ID\"" \
    >> ~/.bashrcecho "alias aws_connect_my_jupyter_vm=\"
        DNS_NAME=\\\`aws ec2 describe-instances \\
            --instance-ids \$AWS_MY_JUPYTER_INSTANCE_ID \\
            --query 'Reservations[0].Instances[0].PublicDnsName' \\
            --output text\\\`
        ssh -i \\\"\$AWS_MY_JUPYTER_KEY\\\" admin@\\\$DNS_NAME\"" \
    >> ~/.bashrc

9.测试新创建的别名:

aws ec2 stop-instances --instance-ids $AWS_MY_JUPYTER_INSTANCE_ID

等到实例正确停止。您可以从 AWS EC2 仪表板检查它——实例状态必须显示“已停止”。我用了不到一分钟。

exit

重新打开本地 shell 命令提示符(让它重新加载~/.bashrc文件)。输入以下命令:

aws_start_my_jupyter_vm

您应该在 json 中看到一条消息(取决于您的 AWS CLI 配置),说明您的 VM 的当前和以前的状态。

**等待虚拟机启动。**这可能需要大约 2 分钟,您可以从 AWS EC2 仪表板上看到:当状态检查显示“2/2 检查通过”时,实例准备好执行下一个命令:

aws_connect_my_jupyter_vm

这将通过 ssh 将您带到 VM 命令提示符。

10.您的 VM 现在已经准备好了,您现在可以随时从本地计算机的命令行轻松地重新启动它,以便继续您的工作。

设置 Jupyter

我们将安装 JupyterLab,Jupyter 笔记本的新版本。

11.连接到您的虚拟机(如果您在上面的命令后退出):

aws_connect_my_jupyter_vm

12.在虚拟机命令提示符下运行以下命令:

sudo apt update
sudo apt upgrade **# Hit 'Y' and Enter key when asked**
sudo apt install python3-pip **# Hit 'Y' and Enter key when asked** sudo pip3 install --upgrade jupyterlab boto3
sudo mkdir -p /opt/my_jupyterlab/bin
sudo sh -c \
    'echo "#!/bin/bash" > /opt/my_jupyterlab/bin/run_jupyterlab'
sudo chmod a+x /opt/my_jupyterlab/bin/run_jupyterlab

**重要!!!!**在下一个命令中,出于安全原因,需要使用-IP = 127 . 0 . 0 . 1 来阻止任何外部访问尝试,特别是因为我们在这里关闭了密码和安全令牌,以方便使用。

sudo sh -c 'echo "jupyter lab \\
        --ip=127.0.0.1 \\
        --NotebookApp.token=\"\" \\
        --NotebookApp.password=\"\" \\
        --NotebookApp.allow_origin=\"*\"" \
    >> /opt/my_jupyterlab/bin/run_jupyterlab'exit

13.带有 Jupyterlab 的虚拟机现在已经配置好了,您现在回到了本地计算机的命令行。让我们将使 JupyterLab 易于启动和使用的要点联系起来:

echo "alias aws_connect_my_jupyterlab=\"
        DNS_NAME=\\\`aws ec2 describe-instances \\
            --instance-ids \$AWS_MY_JUPYTER_INSTANCE_ID \\
            --query 'Reservations[0].Instances[0].PublicDnsName' \\
            --output text\\\`
        ssh -i \\\"\$AWS_MY_JUPYTER_KEY\\\" admin@\\\$DNS_NAME \\
            -L 8888:localhost:8888 \\
            -t '/opt/my_jupyterlab/bin/run_jupyterlab'\"" \
    >> ~/.bashrcexit

14.再次打开本地命令提示符(让它重新加载~/.bashrc文件),测试我们刚刚创建的命令行别名:

aws_connect_my_jupyterlab

15.打开浏览器,在地址栏中输入 http://localhost:8888/

16.**瞧!你在 JupyterLab!**您已经安装了 AWS python API(参见上面的 pip 3 install-upgrade 命令)。您的 JupyterLab python 环境已经设置好,并且能够与 AWS 服务进行交互(在一定程度上,您已经通过 CLI 访问密钥向正在使用的帐户授予了权限)。

停止虚拟机以避免不必要的云成本

17.每当您停止使用笔记本电脑时,不要忘记关闭虚拟机,以避免不必要的云成本。要从本地计算机命令行停止虚拟机,请执行以下操作:

aws ec2 stop-instances --instance-ids $AWS_MY_JUPYTER_INSTANCE_ID
exit

重新启动已经设置好的 Jupyter 虚拟机

18.当您稍后回到笔记本上工作时,打开本地命令提示符,使用以下命令重新启动虚拟机:

aws_start_my_jupyter_vm

19.等待虚拟机启动。这可能需要大约 2 分钟—您可以从 AWS EC2 仪表板上看到:当状态检查显示“2/2 检查通过”时,该实例准备好执行下一个命令:

aws_connect_my_jupyterlab

20.打开浏览器,在地址栏中输入 http://localhost:8888/

如果您不想启动 JupyterLab,而只是一个到 VM 的 shell 连接,那么您可以使用另一个命令行别名:aws_connect_my_jupyter_vm

添加额外磁盘

虚拟机根文件系统链接到的默认卷大小为 8gb。我建议让它保持原样,只有当您需要处理更大的数据集时,才向虚拟机添加额外的 EBS 卷。如果您已经完成了项目,将额外的空间作为单独的磁盘可以让您放下并删除它(在删除磁盘之前,将您想要保留的文件备份到 S3)。根据官方记录,AWS 免费层包括 30GB 的存储空间,但超出免费层的服务在典型的个人预算水平下可能会相当昂贵,所以让它们闲置,让你按月付费是没有意义的。同样,由于同样的成本原因,在创建另一个持久磁盘之前,考虑一下您实际需要多大的磁盘。确切的定价取决于您在创建 EBS 卷时可以调整的多个参数,但是 200GB 卷(带每日快照)的价格可能会超过每月 30 美元,而 25GB 对于您当前的项目来说可能已经足够大了(每月 6 美元)?

家庭作业的附加练习

以上内容足以让您开始使用 AWS 中的 Jupyter 环境。但是,为了迫使你思考,练习一些 AWS 修补程序,并增强你对环境的信心,这里有一些额外的练习,可以让你的生活更加轻松,我建议你尝试自己解决。请随意在下面张贴您的解决方案描述或您可能得到的问题作为回应,我将尝试对它们进行评论以获得您的反馈。

练习 1

使 Jupyter 虚拟机的启动更加方便。改进本地命令行别名检查虚拟机是否已经运行的方式——如果没有,则自动启动虚拟机,等待它启动并准备好,并在其中启动 Jupyter。这样,您将消除启动虚拟机并手动等待其准备就绪的单独手动步骤。

练习 2

改进您的本地命令行别名,在使用 ctrl+c 停止 Jupyter 服务后,它还会让您停止虚拟机(默认操作是停止虚拟机),这样您可以避免因意外忘记关闭虚拟机而导致的不必要的云成本。

练习 3

自动部署新的 Jupyter VM,避免每次创建时手动复制粘贴上面的所有命令。如果您想为不同的项目维护单独的环境,这种方式会使您的生活更加灵活和敏捷。有几种方法可以做这件事。这里有几个想法(选择你的选择并实现它)。

**Ex。4 备选方案 1。**编写上述指令中的所有内容,以便从一个命令行命令中触发。

例如。4 备选方案 2。创建一个 Jupyter 虚拟机映像,当您想要启动另一个独立于其他项目的干净的 Jupyter 环境时,可以将它用作模板。

尽情享受吧!

在 Google Cloud 上设置 Jupyter

原文:https://towardsdatascience.com/setting-up-jupyter-on-google-cloud-6ad75562ac1c?source=collection_archive---------23-----------------------

一个可脚本化的命令行列表,用于在 Google Cloud 中安全、经济地部署 Jupyter,并增加了练习

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

图片来源:commons.wikimedia.org 的 Jupyter 和谷歌云的标志

更新: 在我的下一篇文章中,我给出了关于 在 AWS 上设置 Jupyter 的等效说明——如果你对 AWS 更感兴趣,可以去看看那篇文章。

Google Cloud 是一个伟大、强大和快速发展的当代云环境,它为数据科学家和数据工程师提供了大量很酷的服务和工具。作为一名数据科学家,当您在本地笔记本电脑上运行分析项目时,您经常会面临技术资源方面的挑战,比如下载大型数据集的网络速度、磁盘大小限制、CPU 能力限制或内存限制。在当代的云环境中,对于这些障碍,您基本上都有简单的解决方案。您的网络连接速度很快。你总是可以用小的、精益的和吝啬的资源开始任何任务。每当你面临磁盘存储问题时,你只需点击几下鼠标,就可以租用一个更大的磁盘。或者,您可以将数据集加载到 BigQuery 或其他合适的存储服务中,以便进行经济高效的处理。CPU 能力太小?别担心,给你的虚拟机增加更多的 CPU(当你不再需要它的时候,你可以立即缩减)。内存不足?几次点击之后,你就有了更多的内存,同样,如果你不再需要它,你可以把它拿回来。对于分布式计算来说,任何类型的集群形成通常也只需点击几下鼠标,这时您只需知道要做什么:启动集群以执行更繁重的计算任务,将结果保存在集群外部的某个存储服务中,并关闭集群以防止其闲置(并产生不必要的成本)。

Jupyter vs 谷歌云数据实验室

由于目前大多数数据科学家都习惯于使用 Jupyter Notebook 或 Jupyter lab(Jupyter Notebook 的新版本),任何数据科学家在开始使用 Google Cloud 时面临的首要问题之一是如何以一种合理方便的方式设置它,并避免不必要的云成本。谷歌云吸引你注意的一点是他们的 Datalab 产品,这基本上是谷歌对 Jupyter 笔记本电脑的翻新,部署在一个专用的虚拟机中,添加了额外的持久磁盘和一些额外的服务(如自动备份和 Ungit)。

使用 GC Datalab 而不是您自己部署的 Jupyter 的一个主要优点是,它的部署是为您准备好的,并且是自动化的——您只需在云外壳中键入特定的命令行,等待一段时间进行配置,然后您就可以通过 GC Cloud Shell Web Preview 功能、SDK-s(用于与已部署的不同云服务轻松集成)轻松访问整个 UI 环境。因此,快速使用气相色谱数据实验室非常容易。

然而,这种快速入门的便利性也带来了一些缺点,如 Linux 底层环境和设置过于受限和定制化(不是一个熟悉的 Debian 系列——没有基于 apt*的工具来安装额外的包),以及一些其他意想不到的不必要的麻烦,至少对我来说是这样。因此,我想出了一种建立 Jupyter Lab(Jupyter 笔记本的新版本)的方法,这种方法实现了类似的(甚至更好的)易用性和云集成,并且成本更低(通过避免 Datalab 附带的强制性额外持久磁盘,而实际上并不总是必要的)。从那以后,在谷歌云环境下工作时,我更喜欢使用 Jupyter Lab 而不是 Datalab。

如果你有使用 Jupyter Notebook 的经验,并且对类似 Debian 的环境感到舒适,那么你可能会发现下面的说明很有帮助。

Jupyter 安装说明

出于可脚本化/可自动化的目的,以下指令依赖于 Google Cloud Shell 命令行,即我们避免通过云控制台 UI 做同样的事情。

1.创建或者选择一个想要部署 Jupyter 虚拟机的云项目。

2.打开 Google 云控制台,从云控制台激活云壳。您可以通过云控制台右上角的工具栏按钮来完成此操作:

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

单击以启动云壳

3.在 Cloud Shell 命令提示符下,输入以下命令(根据需要调整项目名称、实例虚拟机名称、区域和机器类型——我建议保留这里的其他选项,除非您知道自己要做什么):

PROJECT_NAME=my-project-name **#change this to actual project name**
VM_NAME=my-jupyterlab
ZONE=europe-west1-b
MACHINE_TYPE=n1-standard-1gcloud compute --project=$PROJECT_NAME \
    instances create $VM_NAME \
        --zone=$ZONE \
        --machine-type=$MACHINE_TYPE \
        --maintenance-policy=MIGRATE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --scopes=cloud-platformgcloud compute ssh my-jupyterlab --zone europe-west1-b

4.上面的最后一个命令会将您带到新创建的虚拟机的命令提示符下。在那里输入以下命令:

sudo apt update
sudo apt upgrade **# Hit 'Y' and Enter key when asked**
sudo apt install python3-pip **# Hit 'Y' and Enter key when asked**
sudo pip3 install --upgrade jupyterlab google-api-python-client
sudo mkdir -p /opt/my_jupyterlab/bin
sudo sh -c \
    'echo "#!/bin/bash" > /opt/my_jupyterlab/bin/run_jupyterlab'
sudo chmod a+x /opt/my_jupyterlab/bin/run_jupyterlab

**重要!!!**在下一个命令中,出于安全原因,--ip=127.0.0.1是必需的,以阻止任何外部访问尝试,特别是因为我们在这里关闭了密码和安全令牌,以实现与 Datalab 相同的使用便利性。当您以后更加熟悉 Google Cloud 并了解如何配置网络时,为了增加安全性,您可以完全关闭虚拟机的外部 IP,并创建防火墙设置,以便虚拟机仍然能够与外部世界通信(安装软件包和下载数据集需要)。然而,为了不使防火墙功能的当前说明过于复杂,这是已经实现的设置,您可以通过 GC 帐户验证访问您的笔记本电脑,而无需 Jupyter 进行额外的密码交互,同时不会将您的笔记本电脑暴露给公众:

sudo sh -c 'echo "jupyter lab \\
        --ip=127.0.0.1 \\
        --NotebookApp.token=\"\" \\
        --NotebookApp.password=\"\" \\
        --NotebookApp.allow_origin=\"*\"" \
    >> /opt/my_jupyterlab/bin/run_jupyterlab'exit

5.带有 JupyterLab 的虚拟机现在已经配置好了,使用上面最后的exit命令,您可以返回到云 Shell 命令行。让我们将使 JupyterLab 易于启动和使用的要点联系起来:

echo "" >> .bashrc
echo "alias my_jupyterlab=\"gcloud compute ssh my-jupyterlab \\
        --zone europe-west1-b \\
        -- -L 8080:localhost:8888 -4 \\
        '/opt/my_jupyterlab/bin/run_jupyterlab'\"" \
    >> .bashrcexit

6.上面最后的exit命令关闭了云外壳。再次打开云 Shell,输入以下命令来测试我们刚刚创建的命令行别名:

my_jupyterlab

7.上面的最后一个命令打开了到新创建的虚拟机的 ssh 连接,创建了云控制台 Web 预览特性所需的隧道,并在虚拟机内部启动了 JupyterLab 服务——您应该可以在控制台 Shell 终端输出中看到 JupyterLab 的日志输出。如果您在这里按 Ctrl+C 并终止 JupyterLab 服务,连接将关闭,您将返回到控制台 Shell 命令行提示符。但是,如果您希望下一步也能成功,请不要这样做(即不要按 Ctrl+C——如果您按了,请再次输入上面的命令:)。

8.要打开 JupyterLab UI,请单击云壳工具栏上的“Web 预览”按钮,然后单击“在 8080 端口上预览”

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

1.单击打开 Web 预览菜单

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

2.单击“在端口 8080 上预览”

9.瞧!你在 JupyterLab!您已经安装了谷歌云的 python API(参见上面的pip3 install --upgrade命令),并且它可以访问谷歌云服务(参见上面创建虚拟机时的--scopes=cloud-platform选项)。您的 JupyterLab python 环境与所有 Google 云服务完全集成,并且能够以与 Datalab 相同的方式与这些服务进行交互。

从这里开始,你可以创建和编辑笔记本,与底层的 Debian 平台交互(通过笔记本命令行 magic 或者从 JupyterLab 启动一个终端),或者在基于 Debian 的 Jupyter 环境中做任何你觉得舒服的事情。添加任何你觉得有必要的包(apt install gitpip3 install pandas;等等)。

重新启动已经设置好的 Jupyter 虚拟机

每当您停止使用笔记本电脑时,不要忘记关闭虚拟机,以避免不必要的云成本。当您稍后回到笔记本上工作时,请执行以下操作:

1.重新启动虚拟机。

2.打开云控制台命令提示符。

3.输入以下命令:

my_jupyterlab

4.点击云壳工具栏上的“Web 预览”按钮,然后点击“8080 端口预览”。

添加额外的永久磁盘

默认虚拟机主磁盘大小为 10GB。我建议让它保持原样,只有当您需要处理更大的数据集时,才向 VM 添加一个额外的持久磁盘。如果您已经完成了项目,将该额外空间作为额外的磁盘让您有机会丢弃并删除它(在删除磁盘之前,将您想要保留的那些文件备份到云存储中)。在典型的个人预算水平下,永久磁盘是一项相当昂贵的服务,因此让它们闲置,让您按月付费是没有意义的。同样,由于同样的成本原因,在创建另一个持久磁盘之前,考虑一下您实际需要多大的磁盘。默认情况下,Datalab 会为您创建一个 200GB 的磁盘(在撰写本文时,普通 200GB SSD 的欧洲-西方 1 价格为€31.30 英镑/月),但也许 25GB 对于您当前的项目已经足够大了(€3.91 英镑/月)?

你可以在这里找到给虚拟机添加持久磁盘的说明。

解决纷争

基于 Google Cloud Web Preview 的 web UI 隧道可能会发生的一件事情是,您突然看到 Jupyter web UI 失去了与 Jupyter 服务的连接(顺便说一下,同样的事情可能也会发生在 Datalab 上)。在这种情况下,请检查您的云 Shell 是否仍然连接着,并在必要时重新连接它。这种情况下的原因是,云外壳拥有隧道,如果云外壳以某种方式断开连接,它会带走隧道,并导致 Jupyter web UI 失去与后端的连接。如果这种断开是由于临时网络连接而发生的,那么单击 Cloud Shell 工具栏上的“reconnect”链接可能足以恢复 JupyterLab 连接,甚至不会丢失会话状态。但是,如果 Cloud Shell 和 Jupyter VM 之间的连接已经丢失(即,这不仅仅是您的浏览器和 Google Cloud Console 服务之间的网络连接问题),那么您必须从 Cloud Shell 再次输入my_jupyterlab命令,以再次启动 Jupyter 服务。

家庭作业的附加练习

以上内容足以让您开始使用 Google Cloud 中的 Jupyter 环境。但是,为了迫使你思考,练习一些谷歌云修补程序,并增强你对这种环境的信心,这里有一些额外的练习,可以让你的生活变得更加轻松,我建议你尝试自己解决。请随意在下面张贴您的解决方案描述或您可能得到的问题作为回应,我将尝试对它们进行评论以获得您的反馈。

练习 1

使 Jupyter 虚拟机的启动更加方便。改进my_jupyterlab云外壳别名,它检查虚拟机是否已经在运行——如果没有,那么自动启动虚拟机,等待它启动并准备好,并在其中启动 Jupyter。这样,您将消除启动虚拟机的单独手动步骤。

练习 2

改进my_jupyterlab云外壳别名,在使用 ctrl+c 停止 Jupyter 服务后,它还会让您停止 VM(默认操作是停止 VM)——这样您可以避免由于意外忘记关闭 VM 而导致的不必要的云成本。

练习 3

将 Cloud SDK 安装到您的本地台式机或笔记本电脑中,并尝试实现这样的设置:您可以将 ssh 隧道连接到云托管的 Jupyter VM,并从您的本地台式机或笔记本电脑启动 Jupyter 服务,而不是使用云 Shell 和 Web Preview。这样,您就可以从日常工作流程中消除另一个额外的步骤(打开云控制台并启动控制台 Shell)。

练习 4

自动部署新的 Jupyter VM,避免每次创建时手动复制粘贴上面的所有命令。如果您想为不同的项目维护单独的环境,这种方式会使您的生活更加灵活和敏捷。有几种方法可以做这件事。这里有几个想法(选择你的选择并实现它)。

例如。4 备选方案 1。编写上述指令中的所有内容,以便从一个命令行命令中触发。

**Ex。4 备选方案 2。**创建一个 Jupyter 虚拟机映像,当您想要启动另一个独立于其他项目的干净的 Jupyter 环境时,可以将它用作模板。

尽情享受吧!

在 Atom 编辑器上设置 LaTeX

原文:https://towardsdatascience.com/setting-up-latex-on-your-atom-editor-7ea624571d50?source=collection_archive---------5-----------------------

编辑、生成和预览 TeX 文件,全部在 Atom 编辑器中完成

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

Atom 上的 LaTeX 编辑器

在本教程中,我将指导您在 Atom 上设置 LaTeX 编辑器,以下是这样做的一些原因和好处:

  • 保存工作时并排预览您的工作
  • 快速,在 3 秒钟内生成预览
  • 单击预览会将光标带到语法的位置
  • Dropbox 和 GitHub 集成,用于备份和与合作者协作
  • 自由的

什么是乳胶

LaTeX 是一个文档准备系统,在学术界广泛用于发布科学文档。作者使用标记语法来定义文档的结构、设置文本样式、插入图像、添加引用和交叉引用。

因为出版商那么多,各有各的设计标准。例如,标题为 18pt 乘以 Roman,名称为 12pt 乘以 Italic,依此类推。LaTeX 的目的是让作者专注于写作,而不是浪费时间遵循出版商的文档设计指南。作者只需下载出版商的 LaTeX 模板并开始写作。

如果你是 TeX 新手,或者只是想用 LaTeX 做一个一次性项目,最快的入门方式是使用在线服务,比如 PapeeriaOverleafLaTeX base 。它们提供了编辑、预览和下载 PDF 格式作品的能力。

既然有在线解决方案,那么为什么要在你的机器上设置 LaTeX 编辑器呢?

除非你为他们的计划付费,否则免费层有一些限制,让我列举几个:

  1. 有限的私有文档[Papeeria],或者没有私有文档[Latex base]
  2. 没有 GitHub 集成[下页],或者只有公共存储库[Papeeria]
  3. 没有合作者[背页]
  4. 需要在线。

就我个人而言,我选择在本地安装 LaTeX,这样我和我的合作者就可以处理同一个 LaTeX 文档,并与私有的 GitHub 库同步。

其次,与在线服务不同,在本地机器上生成预览也要快得多。当我点击 Cmd+S 时,预览将在不到 3 秒的时间内生成。

在 Atom 上设置 LaTeX 编辑器

在本节中,我将指导您在 macOS 上的 Atom 上设置 LaTex 编辑器。该设置由 4 部分组成:

  • 设置纹理分布
  • 设置原子
  • 安装 Latexmk
  • 在 Atom 中安装包

特克斯分布

在 OS X,下载 MacTeX 。截至 2020 年 4 月,分布为 MacTeX-2020。可以选择下载完整包,4GB。它包含大多数用户需要的所有文件,您不必面对搜索缺失组件的艰巨任务。强烈推荐。

如果你不想安装整个 MacTeX 发行版——它很大,如果你像我一样喜欢选择安装什么,你可以下载 BasicTeX ,它只有 80MB。BasicTeX 包含了满足从生成 PDF 的需求的 TeX Live 发行版。tex 文件;它不包括 GUI 应用程序、Ghostscript 和其他库。但这意味着你必须搜索并下载你可能需要的所有软件包。我稍后会谈到这一点。

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

BasicTeX 安装

MacTeX 是针对 OS X 的,但是如果你在 Linux 或者 Windows 上,下载 TeX Live

原子

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

https://atom.io/

Atom 是一个漂亮的文本编辑器,可以在 OS X、Windows 和 Linux 上使用。它有一个包管理器,允许你安装数千个开源包,为你的编辑器增加新的特性和功能。您可以在单一界面上轻松浏览项目文件。您可以将界面分成多个窗格,以便在文件间编辑/引用代码。下载并安装 Atom

Latexmk

Latexmk 用于自动生成 LaTeX 文档。这里没什么好解释的,我们需要它来工作。安装很简单,从终端输入:

sudo tlmgr install latexmk

这将提示您输入密码并安装 latexmk 软件包。

Atom 包

这些包使您能够将 Atom 用作 LaTeX 编辑器。

  • 编译Latex 包从 Atom 内部编译 Latex 文档。它将执行 Latexmk 来构建您的工作。
  • 预览 PDF 文件。 PDF 查看包使您能够在 Atom 中查看 PDF 文件。这允许您并排预览您的工作。单击预览会将光标带到语法的位置。
  • 语法高亮Language-LaTeX package 在 Atom 中突出显示 LaTeX 语法。这对于帮助您检查语法是否具有有效的 LaTeX 语法特别有用。

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

已安装的 Atom 包

你做到了!

此时,您的 Atom 上应该有一个可以工作的 LaTeX 编辑器。我建议对配置进行一些更改。进入Atom->Preferences->Packages。转到乳胶包的设置,并:

  • [检查]保存时构建(或使用build快捷键保持默认)
  • [取消选中]成功构建后打开结果
  • [取消选中]在后台打开结果
  • 在输出目录下,键入" build "

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

乳胶包的配置

语言-乳胶包中:

  • [检查]软包装

附加乳胶包

如果你有下载 BasicTeX,你可能不得不下载出版商在他们的模板中使用的包。最简单的方法是谷歌搜索丢失的包,或者搜索综合特克斯档案网(CTAN)

例如,算法是常用的包之一,我们可能会在文档中看到这一点。

\usepackage{algorithmic}

要安装软件包,请打开终端,键入:

sudo tlmgr install algorithms

这就对了。我希望你喜欢你的 LaTeX 编辑器,并且更加热爱 Atom。要感谢所有开源的贡献者 Atomatom-latexatom-pdf-viewlanguage-latex

为您的分析堆栈设置雪花

原文:https://towardsdatascience.com/setting-up-snowflake-for-your-analytics-stack-b252b063f20c?source=collection_archive---------39-----------------------

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

本学长在 Unsplash 上的照片

雪花是一个基于云的分析数据仓库,由于其无需维护、易于使用和灵活的服务而变得越来越受欢迎。通过基于使用的定价模式将计算和存储分开,雪花能够根据不断变化的数据、工作负载和并发需求轻松扩展。

如果您刚刚开始使用 Snowflake,请稍等片刻,然后再开始部署一些特定的资源并构建您的分析应用程序。要充分利用雪花的每秒成本结构和出色的安全模型,需要从一开始就考虑配置,而不是 6 个月以后。

在这里,我们将总结来自 dtb 的团队的建立雪花环境的最佳实践,以及我们从实践中学到的东西。

有用的东西

首先,让我们熟悉一下《雪花》中的所有主要概念。

数据库:在传统的本地数据仓库中,您可能有多台服务器为各种数据源的多个数据库提供服务,而在雪花中,最高级别的抽象是一个数据库,您可以在每个帐户中拥有多个数据库。每个数据库中的数据被拆分成压缩文件,存储在云存储中,只有雪花专有的 SQL 引擎才能查询。这使得数据存储非常便宜,而且几乎是无限的。

**仓库:**仓库为雪花提供了在任何数据库上执行查询的计算能力。每个仓库都是一个 MPP 计算集群,基本上是一组执行实际数据处理的虚拟计算机。仓库是根据它们的大小和运行时间来收费的。

**用户:**可以用登录名和密码连接到雪花的单个用户。通过分配角色,用户被授予雪花资源的特权和权限。

**角色:**一个对象,为角色所分配到的任何用户定义一组雪花资源的特权和权限。

雪花让所有与帐户关联的用户及其所有资源使用一个如下所示的连接:

**Account =** [**host.region.cloud_service**](https://wh31430.ca-central-1.aws.snowflakecomputing.com/)**Url =** [**https://host.region.cloud_service.snowflakecomputing.com/**](https://wh31430.ca-central-1.aws.snowflakecomputing.com/)

默认情况下,雪花允许访问所有 IP 地址,但可以通过在帐户或用户级别将某些 IP 地址列入白名单来阻止流量。查看网络政策页面。

配置您的数据库

根据您的团队的数据加载和暂存策略以及您希望如何设置开发和生产环境,有多种方法可以设置数据库。但是,如果你不确定,那么这个有两个数据库的例子非常适合分析用例。

原始:

在基于 ELT 的转换工具对原始数据进行查询以进行清理、反规范化和建模,并进行分析之前,该数据库可作为一个登陆区。该数据库具有严格的权限,因此不能被 BI 和报告工具等最终用户访问。

批量数据可以使用内部阶段从本地机器复制到原始数据库,或者使用外部阶段从云存储(如 S3)复制到原始数据库。您还可以使用 Snowpipe 从 stages 加载连续数据,snow pipe 是雪花的连续数据摄取服务。

这是创建数据库的方法:

USE ROLE SYSADMIN;CREATE DATABASE IF NOT EXISTS RAW;

分析:

该数据库包含为分析师、报告工具和其他分析用例准备的转换数据。这个数据库中的所有表都是由 ELT 工具创建和拥有的,ELT 工具从原始数据库中提取数据。分析数据库中的表和视图可以根据特定用途组织成模式,然后可以将粒度权限分配给用户角色,以便对特定模式进行操作。例如,可以为审计员分配只允许访问模式视图的角色,这些视图可以通过对个人信息进行适当的转换和散列来准备。

设置您的仓库

雪花仓库是按大小和每分钟的活动收费的,所以重要的是要考虑你将使用每个仓库做什么,并相应地进行配置。仓库在不使用时可以手动或自动挂起,但在使用它们运行查询时会非常快地加速运行,因此建议在几分钟后将它们配置为 auto_suspend。您为仓库选择的规模取决于它们将要执行的工作负载的规模,我们建议从小规模开始,然后根据需要增加规模。对于分析用例,三个仓库的设置会很好。

加载:

这是将用于处理数据加载到雪花的仓库。像 Fivetran 或 Stitch 这样的工具或特定用户将被分配角色,以授予使用该仓库加载作业的权限。为这个特定的任务分离这个仓库是理想的,因为数据负载可以改变,给仓库带来压力,并且我们不希望其他工具因为使用同一个仓库而变慢。

这就是创建仓库的方式:

USE ROLE ACCOUNTADMIN;CREATE WAREHOUSE LOADING WITH
WAREHOUSE_SIZE = SMALL
MAX_CLUSTER_COUNT = 2
SCALING_POLICY = ECONOMY
AUTO_SUSPEND = 120
ALTER RESUME = TRUE
COMMENT = ‘Warehouse for performing data loads’;

转换:

您的 ELT 工具(如 dbt)从原始数据库执行数据转换,并将其保存到分析数据库,这些工具将与有权使用此仓库的角色连接。仓库只会在 ELT 作业被执行时运行,所以你只需在那段时间付费。

报告:

这是您的 BI 工具(如 Looker 或 Chartio)将使用的数据仓库。仓库查询数据的频率取决于 BI 工具的设置。

仓库中意想不到的高负荷会导致比预期更高的成本。雪花提供了资源监视器,可以用来限制你的仓库在特定时间内使用的信用数量。我们强烈建议设置资源监视器来指定每个仓库的限制,以及当达到限制时应该采取什么措施。下面是如何创建一个:

USE ROLE ACCOUNTADMIN;CREATE RESOURCE MONITOR ACCOUNT_LIMIT_250
WITH CREDIT_QUOTA = 250
FREQUENCY = MONTHLY
START_TIMESTAMP = IMMEDIATELY
TRIGGERS ON 100 PERCENT DO NOTIFY;

定义您的角色

设置角色可能是早期最重要的任务。确定层次结构将指导您分配角色。雪花角色可以授予其他角色,并且与角色相关联的特权由层次结构中的父角色继承。有许多系统定义的角色,如 accountadmin、securityadmin、useradmin、sysadmin 和 public。Public 是分配给每个用户的默认角色,其他角色根据用户需要的权限添加到用户中。以下是我们将设置的角色。

装载机:

该角色被授予原始数据库中所有模式的权限。它连接到装载仓库以执行所有数据装载任务。sysadmin 角色可用于创建此角色,并授予装载仓库和原始数据库的权限。

以下是创建角色的方法:

USE ROLE SYSADMIN;CREATE OR REPLACE ROLE LOADER 
COMMENT=’role holds privileges for loading data to raw database’;GRANT ALL ON WAREHOUSE LOADING TO ROLE LOADER;GRANT ALL ON DATABASE RAW TO ROLE LOADER;

变压器:

该角色被分配给使用 ELT 工具进行连接的用户。它被授予查询原始数据库的权限和拥有分析数据库上的表的权限。

记者:

该角色将分配给与 BI 工具连接的分析师和用户。该角色将只对分析数据库拥有权限。

创建您的用户

由于我们在角色级别分配权限,因此我们可以将这些角色分配给新用户,并为每个独立的工具和人员创建用户。这意味着您团队中的每个成员以及您的分析堆栈中与雪花集成的每个工具都将拥有自己的用户凭证。通常,您会希望用户身份由您的身份管理解决方案来管理,比如 OKTA。一旦完成,你就可以创建你的用户了。

管理账户:

在我们前面提到的系统定义的角色中,accountadmin 是顶级角色。root 用户—创建帐户的人将有权访问所有这些角色。这些角色非常强大,不应该分配给执行日常分析的用户。根用户将由您的 DBA 或 CTO 担任。

分析师:

分析师将通过各种方式连接到雪花,并执行各种任务。他们可能正在运行 SQL、python 脚本,或者使用 jupyter 笔记本和其他 ELT 工具对数据进行建模。可以为这些用户分配加载者、转换者或报告者角色,或者多个角色,具体取决于他们的功能。

要创建用户,您需要作为管理用户进行连接。以下是创建用户并为其分配角色的方法。

USE ROLE USERADMIN;CREATE USER <USER>
PASSWORD = ‘’
EMAIL = ‘’
MUST_CHANGE_PASSWORD = TRUE;USE ROLE SECURITYADMIN;GRANT ROLE LOADER TO USER <USER>;

然后,用户可以使用这些用户凭据登录并更改密码。

数据加载工具:

一些用户将被分配 loader 角色,按照角色权限的指定在原始数据库上执行数据加载。这些用户是为 Fivetran 和 Stitch 等数据集成工具创建的。

ETL 工具:

这些用户将被分配 transformer 角色,执行从原始数据库到分析数据库的转换工作。这适用于像 dbt 这样的 ELT 工具。

商务智能工具:

这些用户将被分配为报告者角色,以连接到分析数据库来使用数据。这些用户将成为你的商业智能和报告工具,如 Looker 和 Chartio。

保护用户帐户对于确保数据的最高安全级别也很重要。雪花有许多用于账户认证的安全特性。我们建议对管理帐户使用多因素身份认证,您可能也想为您的分析师设置它。对于您的云工具,OAuth 也是一个选项。

就这样…

我们已经为您如何为您的分析团队设置雪花提供了很好的指导。这样做不会花你很长时间,但会让你有条理地前进。现在,您可以继续处理更令人兴奋的问题,并实际推出分析解决方案来推动您的公司向前发展。

Waterfront Analytics 帮助公司建立他们的分析堆栈并构建分析用例。如果你需要更多关于雪花的帮助,或者想聊聊你的项目,请通过我们的网站联系。

在 Windows 10 上设置 TensorFlow (GPU)

原文:https://towardsdatascience.com/setting-up-tensorflow-on-windows-gpu-492d1120414c?source=collection_archive---------2-----------------------

就我个人而言,我讨厌花费数小时来设置机器学习工具进行培训——尤其是在 Windows 上。

在过去几年的多次尝试和错误之后(即 Googling 和 StackOverflow-ing),我决定分享一个我想出的设置 TensorFlow 的方法。

我将这篇文章献给其他数据科学家,他们一直在查看充满错误消息的命令提示符。

**警告:**你必须有一个支持 CUDA 的 GPU 卡

1)安装所需的软件

概观

安装(按顺序):

  • 可视化工作室
  • 蟒蛇
  • NVIDIA CUDA 工具包+ cuDNN

可视化工作室

首先,在这里安装来自的 Visual Studio。安装社区版,因为专业版和企业版需要订阅。

注意: Visual Studio 是不是跟 VS 代码 IDE 一样!

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

Visual Studio 下载页面

蟒蛇

这里下载并安装 Anaconda。

您不需要在安装过程中向 PATH 环境变量添加 Anaconda。

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

蟒蛇装置

英伟达软件

安装 Visual Studio 后,安装 NVIDIA CUDA Toolkit 和 cuDNN。

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

来自https://www.tensorflow.org/install/gpu的软件要求

到当前日期(2020 年 10 月),必须安装 CUDA 10.1 和 cuDNN SDK 7.6 ( 这个极其重要)。

警告:支持的版本可能会改变,因此请务必查看官方 TensorFlow 文档

最新的 CUDA 版本是 11——请访问 CUDA 档案库cuDNN 档案库获取更早的版本。

安装 CUDA 只需运行可执行文件。exe)。

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

CUDA 10.1。可执行程序的扩展名

解压 cuDNN 库,将所有文件移动到 CUDA 目录下。如果您没有更改安装目录,您的 CUDA 将位于以下位置:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA

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

解压 cuDNN 下载并移动文件到 CUDA

2)安装张量流

打开 Anaconda 提示符并检查 Python 的版本。

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

Anaconda 提示

您可以输入下面的命令来检查您当前运行的 Python 版本。

python --version

然后,创建一个新的 Anaconda 虚拟环境:

conda create -n tf python=PYTHON_VERSION
  • tf 可以改为任何其他名称(如 python_tensorflow
  • 记得用你的 PYTHON 版本替换 PYTHON_VERSION (例如 3.8.5 )

然后,激活您刚刚创建的环境:

conda activate tf

最后安装 TensorFlow:

pip install tensorflow

Do not pip 安装 tensorflow***-GPU***因为它将安装 tensor flow 的旧版本(YouTube 上的旧教程使用此命令)。**

3)测试张量流(GPU)

通过运行以下命令,测试 TensorFlow 是否已正确安装,以及是否可以检测到 CUDA 和 cuDNN:

**python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"**

如果没有错误,那么恭喜您,您已经成功安装了 TensorFlow。

4)安装必要的库/包

我个人经常使用 Jupyter Notebook、Seaborn 和 Matplotlib,所以我确保通过运行以下命令来安装这些库:

**pip install jupyter ipykernel seaborn matplotlib**

5)蟒蛇和朱庇特

将您之前创建的 Anaconda 环境添加到 Jupyter Notebook 中。

**python -m ipykernel install --user --name ENVIRONMENT_NAME --display-name "KERNEL_DISPLAY_NAME"**

6)最终测试

返回到基本 conda 环境,打开 Jupyter 笔记本:

**conda activate base
jupyter notebook**

创建一个新的 Jupyter 笔记本并打开它:

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

Jupyter 笔记本上的 Anaconda 环境

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

新创建的笔记本

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

Jupyter 笔记本

运行下面这三行代码:

**!python --versionimport tensorflow as tfprint("Num GPUs Available", len(tf.config.experimental.list_physical_devices('GPU')))**

如果它能检测到你的 Python 和你的 GPU,你就成功安装了 TensorFlow (GPU)和机器学习必备工具!

使用 scikit-learn 和 spaCy 设置文本预处理管道

原文:https://towardsdatascience.com/setting-up-text-preprocessing-pipeline-using-scikit-learn-and-spacy-e09b9b76758f?source=collection_archive---------5-----------------------

了解如何使用 sklearn 管道进行标记化、词条化、删除停用词和标点符号

文本预处理是将原始文本转换成可矢量化的形式,随后由机器学习算法用于自然语言处理(NLP)任务,如文本分类、主题建模、命名实体识别等。

原始文本由所有文本分析 API 进行广泛预处理,如 Azure 的文本分析 API或我们在 Specrom Analytics 开发的 API,尽管预处理的程度和类型取决于输入文本的类型。例如,对于我们的历史新闻 API,输入由抓取的 HTML 页面组成,因此,在将文本输入到 NLP 算法之前,从文本中去除不需要的 HTML 标签是很重要的。然而,对于一些新闻媒体,我们从他们的官方 REST APIs 获得 JSON 格式的数据。在这种情况下,根本没有 HTML 标记,对这样一个干净的文本运行基于正则表达式的预处理程序是浪费 CPU 时间。因此,根据数据源对文本进行不同的预处理是有意义的。

如果您想要创建如下所示的词云,那么通常建议您删除停用词。但是在诸如名称实体识别(NER)的情况下,这并不是真正必需的,您可以安全地将语法完整的句子添加到您选择的 NER 中。

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

从搜集的新闻语料库中生成的词云(2016-2020)。杰伊·帕特尔

有许多好的博客文章开发了文本预处理步骤,但是为了完整起见,让我们在这里浏览一下。

1.标记化

将段落或句子中包含的文本转换为单个单词(称为标记)的过程称为标记化。在我们将文本转换成充满数字的向量之前,这通常是文本预处理中非常重要的一步。

直观而又相当天真的是,对文本进行标记的一种方法是简单地在空格处断开字符串,python 已经提供了非常好的字符串方法,可以轻松地完成这一任务,让我们将这种标记方法称为“空白标记化”。

然而,空白标记化无法理解单词缩写,例如当我们将两个单词“can”和“not”组合成“can”、don(do+not)和 I ve(I+have)时。这些都不是无关紧要的问题,如果我们不把“不能”分成“能”和“不能”,那么一旦我们去掉标点符号,我们将只剩下一个单词“cant”,它实际上不是一个字典单词。

Python 中用于文本处理的经典库 NLTK 附带了其他标记化器,如 WordPunctTokenizer 和 TreebankWordTokenizer,它们都按照不同的约定运行,试图解决单词缩写问题。对于高级标记化策略,还有一个 RegexpTokenizer,它可以根据正则表达式拆分字符串。

所有这些方法基本上都是基于规则的,因为没有真正的“学习”发生,所以作为用户,您必须处理所有可能因令牌化策略而出现的特殊情况。

Spacy 和 Apache Spark NLP 等下一代 NLP 库在很大程度上解决了这个问题,并在语言模型中使用标记化方法处理常见缩写。

1.1 NLTK 标记化示例

# Create a string input 
sample_text = "Gemini Man review: Double Will Smith can't save hackneyed spy flick U.S.A"from nltk.tokenize import WhitespaceTokenizer
tokenizer_w = WhitespaceTokenizer()# Use tokenize method 
tokenized_list = tokenizer_w.tokenize(sample_text) 
tokenized_list# output['Gemini',
 'Man',
 'review:',
 'Double',
 'Will',
 'Smith',
 "can't",
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A']

WordPunct Tokenizer 将在标点符号上拆分,如下所示。

 from nltk.tokenize import WordPunctTokenizer 
tokenizer = WordPunctTokenizer()
tokenized_list= tokenizer.tokenize(sample_text)
tokenized_list# Output['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Will',
 'Smith',
 'can',
 "'",
 't',
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U',
 '.',
 'S',
 '.',
 'A']

NLTK 的 treebanktokenizer 将单词缩写拆分成两个标记,如下所示。

from nltk.tokenize import TreebankWordTokenizer
tokenizer = TreebankWordTokenizer()
tokenized_list= tokenizer.tokenize(sample_text)
tokenized_list
#Output['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Will',
 'Smith',
 'ca',
 "n't",
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A']

1.2 空间标记化示例

在 SpaCy 中执行标记化也很简单,在后面关于词条化的部分,您会注意到为什么标记化作为语言模型的一部分可以解决单词缩写的问题。

# Spacy Tokenization example
sample_text = "Gemini Man review: Double Will Smith can't save hackneyed spy flick U.S.A"from spacy.lang.en import English
nlp = English()
tokenizer = nlp.Defaults.create_tokenizer(nlp)
tokens = tokenizer(sample_text)
token_list = []
for token in tokens:
    token_list.append(token.text)
token_list
#output
['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Will',
 'Smith',
 'ca',
 "n't",
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A']

2.词干化和词汇化

词干化和词汇化试图为不同的词形变化(raining,rained 等)获得词根(例如 rain)。Lemma algos 给你的是真正的词典单词,而词干法只是简单地去掉了单词的最后部分,所以速度更快,但不太准确。词干分析返回的单词并不是真正的字典单词,因此你将无法在 Glove、Word2Vec 等中找到它的预训练向量,这是取决于应用程序的一个主要缺点。

然而,使用像波特和更高级的雪球词干分析器这样的词干算法是非常流行的。Spacy 没有附带任何词干算法,所以我们将使用 NLTK 来执行词干;这里我们将展示两种词干提取算法的输出。为了便于使用,我们将把空白符号化器封装到一个函数中。如你所见,两位词干学家都将动词形式(raining)简化为 rain。

2.1 NLTK 的词干示例

sample_text = '''Gemini Man review: Double Will Smith can't save hackneyed spy flick U.S.A raining rained ran'''from nltk.tokenize import WhitespaceTokenizerdef w_tokenizer(text):

    tokenizer = WhitespaceTokenizer()   
# Use tokenize method 
    tokenized_list = tokenizer.tokenize(text) 
    return(tokenized_list)from nltk.stem.snowball import SnowballStemmerdef stemmer_snowball(text_list):
    snowball = SnowballStemmer(language='english')
    return_list = []
    for i in range(len(text_list)):
        return_list.append(snowball.stem(text_list[i]))
    return(return_list)
stemmer_snowball(w_tokenizer(sample_text))#Output['gemini',
 'man',
 'review:',
 'doubl',
 'will',
 'smith',
 "can't",
 'save',
 'hackney',
 'spi',
 'flick',
 'u.s.a',
 'rain',
 'rain',
 'ran']

你可以从 NLTK 的波特·斯特梅尔那里得到同样的结果,这个也可以把单词转换成非字典形式,比如 spy -> spi 和 double -> doubl

from nltk.stem.porter import PorterStemmerdef stemmer_porter(text_list):
    porter = PorterStemmer()
    return_list = []
    for i in range(len(text_list)):
        return_list.append(porter.stem(text_list[i]))
    return(return_list)
stemmer_porter(w_tokenizer(sample_text))#Output['gemini',
 'man',
 'review:',
 'doubl',
 'will',
 'smith',
 "can't",
 'save',
 'hackney',
 'spi',
 'flick',
 'u.s.a',
 'rain',
 'rain',
 'ran']

2.2 SpaCy 的引理化示例

如果您使用 SpaCy 进行标记化,那么它已经为每个标记存储了一个名为.lemma_的属性,您可以简单地调用它来获得每个单词的词汇化形式。请注意,它不像词干分析器那样具有攻击性,它将单词缩写(如“不可以”)转换为“可以”和“不可以”。

# [https://spacy.io/api/tokenizer](https://spacy.io/api/tokenizer)
from spacy.lang.en import English
nlp = English()tokenizer = nlp.Defaults.create_tokenizer(nlp)
tokens = tokenizer(sample_text)
#token_list = []
lemma_list = []
for token in tokens:
    #token_list.append(token.text)
    lemma_list.append(token.lemma_)
#token_list
lemma_list
#Output['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Will',
 'Smith',
 'can',
 'not',
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A',
 'rain',
 'rain',
 'run']

3.停止单词删除

上面有一些特定的词,如“它”、“是”、“那个”、“这个”等。这对基本句子的意思没有多大帮助,实际上在所有英语文档中都很常见;这些词被称为停用词。在通过计数矢量化器对记号进行矢量化之前,通常需要移除这些“常用”单词,以便我们可以减少向量的总维数,并减轻所谓的“维数灾难”。

基本上有三种方法可以删除停用字词:

  • 第一种方法是最简单的,您可以创建一个列表或一组单词来从令牌中排除;比如 list 已经是 sklearn 的 countvectorizer、NLTK 以及 SpaCy 的一部分。这种去除停用词的方法已经被接受了很长时间,然而,在研究人员和工作专业人员中有一种意识,即这种一刀切的方法实际上对学习文本的整体含义是非常有害的;有篇论文指出反对这种方法。
# using hard coded stop word listfrom spacy.lang.en import English
import spacy
spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS
# spacy_stopwords is a hardcoded set
nlp = English()
tokenizer = nlp.Defaults.create_tokenizer(nlp)
tokens = tokenizer(sample_text)
#token_list = []
lemma_list = []
for token in tokens:
    if token.lemma_.lower() not in spacy_stopwords:
    #token_list.append(token.text)
        lemma_list.append(token.lemma_)
#token_list
lemma_list
#Output['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Smith',
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A',
 'rain',
 'rain',
 'run']

不出所料,单词“will”和“can”等被删除了,因为它们出现在 SpaCy 中可用的硬编码停用词集中。让我们将它封装到一个名为 remove_stop_words 的函数中,这样我们就可以在第 5 节中将它用作 sklearn 管道的一部分。

import spacy
def remove_stopwords(text_list):
    spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDSreturn_list = []
    for i in range(len(text_list)):
        if text_list[i] not in spacy_stopwords:
            return_list.append(text_list[i])
    return(return_list)
  • 第二种方法是让语言模型判断给定的标记是否是停用词。Spacy 的标记化已经为此提供了一个名为 is .is_stop的属性。现在,有些时候,spacy 的标志不会排除常见的停用词,但这仍然比要排除的硬编码单词列表要好。仅供参考,在一些 SpaCy 模型[ 1 ][ 2 ]中有一个记录良好的错误,它避免了在第一个字母大写的情况下检测停用词,因此如果它不能正确检测停用词,您需要应用变通方法。
# using the .is_stop flagfrom spacy.lang.en import Englishnlp = English()
tokenizer = nlp.Defaults.create_tokenizer(nlp)
tokens = tokenizer(sample_text)

lemma_list = []
for token in tokens:
    if token.is_stop is False:

        lemma_list.append(token.lemma_)

lemma_list#Output['Gemini',
 'Man',
 'review',
 ':',
 'Double',
 'Will',
 'Smith',
 'not',
 'save',
 'hackneyed',
 'spy',
 'flick',
 'U.S.A',
 'rain',
 'rain',
 'run']

这显然做得更好,因为它检测到这里的“Will”是一个人的名字,只是从示例文本中去掉了“can”。让我们将它封装在一个函数中,以便在最后一节中使用。

# 
from spacy.lang.en import Englishdef spacy_tokenizer_lemmatizer(text):

    nlp = English()
    tokenizer = nlp.Defaults.create_tokenizer(nlp)
    tokens = tokenizer(text)

    lemma_list = []
    for token in tokens:
        if token.is_stop is False:
            lemma_list.append(token.lemma_)

    return(lemma_list)
  • 对抗停用词的第三种方法是排除在给定语料库中出现太频繁的词;sklearn 的 countvectoriser 和 tfidfvectorizer 方法有一个名为“max_df”的参数,它让您可以忽略文档频率严格高于给定阈值的标记。您也可以通过“max_features”参数指定标记总数来排除单词。如果您打算在 count vectorizer 之后使用 tf-idf,那么与对句子的整体含义有贡献的单词相比,它会自动为停用词分配一个低得多的权重。

4.删除标点符号

一旦我们标记了文本,转换了单词的缩写,文本中的标点符号和特殊字符就不再有用了。当然,当我们处理可能有 twitter 句柄、电子邮件地址等的文本时,这是不正确的。在这些情况下,我们改变我们的文本处理管道,只从令牌中去除空白,或者完全跳过这一步。我们可以使用 regex ’ ]* > '清除所有的 HTML 标签;所有非单词字符都可以用“[\W]+”删除。不过,在单词缩写被 lemmatizer 处理之前,您应该小心不要去掉标点符号。在下面的代码块中,我们将修改我们的空间代码,以考虑停用词,并从令牌中删除任何标点符号。如下面的例子所示,我们已经成功地删除了特殊字符标记,例如“:”,它们在单词矢量化的包中实际上没有任何语义贡献。

import re
def preprocessor(text):
    if type(text) == string: text = re.sub('<[^>]*>', '', text)
    text = re.sub('[\W]+', '', text.lower())
    return textfrom spacy.lang.en import English
nlp = English()
tokenizer = nlp.Defaults.create_tokenizer(nlp)
tokens = tokenizer(sample_text)lemma_list = []
for token in tokens:
    if token.is_stop is False:
        token_preprocessed = preprocessor(token.lemma_)
        if token_preprocessed != '': lemma_list.append(token_preprocessed)
lemma_list
#Output:['gemini',
 'man',
 'review',
 'double',
 'will',
 'smith',
 'not',
 'save',
 'hackneyed',
 'spy',
 'flick',
 'usa',
 'rain',
 'rain',
 'run']#A more appropriate preprocessor function is below which can take both a list and a string as inputdef preprocessor_final(text):
    if isinstance((text), (str)):
        text = re.sub('<[^>]*>', '', text)
        text = re.sub('[\W]+', '', text.lower())
        return text
    if isinstance((text), (list)):
        return_list = []
        for i in range(len(text)):
            temp_text = re.sub('<[^>]*>', '', text[i])
            temp_text = re.sub('[\W]+', '', temp_text.lower())
            return_list.append(temp_text)
        return(return_list)
    else:
        pass

另一个常见的文本处理用例是当我们试图从社交媒体评论、推文等 web 数据中执行文档级情感分析时。所有这些都广泛使用表情符号,如果我们简单地去掉所有特殊字符,我们可能会错过一些非常有用的符号,这些符号对文本的语义和情感有很大的贡献。如果我们计划使用一包单词类型的文本矢量化,那么我们可以简单地找到所有这些表情符号,并将它们添加到标记化列表的末尾。在这种情况下,作为标记化之前的第一步,您可能必须运行预处理器。

# find emoticons functionimport re
def find_emo(text):
    emoticons = re.findall('(?::|;|=)(?:-)?(?:\)|\(|D|P)',text)
    return emoticons
sample_text = " I loved this movie :) but it was rather sad :( "
find_emo(sample_text)
# output
[':)', ':(']

5.Sklearn 管道

正如您在上面看到的,文本预处理很少是一刀切的,大多数真实世界的应用程序要求我们根据文本源和我们计划做的进一步分析使用不同的预处理模块。

有许多方法可以创建这样的自定义管道,但一个简单的选择是使用 sklearn 管道,它允许我们顺序组装几个不同的步骤,唯一的要求是中间步骤应该已经实现了 fit 和 transform 方法,并且最终的估计器至少有一个 fit 方法。

现在,这对于许多小函数来说可能是一个过于繁重的要求,比如预处理文本的函数;但幸运的是,sklearn 还附带了一个 functionTransformer,它允许我们将任意函数包装成一个 sklearn 兼容的函数。不过有一个问题:函数不应该直接对对象进行操作,而是将它们包装成列表、pandas 系列或 Numpy 数组。不过这并不是主要的障碍,您可以创建一个助手函数,将输出打包成一个列表理解。

# Adapted from [https://ryan-cranfill.github.io/sentiment-pipeline-sklearn-3/](https://ryan-cranfill.github.io/sentiment-pipeline-sklearn-3/) from sklearn.preprocessing import FunctionTransformerdef pipelinize(function, active=True):
    def list_comprehend_a_function(list_or_series, active=True):
        if active:
            return [function(i) for i in list_or_series]
        else: # if it's not active, just pass it right back
            return list_or_series
    return FunctionTransformer(list_comprehend_a_function, validate=False, kw_args={'active':active})

最后一步,让我们构建一个 sklearn 管道,它使用 NLTK 的 w_tokenizer 函数和 2.1 节中的 stemmer_snowball,并使用第 4 节中的预处理函数。

from sklearn.pipeline import Pipelineestimators = [('tokenizer', pipelinize(w_tokenizer)), ('stemmer', pipelinize(stemmer_snowball)),('stopwordremoval', pipelinize(remove_stopwords)), ('preprocessor', pipelinize(preprocessor_final))]pipe = Pipeline(estimators)

pipe.transform([sample_text])Output:[['gemini',
  'man',
  'review',
  'doubl',
  'smith',
  'cant',
  'save',
  'hackney',
  'spi',
  'flick',
  'usa',
  'rain',
  'rain',
  'ran']]

您可以很容易地更改上面的管道来使用如下所示的 SpaCy 函数。请注意,第 3 节中介绍的标记化函数(spacy_tokenizer_lemmatizer)返回不带任何停用词的标记化标记,因此这些步骤在我们的管道中是不必要的,我们可以直接运行预处理器。

spacy_estimators = [('tokenizer', pipelinize(spacy_tokenizer_lemmatizer)), ('preprocessor', pipelinize(preprocessor_final))]
spacy_pipe = Pipeline(spacy_estimators)
spacy_pipe.transform([sample_text])# Output:[['gemini',
  'man',
  'review',
  'double',
  'will',
  'smith',
  'not',
  'save',
  'hackneyed',
  'spy',
  'flick',
  'usa',
  'rain',
  'rain',
  'run']]

我希望我已经展示了使用 Sklearn 管道和基于空间的预处理工作流来有效地执行几乎所有 NLP 任务的预处理的巨大优势。

在 Python 中设置数据科学和机器学习功能

原文:https://towardsdatascience.com/setting-up-your-data-science-machine-learning-capability-in-python-c16a9099d3fc?source=collection_archive---------55-----------------------

对所涉及的隐藏和明显因素的概述

为什么是 Python?

Python 是数据科学&机器学习(DSML) 中明显胜出的编程语言。凭借其丰富和动态的开源软件生态系统,Python 在可采用性、可靠性和功能性方面无与伦比。如果你不同意这个前提,那么请快速绕道这里

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

Python 拥有超过 800 万用户(SlashData)。照片由查尔斯德鲁维奥在 Unsplash。

你数据科学的目的&机器学习能力

作为 DSML 团队的领导者,你的目标是为企业带来最佳投资回报。企业通过人员和资源预算投资于 DSML 功能,而您的工作是尽可能实现最大的业务影响。

您的业务影响可以通过多种方式来衡量。最高级的目标是成本优化、风险优化和收入增长。您可以关注每个目标中的各种具体指标,如客户获取成本优化、流失预测、欺诈检测、患者健康结果或个性化产品建议。

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

来源:土星云

任何偏离目标设定、预算和执行的事情都会降低你的团队所能实现的投资回报率。引用一位自我提升大师的话,注意力到哪里,能量就流向哪里。

租赁与拥有

这是经典的购买与构建讨论的重新框架,在许多 DSML 平台提供“现收现付”定价的背景下,很像亚马逊网络服务。我觉得有必要改变讨论的措辞,因为不像“购买”,不管你是否使用它,你都要支付固定的费用;“租用”意味着你只在使用时付费。这对最终用户来说更方便。

当您开始用 Python 建立 DSML 平台时,您可以拥有内部架构,也可以从供应商那里租用。我将使用 Saturn Cloud 作为主要供应商,因为我预计会有所偏向。

拥有的隐性成本

拥有 DSML 功能会带来固有的“范围蔓延”问题,这些问题从一开始就不明显。很容易期望拥有将您最喜欢的开源工具集成在一起的能力:Jupyter、Dask 或 PySpark、Prefect 或 Airflow、Kubernetes、NVIDIA RAPIDS、Bokeh、Plotly、Streamlit 等。

以下是我们从以前试图拥有 DSML 功能的客户那里听到的“范围蔓延”交易破坏者的简短列表:

  • 为 AWS、Azure、GCP 或内部部署设置和管理云托管和支持
  • 确保代码和数据的企业级安全性;如果你在一个高度管制的行业,负担会更重
  • 配置:在适当的基础设施上执行工作,为手头的任务公开适当的资源和库
  • 监控,例如确保最短的停机时间
  • 用户管理:管理员工对系统和信息的访问
  • 访问控制:控制用户在应用程序中能做什么和能看到什么
  • 管理现有 OSS 包版本和集成新的 OSS 包
  • 对最终用户的支持;管理与开放源码软件专家的磋商

每一个要点都列出了一系列可能并不吸引人的额外负担。事实上,其中一些是如此痛苦,以至于我们的土星云联合创始人兼 CTO Hugo Shi 在 Kubernetes 上写了一篇文章,只是为了发泄。

明显的拥有成本

以下是您在构建 DSML 功能时需要考虑的拥有成本构成。

示例 1:拥有导致更高的总成本

你的团队的任务是开发一个客户流失模型。如果您能够预测客户流失,销售人员就可以采取主动措施来留住更多客户。你的公司年销售额为 1 亿美元,有机会将流失率从 10%降低到 5%,或者每年减少 500 万美元。为了简单起见,我们假设你是一家毛利率为 100%的 SaaS 公司。

图 1: 租赁=自动化开发

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

假设 FTE 成本为 15 万美元

考虑到自动化开发运维的成本节约,租赁场景由于总支出减少而产生更高的投资回报率。

例子 2:拥有带来高机会成本

现在,让我们假设在这两个场景中,您的团队有 9 名全职员工,但是在租赁场景中,所有 9 人都致力于数据科学和 ML。一个 9 名全职员工的团队可以比一个 6 名全职员工的团队多生产 50%的产品,因此,有了多余的产能,你就可以围绕客户个性化开展第二个项目。让我们假设这个项目可以在第一年提高 5%的软件销售额。

**图二:**租借= 力量倍增

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

假设 FTE 成本为 15 万美元

请注意,在租赁场景中,您实际上花费了更多的钱,但是在团队规模相同的情况下,您可以获得更高的 ROI。通过将人力支出从 DevOps 转移到 Data Science & ML,您的团队效率更高,并且可以在相同的时间内处理更多积极的 ROI 项目。自有方案具有内在的机会成本,这在租赁方案中是不存在的。

在这两种情况下,租赁的投资回报都超过了拥有 DSML 功能的投资回报。还值得注意的是,云计算定价在过去十年中大幅下降,而数据科学、机器学习和 DevOps 的劳动力成本却大幅上升。

前车之鉴

不是每个组织都需要租用 DSML 建筑。但是,在你拥有自己的房子之前先租出去更容易,风险也更小。

“先租后买”

在过去的几年里,我和数百名 DSML 领导人交谈过。他们中的很大一部分人带领他们的团队在没有租赁的情况下拥有 DSML 建筑,也没有评估拥有建筑的明显和隐藏的成本。太多时候,他们半途而废,意识到租房更便宜、更容易、更灵活,并让他们保持专注。此外,团队中的许多开发人员预计他们将只是构建架构前期的一部分,但后来不得不担任全职支持角色,花在他们加入公司的有趣科学项目上的时间要少得多!

现在是人家的问题了

…这是您在租赁该体系结构时会说的话。是的,所有开源工具的集成、开源版本管理、围绕数据和代码构建最先进的安全性、构建企业管理架构、云托管、支持服务、开源专家咨询——跟我一起说——👏有人👏else 的👏问题!

不仅仅是卸载,你还可以从一个致力于此的团队那里获得很多好处。

  • 更好的性能:Saturn 的工具提供了比 Apache Spark、Pandas 和其他数据处理工具快 100 倍的运行时间
  • 即时交付:您订阅后,它会立即出现在您的虚拟私有云上
  • 专家支持:Python OSS 的主要成员可以为您提供支持。
  • 流畅的体验:即时集成和更新开源工具
  • 原生集成:亚马逊网络服务、雪花和其他云服务
  • 无缝团队协作工具:交互式和协作式 DSML 功能
  • 自动化:数据管道和工作流程编排
  • 漂亮:直观、先进的用户界面
  • 灵活性:现收现付,随时取消

总结:你的蟒 DSML 能力

**所有权模式:**团队和预算分为利用 DSML 能力创造价值和支持 DSML 能力。

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

来源:土星云

租用模式:整个团队和预算都朝着使用租用的 DSML 能力来创造价值的方向进行了精简。

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

来源:土星云

您的 DSML 功能的目的是最大化其投资回报率。您希望将尽可能多的预算用于该目标:终点是否是更快的股票市场交易决策、推荐新的营销投资、运行更多的药物发现模型,等等。

我的建议是:

  • 选择 Python 是因为它无与伦比的开源生态系统
  • 先租后买

祝你好运,如果你对土星云感到好奇,请在这里查看我们的

设置您的数据科学工作台

原文:https://towardsdatascience.com/setting-up-your-data-science-work-bench-4a8d3a28205c?source=collection_archive---------12-----------------------

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

Unsplash 上拍摄的 ThisisEngineering RAEng

让您的计算机准备好学习数据科学

在我的上一篇帖子中,我介绍了数据科学工作所需的核心工具。在这篇文章中,我将一步一步地指导您设置计算机来执行典型的数据科学和机器学习任务。

我个人在 mac 上工作,所以大部分设置指令都是为这个操作系统设置的。

安装 python

正如我在上一篇文章中所讨论的,python 现在是数据科学从业者最流行的编程语言。因此,配置计算机的第一步是安装 python。

要在您的计算机上安装和配置 python,您需要使用终端。如果你还没有设置,你需要下载并安装 Xcode (苹果的集成开发环境)。

Mac OS X 已经安装了 python 2.7。然而,对于许多数据科学项目,您需要能够使用各种不同的 python 版本。

有许多工具可以用来安装和管理不同的 python 版本,但是 pyenv 可能是最简单易用的工具之一。Pyenv 支持在用户和项目级别管理 python 版本。

要安装 pyenv,你需要先安装 homebrew ,这是一个 Mac 的软件包管理器。一旦你有了这个,你可以用这个命令安装 pyenv(对于 Windows 安装,参见这些指令)。

brew install pyenv

然后,您需要将 pyenv 初始化器添加到您的 shell 启动脚本中,并通过运行以下代码来重新加载 bash_profile。

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

要查看系统上安装的 python 版本,请运行以下命令。

pyenv install --list

要安装 python 的新版本,只需运行。

pyenv install <python-version>#e.g.pyenv install python-3.7

安装 python 包

Pip 是安装 python 包的首选安装程序,默认情况下包含在 python 3.4 及更高版本中。您将需要它来安装任何开源 python 库。

要使用 pip 安装软件包,只需运行以下命令。

pip install <package>#e.g.pip install pandas

虚拟环境

不同的 python 项目将需要不同的依赖项和 python 版本。因此,为每个项目创建隔离的、可重复的环境是非常重要的。虚拟环境实现了这一点。

有很多工具可以创建 python 虚拟环境,但我个人使用的是 pipenv

Pipenv 可以用自制软件安装。

brew install pipenv

使用特定版本的 python 创建新环境。创建一个新目录,然后从新目录运行以下命令。

mkdir pip-test
cd pip-test
pipenv --python 3.7

要激活环境运行pipenv-shell,您现在将进入一个名为“pip-test”的新环境。

如果我们检查目录的内容,您将看到 pipenv 已经创建了一个名为Pipfile的新文件。这是需求文件的 pipenv 等价物,包含环境中使用的所有包和版本。

要将软件包安装到 pipenv 环境中,只需运行以下命令。

pipenv install pandas

任何安装的软件包都将反映在 pip 文件中,这意味着可以使用该文件轻松地重新创建环境。

Jupyter 笔记本

Jupyter Notebooks 是一款基于网络的代码编写应用。它们特别适合数据科学任务,因为它们使您能够直接根据您的代码呈现文档、图表、表格和图表。这为开发数据科学项目创造了一个高度互动和可共享的平台。

要安装 Jupyter 笔记本,只需运行pip install notebook,或者如果你正在使用 pipenv shell pipenv install notebook

由于这是一个基于 web 的应用程序,您需要启动笔记本服务器来开始编写代码。您可以通过运行以下命令来完成此操作。

jupyter notebook

这将在您的网络浏览器中打开应用程序,默认网址是http://127.0.0.1:8888

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

在浏览器中运行的笔记本应用程序

Jupyter 笔记本电脑能够在虚拟环境中工作,因此您可以在正确的项目环境中运行项目笔记本电脑。要使 pipenv 环境在 web 应用程序中可用,您需要运行以下命令。

python -m ipykernel install --user --name myenv --display-name "Python (myenv)"#e.g.python -m ipykernel install --user --name jup-test --display-name "Python (jup-test)"

如果您现在重启 web 应用程序并到达new,您将看到您的 pipenv 环境可用。选择此项将启动一个新的笔记本,它将运行您在 pipenv shell 中设置的所有依赖项。

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

运行在 Python(jup-test)环境中的笔记本

Python IDE

Jupyter 笔记本非常适合探索性的数据科学项目和编写只使用一次的代码。然而,为了提高效率,将常用的代码段编写到可以跨项目导入和使用的模块内的函数中是一个好主意(这被称为模块化生成您的代码)。

笔记本不是特别适合写模块。对于这个任务,最好使用 IDE(集成开发环境)。有很多可用的,但我个人使用 Pycharm。使用 IDE 的好处是它们包含了内置的工具,比如 Github 集成和单元测试。

Pycharm 既有付费专业版,也有免费社区版。要下载并安装 Pycharm,请访问此网站,并按照安装说明进行操作。

版本控制

您在数据科学项目中需要使用的最后一个工具是 Github。这是版本控制最常用的工具。版本控制本质上涉及到在线存储项目的版本。然后从分支本地执行开发。分支本质上是项目的一个副本,可以在其中进行不会影响主版本的更改。

一旦在本地进行了更改,您可以将更改推送到 Github,它们可以在一个称为“拉”请求的受控过程中合并到主分支中。

使用 Github 可以让你追踪项目的变化。在将它们集成到最终版本之前,您还可以进行更改并测试它们的影响。Github 还支持与他人的协作,因为他们可以安全地进行更改,而不会影响主分支。

要使用 Github,你首先需要按照这些指令安装它。然后你需要访问 Github 网站并创建一个账户。

拥有帐户后,您可以创建新的存储库。

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

创建新的存储库

要在本地处理项目,您需要克隆存储库。

cd my-directory
git clone [https://github.com/rebeccavickery/my-repository.git](https://github.com/rebeccavickery/my-repository.git)

本文是设置您的计算机以准备从事数据科学项目的指南。我列出的许多工具都是我个人喜欢的工具。然而,在大多数情况下,有几种选择。探索不同的选项以找到最适合您的工作方式和项目是值得的。

感谢阅读!

我每月都会发一份简讯,如果你想加入,请点击此链接注册。期待成为您学习旅程的一部分!

为深度学习设置您的 PC/工作站:Tensorflow 和 py torch-Windows

原文:https://towardsdatascience.com/setting-up-your-pc-workstation-for-deep-learning-tensorflow-and-pytorch-windows-9099b96035cb?source=collection_archive---------1-----------------------

到目前为止,配置新的(或不太新的)装备来处理一些神经元的最简单的方法。

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

作者图片

本文将指导您在 windows 机器上设置深度学习所需的工具和安装驱动程序的整个过程。令人惊讶的是,即使是建立深度学习的环境也不是那么容易。在这个过程中,你打碎东西的几率其实很高。我经历过多次从零开始设置深度学习所需的一切,尽管是在一个不同的、对程序员更友好的 Linux 操作系统中。(接下来是相关指南)

目前很少有文章解释 Windows 的相同过程。所以我决定试一试。最近坏了几次事,终于找到了妥善解决这个问题的办法。这种方法不仅能成功设置,而且比我见过的大多数其他方法都要简单得多。

本教程面向谁,更重要的是为什么是 Windows?

相信我,我也不太喜欢在 Windows 上玩 CUDA。但是,作为开发人员,更多的时候,我们最终会在笔记本电脑或功能强大的设备上工作,这些设备不仅用于深度学习或编程。在这种情况下,你无法完全摆脱 Windows。如果你是这些人中的一员,或者只是一个拥有 Windows 机器的普通读者,对 Linux 不太熟悉,那么这篇指南就是为你准备的。

下面是我们将在本文中涉及的一些内容,

  • 最低硬件和软件要求
  • 安装 Python 和所需工具
  • 一些 GPU 术语
  • 安装 GPU 驱动程序
  • 安装 Tensorflow (CPU 和 GPU)
  • 安装 PyTorch (CPU 和 GPU)
  • 验证您的安装
  • 我的个人经验和替代方法
  • 结论

最低硬件和软件要求

如果你打算设置 GPU 支持,你肯定需要一个 Nvidia GPU。

开发深度学习应用程序涉及训练神经网络,这些网络天生就需要计算。它本质上也越来越有利于并行化,这让我们越来越倾向于擅长并行化的 GPU。这就是 GPU 派上用场的原因,绝大多数深度学习框架都支持开箱即用的 GPU 加速,因此开发人员和研究人员可以在几分钟内提高工作效率,而无需进行任何可能会阻碍他们的 GPU 编程。

这些框架中的大多数(只)支持称为 CUDA 的东西——它只能与 Nvidia GPUs 一起工作,这就是为什么你特别需要 Nvidia 的一个。然而,在 AMD 的卡上也不是不可能,更多信息请访问这一页

如果你不打算安装 GPU,没问题,你仍然可以跟着做。

但当然,你应该有一个像样的 CPU,RAM 和存储,以便能够进行一些深度学习。

我的硬件——我在我的个人笔记本电脑上进行设置,配置如下:

CPU —睿频上 AMD 锐龙 7 4800HS 8C -16T@ 4.2GHz。

内存— 16 GB DDR4 内存,3200MHz

**GPU—**Nvidia GeForce RTX 2060 Max-Q @ 6GB gddr 6 内存

对于任何有兴趣了解配置的人,我推荐一个至少 4 核、2.6GHz 的像样的 CPU,至少 16GB 的 RAM 和至少 6GB VRAM 的 Nvidia GPU。

对于这个教程,你显然需要在 Windows 10 上。我假设对 Python 包和环境有一些基本的了解。尽管如此,一切都会得到解释。

建议您使用 64 位 Windows 10 的最新稳定版本。

本教程还假设您在新安装的操作系统上开始安装过程。如果你真的知道你在做什么,你仍然可以跟着做。

安装 Python 和所需工具

当然,第一步是安装 Python。我推荐通过 Mini-Conda 安装 Python。对于绝对初学者,我简单说明一下原因。

Conda 是一个软件包管理器,可以帮助你安装、管理和删除所有不同的软件包。但这不是唯一的一个,还有 pip——python 的默认包管理器,我非常喜欢。这里我们使用 conda,因为它在 Windows 中设置起来更加直接和简单。

Anaconda 和 Mini-Conda 是软件发行版,预装了一些非常有用的 Data Science/ML 包来节省您的时间。Anaconda 包含 150 多个有助于进行数据科学和机器学习的包,其中包括您可能需要的一切,而 Mini-Conda 只附带了少数真正必要的工具和包。

我推荐使用 Mini-Conda,因为我喜欢(几乎)完全控制安装什么软件包。保持事物的清淡确实不是一件坏事。它可以为你节省一些存储空间,当然,你也不会有 50 多个你可能从来没有用过的包。

要安装迷你康达,请点击下面的链接,https://docs.conda.io/en/latest/miniconda.html

下载 python 3 Windows 64 位安装程序,并像安装任何其他 Windows 软件一样安装它。确保勾选询问您是否希望将 conda 和 python 添加到路径的复选框。

现在,您可以通过运行以下命令来检查是否安装了 python 和 conda。它们应该显示版本号,否则您可能需要正确安装 mini-conda 并将其添加到 PATH 中。

> python --version
Python 3.8.3> conda --version
conda 4.8.4

下一步是安装 jupyter-notebook ,在你的命令行界面粘贴以下命令,

> conda install -y jupyter

您可以通过运行 jupyter 笔记本来验证您的安装,这将在浏览器上为您打开 jupyter 笔记本。

> jupyter notebook

设置您的开发环境

这是很多人经常错过的重要一步。使用包含所有已知包的东西(如 Anaconda)是可以理解的,但要处理您的项目并实际构建东西,您可能需要一个特定于该项目或您所做工作性质的定制环境。使用专用虚拟环境的另一个巨大优势是,您可以隔离您的软件包与全局设置的交互,这意味着如果您在您的环境中弄乱了软件包,您可以随时丢弃它,而不会影响任何全局软件包。

它还可以让您灵活地创建任何 python 版本的环境。所以你可以暂时远离所有新的不稳定的东西,以后基于支持进行升级。

创建一个 conda 环境相当简单,为了便于解释,我用 tensorflow 这个名字来创建它,你可以把它设置成你想要的任何值。我打算用 python 3.7,因为我知道 Tensorflow 很好地支持它。你可以通过他们的文档来验证这一点。顺便说一下,我们将在这里安装 Tensorflow 并创建一个类似的名为 torch 的环境,PyTorch 将安装在这里。

> conda create --name tensorflow python=3.7

创建环境后,您可以使用下面的命令进入,这里 tensorflow 只是我们之前给这个环境起的名字。

> conda activate tensorflow

一旦你进入这个环境,你就能在提示符的左边看到类似这样的东西

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

如果您碰巧在 Powershell 上没有看到这一点,您可能希望事先在 Powershell 中只初始化 conda 一次,

> conda init powershell

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

之后,当您不在任何环境中时,您可能会在左侧看到(base ),如上图所示。在此之后,每当您输入一个 env 时,您都会看到 env 名称。

此外,您还可以在这个环境中安装 nb 工具,并将其与我们之前安装的 jupyter notebook 链接

> conda install nb_conda

要使用 Jupyter 笔记本注册环境,请在不换行的情况下运行该命令,

> python -m ipykernel install --user --name tensorflow --display-name “Python 3.7 (tensorflow)”

要退出康达环境…

> conda deactivate

现在按照相同的步骤创建一个名为 torch 的环境

> conda create --name torch python=3.7> conda activate torch> conda install nb_conda> python -m ipykernel install --user --name torch --display-name “Python 3.7 (torch)”

如果环境设置成功,您将能够在列出环境时看到这一点,

> conda env list

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

要验证各个包是否实际安装在每个环境中,您可以进入该环境并执行conda list,这将显示该环境中安装的所有包的列表。

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

如果清单很长,不要担心。Conda 已经处理了基本的东西和依赖关系

一些 GPU 术语

在开始安装一些与 GPU 相关的东西之前,有必要了解什么是什么以及为什么你需要这些东西。

GPU 驱动— 顾名思义 GPU 驱动是一个软件,它允许你的操作系统及其程序使用 GPU 硬件。游戏玩家当然更清楚这一点,如果你喜欢游戏,那么你可能需要更新这个软件以获得最佳体验。

CUDA — 简单来说**,**它是由 Nvidia 开发的一个编程接口层,可以访问 GPU 的指令集及其并行计算单元。

自 2010 年代末的 GeForce 8 系列 GPU 以来,几乎所有的 GPU 都支持 CUDA。

要了解更多信息,您可以访问 Nvidia 网站的这个页面,了解您的 GPU 是否支持 CUDA。

例如,如果你有一个消费级 GPU,比如 GeForce 系列或 Titan 系列的产品,你可以在下图中看到支持和不支持的内容,

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

截至 2020 年 9 月(这只是名单的上半部分)

如果你有一台笔记本电脑,你应该检查笔记本产品列表,如果你有一个成熟的桌面 GPU,你显然必须寻找左手边的其他阵容。

如前所述,我有一辆 RTX 2060 Max-Q,列于右侧。顺便说一句,你不必担心你的卡的标题与网页中列出的内容完全匹配,Max-Q 和 Super 都只是共享相同底层架构的设计,只是在 TDP,CUDA 核心数量和张量核心数量上有所不同。

例如,如果你拥有一辆 RTX 2080 Super 或 2080 Max-Q,甚至是一辆 2080 Super Max-Q——如果你能在列表中找到 RTX 2080,那完全没问题。但是,如果您拥有一台 RTX 2080Ti 或末尾带有 Ti 的产品,这仅仅意味着您拥有该特定系列的最高端版本,因此您很可能会发现它在 VRAM 和 CUDA 数量以及张量内核方面具有更大的能力。

截至 2020 年 9 月,

要使用 Tensorflow 2.0,您的卡的计算能力必须高于 3.5,但为了获得更好的体验,建议您至少拥有 6。Tensorflow 2.0 还需要 CUDA 版本 10,这反过来要求您的驱动程序版本为 418.x 或更高。

PyTorch 要求你的 CUDA 版本至少是 9.2 或更高,它也支持 10.1 和 10.2。计算能力必须至少高于 3.0

CuDNN — CUDA 深度神经网络库(CuDNN)是一个 GPU 加速的深度神经网络原语库。cuDNN 为标准例程提供了高度优化的实现,例如前向和后向卷积、池化、规范化和激活层。

(可选)TensorRT—NVIDIA TensorRT是一款用于高性能深度学习推理的 SDK。它包括一个深度学习推理优化器和运行时,为深度学习推理应用程序提供低延迟和高吞吐量。

安装 GPU 驱动程序

在做任何事情之前,你需要确定你正在使用的 GPU。它必须是一个支持 CUDA 的 GPU。

如果您还没有安装驱动程序,您可能需要运行 Windows Update,它会自动处理有用软件的安装,如 Nvidia 控制面板。这将有助于您了解更多关于 GPU 的信息,以及一些与本文无关的设置。

如果您有 Nvidia 控制面板,您可以从开始菜单打开它,或者右键单击桌面并选择 Nvidia 控制面板。

一旦你打开它,你可以通过点击帮助->系统信息来验证 GPU 驱动程序的版本。驱动程序版本将列在详细信息窗口的顶部。

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

GIF 流程图

如上面的 GIF 所示,我的驱动版本是 456.x,远远高于 418.x 的最低要求,所以我不用担心安装任何新的驱动程序。

对于你来说可能不是这样,要安装最新的驱动程序,你可以去这个网站并输入关于你的 GPU 的正确信息来下载所需的正确驱动程序。

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

下载 Nvidia 驱动程序— GIF

下载驱动程序后,运行安装程序并选择快速安装以获得更轻松的体验。安装驱动程序后,您可以使用 Nvidia 控制面板进行验证。

另一种安装驱动程序的方法是使用 Nvidia 的 GeForce Experience 应用程序,如果你拥有一台原本用于游戏的消费类计算机。这个过程非常简单。

这一步是可选的。如果您已经按照上述步骤安装了驱动程序,或者您的不是游戏机,您可以安全地忽略这一点。

页面下载申请。按照安装程序在您的机器上安装应用程序。完成后,您可以打开应用程序并转到驱动程序选项卡,检查更新并安装新的驱动程序。您也可以在应用程序中验证驱动程序版本。

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

GeForce 体验演示

既然安装驱动程序最重要的部分已经完成,你可以手动安装 CUDA toolkit,或者让 conda 来处理 TF 或 PyTorch 安装期间的所有事情,我强烈推荐这样做。

如果你决定手动安装,你可以从这个网站获得安装程序,并按照那里的说明进行操作。

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

安装 CUDA 工具包

一旦安装了 CUDA 工具包,就可以通过在 cmd 或 Powershell 中运行nvidia-smi 命令来验证它。

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

nvidia-smi 输出

安装 Tensorflow

现在终于到了本教程的关键。如果你已经做了前面提到的所有事情,这一步将会非常简单。

我们将通过康达安装 Tensorflow 2.x。

进入我们之前创建的张量流环境并跟随它是非常重要的,

> conda activate tensorflow

如果您计划在 GPU 支持下安装,请运行以下命令

> conda install -c anaconda tensorflow-gpu

这将通过 anaconda 通道安装 TensorFlow GPU。使用 conda 而不是 pip 安装 TensorFlow 的一个主要好处是 conda 包管理系统。当使用 conda 安装 TensorFlow 时,conda 也会安装软件包的所有必需和兼容的依赖项。这是自动完成的,用户不需要通过系统软件包管理器或其他方式安装任何额外的软件。

这还包括 Tensorflow 或 PyTorch 所需的 CUDA 工具包的正确版本,这使得该过程更加轻松。

安装的 CUDA 工具包仅在我们安装 tensorflow GPU 的环境中可见,这是一个巨大的优势。想象一下这个版本的 CUDA 工具包搞乱了你的全球系统的 CUDA 版本,PyTorch 甚至需要一个完全不同的 CUDA 版本才能运行。这是使用虚拟环境的最大优势。它提供了所有虚拟环境之间的完全隔离。

如果一切顺利,你不会在安装过程中得到任何错误信息。

要验证 tensorflow 和所需的包是否已成功安装,您可以执行conda list,它会显示已安装包的列表,您将在其中找到 tensorflow 相关包以及 CUDA 工具包。

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

您可以打开 Python 提示符并验证是否安装了 tensorflow,

>>> import tensorflow as tf
>>> tf.__version__
'2.1.0'

如果你拿回了版本号,恭喜你!你做到了!Tensorflow 安装成功。

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

在 Python 提示符下验证 TF 安装

在 Python 提示符下使用 Tensorflow 时,您可能会得到这样的消息——“打开了动态库”,这并不意味着什么不好的事情,它只是一个日志消息,是 tf 能够打开这些库的好迹象。

稍后将介绍如何验证 GPU 上的安装。

要安装仅用于 CPU 的 Tensorflow,您只需对安装命令进行简单更改

> conda install -c anaconda tensorflow

这将在没有 CUDA 工具包和 GPU 支持的情况下安装 Tensorflow。

安装 PyTorch

既然我们已经介绍了如何安装 Tensorflow,安装 PyTorch 也没什么不同。康达让整个过程出奇的简单。

首先,你应该进入我们为 torch 创建的 conda 环境。

> conda activate torch

如果您想安装支持 CUDA 的 PyTorch,请使用下面的命令,

> conda install pytorch torchvision cudatoolkit -c pytorch

上面的命令将通过 Conda 中的 PyTorch 通道安装带有兼容 CUDA 工具包的 PyTorch。

要安装仅用于 CPU 的 PyTorch,可以从上面的命令中删除 cudatookit

> conda install pytorch torchvision cpuonly -c pytorch

这将在没有任何 CUDA 支持的情况下安装 PyTorch。

如前所述,您可以使用> conda list来验证安装。要在 Python 上验证它,请使用下面几行代码

>>> import torch
>>> torch.__version__
'1.6.0'

如果它返回版本号,您就完成了 PyTorch 的安装。

验证您的安装

你可能认为一切都是正确的,并开始使用这些工具,但突然当你这样做时,你会开始看到一些致命的错误。如果您碰巧遇到这种情况,可能是因为您的机器和您的设置方式的原因,在实际了解更多与您的情况相关的信息之前,我无法在此一一介绍。

因此,我提供了几个笔记本,至少可以帮助您更好地验证安装,并确保 TF 或 PyTorch 使用了预期的硬件。

你可以在这个资源库dl-setup-win 文件夹下找到笔记本。克隆笔记本和运行单元取决于您。如果它显示正确的信息,那么你就可以开始了。

我在下面嵌入了相同笔记本的要点版本。

**注意:**如果没有从正确的环境启动 jupyter 笔记本,您可能会遇到一些错误。例如,如果您想使用 tensorflow 环境,您可以从 base env 启动笔记本,并将您的内核更改为 tensorflow env,但我在执行此操作时遇到了错误。因此,要运行 TF,请从 tensorflow 环境启动您的笔记本,要运行 PyTorch,请从 Torch 环境启动您的笔记本,而不是从 base 或其他地方。

如果你知道这个问题的解决方案,请在下面的评论中告诉我。

我的个人经验和替代方法

我一直在使用这种设置来处理一些轻度的深度学习工作负载,对于这些工作负载,我的本地硬件已经足够了。已经过了几个星期了,到目前为止,在这个设置中,一切都按预期运行。然而,我以前试过其他几种方法,结果都很糟糕。

我尝试的一种方法是这里的,它涉及到让 WSL 内部的 CUDA 和 Nvidia 驱动程序利用 GPU 进行深度学习。目前,这仍处于预览阶段,但一旦正式发布,这将是 DL 从业者真正的游戏规则改变者。它汇集了令人惊叹的 WSL2 和 CUDA/GPU 驱动程序。

但是和往常一样,这里有一个陷阱。您必须是 Windows Insider 计划的成员才能使用此功能。当然,从我的经验来看,内部预览版也有很多问题。对我来说,它有时会导致所有 Windows 应用程序完全失败,GSOD(绿屏死机)错误,无法正常启动,以及驱动程序故障等等。我个人不喜欢处在一个不稳定的环境中,所以我决定一劳永逸地选择退出只是时间问题。

你仍然可以使用带有所有这些特性的预览版,没有任何问题,只是我对预览版的体验很糟糕,不推荐任何人。

另一种选择是完全放弃 Windows,选择基于 Linux 的操作系统,这样事情会顺利得多。只是你没有像在 Windows 中那样的漂亮的 GUI 安装程序来处理所有的事情。

在我的下一篇文章中,我将讨论如何在没有 conda 的情况下,在 Linux 中从头开始设置您的深度学习环境。

关于数据科学和机器学习的其他包的想法:

在这篇文章中,我只介绍了 Tensorflow、PyTorch 和 Jupyter 工具的安装。您可能需要安装工作流程所需的所有其他组件。

结论

我希望这篇文章对你有用。希望这有助于你毫无问题地建立你的深度学习环境。如果你遇到任何问题,我强烈建议你去 StackOverflow 和 Nvidia 论坛看看。还有关于 PyTorch 和 Tensorflow GitHub 库的讨论。

我也会在未来写更多的教程和安装指南。你可以在 Medium 上关注我,不会错过任何事情。你也可以跟着我,

推特——LinkedIn——GitHub——Kaggle

非常感谢一路阅读。祝您愉快!

通过行为细分让您的企业走向成功

原文:https://towardsdatascience.com/setting-your-business-up-for-success-with-behaviour-segmentation-74cf675ef18b?source=collection_archive---------36-----------------------

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

查尔斯·德鲁维奥在 Unsplash 上拍摄的照片

数据是任何组织的宝贵资产之一。它真的有可能成为下一个石油。然而,拥有大量数据并不总是意味着商业成功。拥有相关数据并知道如何使用它才是有效的。

大多数企业的增长都依赖于客户。人们可能会认为,企业将围绕与客户相关的数据制定计划和战略。与客户相关的数据是企业成功的关键。令人惊讶的是,一些商业目标和指标不包括客户行为。他们考虑的是其他不同领域的增长,而忽略了一个决定他们业务成败的因素。这使得团队将精力花费在收效甚微的活动上。因此,管理层无法实现其目标。

在本文中,我们探讨了客户行为细分的重要性。我们讨论易于遵循的策略,并探索行为细分系统。我们还研究了行为细分如何推动业务增长和成功。

关键外卖

阅读本文后,您将能够:

定义你最初的 6 个 KPI,这样你可以让你的团队保持专注。

了解如何确定是什么增加了你的活跃用户数量。

确定什么能帮助你的营销、产品和开发团队。

开始创建细分市场的具体内容,最大限度地发挥您的营销努力。

通过数据驱动的、针对具体细分市场的增长实验,搞清楚什么行得通,什么行不通。

帮助您摆脱盲目创建内容或活动。

“知道谁是你的客户固然很好,但知道他们的行为更好。” —乔恩·米勒。

定义问题

了解客户应该是每一个以客户为中心的企业的目标。企业应该在理解客户行为、动机因素和影响的基础上茁壮成长。这有助于企业了解客户如何与他们的产品互动。有了这些知识,企业可以影响客户的旅程,衡量成功,同时推动业务增长。适应客户观点的数据驱动方法可以影响客户旅程。

企业在收集和使用数据时会遇到一些挑战。一些组织拥有有效的数据收集策略和系统。在某些情况下,这些组织缺乏利用这些数据的工具。集成大量不同的数据成为这些组织的一个棘手问题。因此,他们坐在有用的数据,对他们来说是无用的。其他组织缺乏收集足够有用数据的方法。由于分散的努力,这两种情况都可能导致增长不佳。

增长和扩展依赖于许多不同的因素。一些组织关注除客户行为之外的一些因素。他们把顾客的行为留给机会和假设。对客户行为做出假设是一个巨大的谬误。以客户为中心的历史数据应该是衡量进展的工具。它应该有助于组织分析什么可行,什么不可行。这指导了组织的决策,例如,在新产品开发中。利用这类数据的组织往往会获得成功。

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

作者的不同客户群/图片

除了数据管理,还有目标和指标的问题。关键绩效指标(KPI)衡量组织或产品的表现。KPI 可以帮助组织确定其成就和衡量增长。这些指标依赖于有限的数据,这排除了客户行为的关键方面。一些组织关注这些和其他指标,忽视客户行为。这可能会导致注意力分散,让团队非常忙碌,但无法达成目标。此外,过多的 KPI 可能会将公司的关注点从以客户为中心的角度转移到团队管理的角度。

有很多关于客户细分和个性化的讨论。企业寻求增强客户体验的方法,同时以组织发展为目标。培养客户参与度和忠诚度并不是一件容易的事情。这些函数中的大多数都是数据相关的。

定义行为细分

根据 Jan Teichmann 的说法,“行为细分是指利用从客户行为中获得的洞察力,通过他们的行为而不是他们是谁来理解客户。他继续将行为细分定义为“一种客户细分形式,它基于客户在与公司/品牌互动或做出购买决定时表现出的行为模式。”(Designandtechnologydepartment,Bronhiggs and Follow,2020)。行为细分根据客户与组织的互动对客户进行分类。

Deasi (2020)在一篇名为 10 种了解客户的有效行为细分方法的文章中列出了 10 种行为细分方法,简要讨论如下:

  1. 购买行为

购买行为研究顾客购买时的各种趋势和行为。顾客决策和购买行为模式的动机有助于预测未来的购买。组织可以识别购买障碍,并努力消除购买障碍。

2。 谋取利益

处理理解顾客寻求什么好处。识别重要的好处对组织来说是很有帮助的。

3。 客户旅程阶段

客户可能处于与组织互动的不同阶段。这确保了更好的营销和产品定位。

4。 用法

客户使用产品的时间和互动的频率。

5。 时机或时机

客户最有可能购买或参与产品或服务的时间。星期几、一周的时间等。可能是一个重要的因素。了解购买之间的时间间隔也很重要。

6。 顾客满意度

顾客对产品的态度很大程度上反映了他们的满意度。满意率可以帮助组织更好地制作他们的销售和营销信息。知道满意的顾客和不满意的顾客是有用的。不满意的客户比他们提供的改进信息重要两倍。

7。 顾客忠诚度

当一个组织知道哪些客户是忠诚的,它就可以想办法确保他们保持忠诚。留住现有的忠诚客户比寻找新客户更有益。向这些客户提供特殊服务和特权可以让他们开心。组织还可以识别不忠诚的客户以及不忠诚背后的原因。

8。 利益

识别不同的客户兴趣可以帮助组织打造个性化的体验。此外,组织可以确定潜在的兴趣领域。

9。 参与度

这比使用水平要宽泛得多。它定义了客户对产品或服务的参与程度。

10。 用户状态

这是客户参与产品或服务的水平。例如,客户端可以被分类为非用户、预期用户、首次用户、常规用户或叛逃者/被搅动的用户。这样,就更容易确定是什么触发了客户端从一种用户状态转换到另一种用户状态。有了这些知识,组织可以更好地优化其工作和资源。

由于技术进步,处理大量不同的数据成为可能。。在 Jan Teichmann 的文章中, *AI 符合市场细分模型,*他指出

“在数据驱动的个性化兴起之前,大多数系统只能处理少量的细分市场,因此目标定位仅限于一般的受众细分。”

行为细分的好处

它帮助组织识别和认可客户行为。

组织可以了解客户如何与他们的业务或产品进行交互。

它提供了衡量成功和影响的准确指标。

通过将目标与关键结果分离,组织可以更好地管理进度。精简、规划和时间框架变得易于管理。

行为细分有助于阐明组织希望实现的目标。

它帮助 OKRs 适应现有的实践、敏捷流程和客户开发。

它有助于澄清和重新定义成功的衡量。

当团队清楚他们在做什么时,这就减少了计划周期。

它有助于激活和留住客户。

帮助组织关注重要的事情。

实施行为细分

规划用户生命周期是实施行为细分的关键组成部分。这不是一次性的过程。持续研究和将用户或客户行为重新应用到生命周期定义中是至关重要的。这些生命周期定义成为行为部分。大多数公司都犯了依赖人口统计细分的错误。他们错过了可能决定或破坏其产品增长的关键因素,或对其业务扩展至关重要的关键因素。平衡客户行为数据与其他商业目标并不总是容易的。然而,将 KPI 与客户旅程生命周期保持一致可能会带来业务成功。

一些工具有助于实现上述目标。旅程分析就是这些工具之一。旅程分析是帮助理解和转变客户旅程的解决方案。虽然它们有助于扩展,但对于客户的成功也至关重要。旅程分析帮助组织从多个维度看待客户。客户互动被视为旅程的终点,而不是一次性的互动。使用旅程分析,组织可以识别和预测客户行为。跟踪和分析客户如何在每一点上与组织互动变得更加容易。通过绘制全面的数据,组织可以监控和评估哪些可行,哪些不可行,从而重新设计客户旅程并改善客户体验。

先认识自己

准确的知识是无可替代的。知己知彼,百战不殆。”——李·艾柯卡

了解组织所处的阶段对于理解最重要的指标至关重要。这有助于直接关注重要的指标。

创业公司由于数据有限,尤其有几个未知数。这使得有效利用数据和分析变得困难。从本质上来说,初创企业的特点是高风险,并带有潜在的代价高昂的教训。因此,对初创公司来说,明确自己所处的阶段非常重要。这样,it 可以专注于最重要的指标。

以下是精益分析的 5 个阶段。

第一阶段: 感同身受

在这个阶段,组织已经确定了值得解决的问题。将会生产出一种产品或服务来解决这些确定的问题。在这个阶段,组织可能会密切关注对其产品或服务的反应。

第二阶段: 粘性

这是当一个产品被创造和使用的时候。有持续的客户参与和相当数量的活跃用户。

第三阶段: 病毒式

这是在一个工作产品被开发出来之后,并且这个企业正在逐渐扩大它的用户基础以及它的忠实客户。满意的顾客可能会开始传播消息,分享更多关于业务、产品或服务的信息。

第四阶段:收入

在这个阶段,企业的经济学将开始变得有意义。关注更多的是价值创造和收入增长。

第五阶段: 规模

这个阶段是关于业务增长的。企业必须建立足够大的客户群。该行业的经济学也开始变得有意义。它可以继续探索扩大规模的渠道。

了解组织所处的阶段有助于识别重要的度量标准。

减少关键绩效指标的数量

KPI 的数量应该最少。平均六个 KPI 被认为是理想的。然后,这六个 KPI 可以分解为由具体活动组成的团队目标。然后,这些活动被轻松地分配给每个团队成员。每个人都应该意识到自己的角色,以及如何衡量他们的投入和成功。

在这个阶段,如何衡量成功的明确定义是至关重要的。理解和规划用户的生命周期也很重要。特定事件定义了生命周期的每个阶段。这些共同构成了行为部分。开发生命周期图可以更容易地表达客户体验。

确保每个人都在同一页上

绘制出这些细分市场后,就可以建立 KPI 了。确保所有相关人员意见一致是很重要的。这样,每个人都可以根据目标和关键成果(okr)制定成长战略。当整个团队都致力于实现他们特定的 KPI 时,组织就可以享受巨大的成功。让团队参与制定最终实现六个 KPI 的任务可能会促进更大的合作。这样,所有团队都会知道他们在做什么,并满怀热情地将他们的活动集中在特定的 KPI 上。

设定总体目标

整体目标应该是团队/公司中每个人的焦点。所有团队成员都应该以此为目标。从人力资源、UX、发展等等,所有的角色都必须以某种方式导向这些目标。每个人的日常任务和个人目标都应该与这些目标保持一致。一些人称之为北极星度量(NSM)。一个应用程序的总体目标可以是:-持续增加活跃用户的数量。

制定并更新跟踪计划

跟踪计划列出了当前事件、它们的属性和定义。必须定期更新跟踪计划。需要设计的事件可以动态添加。下面的链接包含一个跟踪计划的例子。

追踪计划举例

识别核心事件

核心事件是那些与用户生命周期相关联并构成行为细分的事件。当访问软件商店登录页面时,核心事件可能如下所示。

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

图片作者作者

这些事件定义了从匿名领导到试用者的变化。正如成长型营销人员所说,“他们已经在漏斗中向下移动了一步。”

a.商店/登陆页面访问

有一个单独的登录页面是有益的,因为它可以提供一个更详细的线索是谁。另一方面,也很难获得和店内页面一样多的流量。此时,有一个可以重新定位的活动销售线索。

b. APP 下载

这是指用户从商店下载应用程序。鉴于消费者受到大量应用程序的轰炸,应用程序下载对组织来说是一个很好的机会。顾客会喜欢这些功能吗?他们会继续在他们的设备上安装它吗?

c. APP 安装

安装是下载后的一个事件,构成用户第一次打开应用程序。这是决定性的一点。根据他们的体验,客户可以决定使用或不使用该应用程序。

d.登记

注册是指某人注册他们的详细信息,并成为试用者。

这是怎么发生的?

一个用户开始作为一个匿名的线索。通常情况下,他们是通过登录页面来实现的。登录页面可能会有一个对应用程序或产品进行简要描述的页面,并且通常会有一个行动号召(CTA)。行动号召可能是注册一份时事通讯或注册成为用户。一旦他们注册成为用户,这就是一个黄金时刻。他们突然从一个匿名的领导者或者仅仅是一个网站访问者变成了一个试用者!该组织现在在注册过程中收集其详细信息。焦点可以指向在用户生命周期的不同阶段移动这个特定的客户端。这些用户的反馈也很有帮助。

设置事件组。

事件组是构成特定行为段或生命周期阶段的事件集合。例如,构成活动用户的事件有:

o 查看事件

o 编辑事件

o 导出事件

o 回顾事件

定义用户生命周期

一旦制定了事件、核心事件、事件组和活动用户事件,就该定义用户生命周期了!下面的图 3 展示了一个简单的用户生命周期。

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

图片由作者

1。 匿名线索

这可能是一个已经与该产品互动过的人,可能还没有决定使用它。这可以是网站访问者。

2。 试用者

试用者可以是实际下载了应用程序并正在使用它的人。

3。 用户

一个用户已经不再是试用者。他们可能已经购买了该应用程序的完整版本,并且正在使用它的大部分功能。

4.被搅动的用户

流失的用户是已经停止使用该企业的产品和/或服务的先前用户。

通常情况下,我们会停留在上述 4 个阶段。上述细分不足以区分不同的客户行为。例如,活跃的试验者和不活跃的试验者之间没有区别。

试用者可能是曾经下载过应用程序但发现它不合适的人。将他们转化为积极的试用者或用户并不容易。积极的试用者——下载了应用程序,觉得它很有趣的人。他们继续使用许多功能,并继续尝试使用锁定功能。他们可能会向支持部门询问问题,也可能会进行某种交易。出于某种原因,他们没有迁移到付费版本的应用程序上。他们没有进入生命周期的下一个阶段,也没有转化为用户。要了解走向市场、内容和数字营销、产品/功能开发战略和计划是否奏效,我们需要看到更多积极的试用者。将行为方面添加到上述部分可以提供一个前沿。

初创企业和扩大规模的企业犯了一个错误,那就是将增长建立在注册和在线访客数量的基础上。有时,这些是试用者、随机访问者和匿名线索。举例来说,这一大堆数据并没有显示这些试验者中有多少人实际上是活跃的。通过将不同的用户放入一个桶中,以下相关问题仍然没有答案:

1.是什么阻碍了试用者和匿名线索成为活跃的试用者?

2.如何增加积极试用者的数量?如果我们做一个更好的登陆页面作为成长实验呢?

3.我们应该在免费/试用版的应用程序中包含一个付费功能,作为另一个增长实验吗?

4.事实上,什么会增加积极试用者的数量?

如果不了解用户行为,就不可能有有效的增长战略。因此,重新定义这些包含行为的部分至关重要。

定义行为细分

行为细分是由用户触发的事件定义的用户组。这是下一个层次的用户细分,例如,匿名线索试用者。

  1. 匿名线索

2。用户

3。试用者

4。被搅动的用户

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

图片由作者

上面的图 4 显示,四个细分市场包含一些行为细分市场,其定义比图 3 更广泛。这种更广泛的细分允许理解不同阶段的用户行为。更容易解决与增长和扩展相关的问题。理解行为有助于理解顾客喜欢或讨厌的特征。这可以帮助组织进行必要的改进。请记住,不满意的用户在提供关键的改进信息方面也是至关重要的。常言道,“所有的反馈,无论好坏,都有利于业务增长。”识别这些不同的用户,就更容易识别应用程序中的缺点。

将试用者与活跃试用者分开,将有助于创建符合市场需求的内容和产品功能。

转化率的增加——试用者转化为活跃试用者,然后用户转化为活跃用户——是一个很好的指标,表明产品或应用程序符合产品市场。这也有助于理解公司是否在增长。根据行为创建分段,将触发事件附加到分段,并将活动事件与非活动事件区分开,而不是简单的用户分段,这是更有益的。简单的用户细分将试用者和活跃试用者放在同一个细分市场中。很难确定一个人是否在正确的轨道上。如何判断自己是否走对了路?

下一步是根据核心事件设置生命周期定义。核心事件显示您的应用程序或产品的使用程度。基于这种用法,它们属于特定的生命周期。生命周期的每个阶段都包括行为相似的用户群。行为细分就是这样诞生的。

制定 6 个关键绩效指标

明确公司在客户行为方面的发展方向,下一步是制定 6 个关键绩效指标。一个应用程序的简单 KPI 图如下图 5 所示。KPI 是所有团队成员和相关部门的参考点。

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

与应用程序用户行为一致的 KPI 地图——图片由作者提供

6 KPI—仪表盘

这是整个团队,无论是财务、产品开发、市场营销、增长、销售等等。查看他们的活动是否对上述任何 KPI 产生了影响。

制定增长战略

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

图片作者作者

每个商人都会重申发展一个企业有多难。规划业务增长需要大量的努力。实施增长战略可能是成功与失败的区别。将 6 个关键绩效指标与行为细分相结合后,下一步是制定增长战略**。**这包括以下计划或战略。

1.去市场

这方面指的是公司如何将产品推向市场。它概述了商业计划和营销计划等方面。它涉及产品或服务的交付和到达目标市场。走向市场计划可能有助于推出新产品或重新上市。它包括市场定义、客户、分销模式、产品信息、定位和定价。

2.内容

内容作者需要知道他们在给谁写内容。当作者知道他们为谁写作时,他们可以使用适当的语气和信息。当向活跃用户介绍一个新功能时,写作将不同于针对匿名线索。

3.数字营销

如今,数字营销是一种至关重要的营销工具。有许多数字营销策略可以考虑。技术范围从使用搜索引擎,社会媒体营销等。

4.产品路线图

产品路线图概述了组织的产品将如何满足业务目标。它有助于确定产品的发展方向,以及如何实现这一目标。在功能上,它使产品开发与业务目标相一致。产品路线图信息在协调工作中至关重要。

5.UX 研究

用户体验(UX)研究确定用户的需求、行为和动机因素。UX 研究揭示了客户的有用信息。

增长战略包括包含上述所有方面的增长实验。每个实验都列出了目标 KPI,并记录了成功目标的百分比增长,同时设置了对照组进行比较。这使得衡量什么可行,什么不可行成为可能。一个很好的例子是分析内容的影响,以及针对活跃试用者的数字活动,以转化为用户。如果 KPI 3 没有增加,那么下一步将是探索不同的方法或尝试其他方法。人们可以探索 KPI3 的另一个增长实验。将以前付费的功能添加到试用版可能是一种选择。可以监控结果,并确定对 KPI3 的影响。

设定成长日历

这是生长实验被绘制在日历上的地方,使用颜色代码来绘制活动。颜色代码的使用示例如图 5 所示。

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

图解生长日历彩色编码。—图片作者作者

成长日历 :

1.告知组织中的所有团队正在进行的工作。

2.通知团队每个项目的状态。

3.充当交叉参考点。如果任何 KPI 出现峰值/下降,可以参考增长日历来检查该周发生了什么。

理想情况下,实验应该提前 3 周计划好。

持续不断地研究和重新应用。

作为产品的新功能和集成,您可以将新事件设计到您的跟踪计划中,后端您的事件组以及活动用户和所有其他行为细分市场的事件列表将会发生变化。这是一个好的变化,一个有利于业务增长的动态变化。KPI 和细分市场将保持不变,但都得到了极大的优化。

持续一致的 UX(用户体验)研究的结合对于 BI 战略的成功至关重要,因此也是成功和发展的关键。

结论

传统的客户细分方法忽略了客户行为的关键方面。行为细分是商业成功战略的一部分。这使得企业能够了解他们的客户行为,并识别客户在任何给定时间的行为类别。企业可以为个别客户群定制通信、产品和行动。

一个企业的成长依赖于它的客户和团队。将 KPI 和目标与行为细分数据相结合应该是业务的重点。这确保了企业关注最重要的事情。将团队努力与客户行为结合起来是一个伟大的商业成功公式。

参考书目

Deasi,b . g .(2020)‘了解你的客户的 10 种强有力的行为细分方法什么是行为细分?“为什么要按行为划分客户?”,第 1–25 页。

Designandtechnologydepartment,f .,Bronhiggs,w .和 Follow,J. T. (2020)“人工智能符合营销细分模型”,第 1-14 页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值