如何将数据科学整合到您的业务中
最大化你能力的 6 个步骤
在我作为数据科学顾问的工作中,我经常看到公司努力将数据科学有效地集成到他们当前的工作流程中。这不像雇佣新的数据科学家并让他们投入工作那么简单;你需要采取一些具体的步骤来帮助你的组织在这个领域取得成功。
这是将数据科学集成到您的业务中并使其为您服务的 6 个具体步骤。
步骤 1:理解什么是数据科学
在你把全部预算都花在数据科学资源上之前,你应该花些时间了解这个领域。**数据科学不是银弹。**你可能不会马上收到退货;这可能需要几个月甚至几年,取决于你的目标和你的团队。数据科学是一种逐步提高决策能力的方法。如果你期望太多太快,你可能会对结果失望。
第二步:检查你的数据流畅度
在之前的一篇文章(链接)中,我谈到了组织内部的数据流畅性水平。在你进一步研究数据科学之前,你应该反思你的公司所处的位置。就像一辆没有汽油的超级汽车,没有高质量的数据,数据科学不会走得很快。如果您处于数据流畅的早期阶段,您应该集中资源来改善您的数据策略和数据质量。
第三步:尝试一下数据科学
如果您的数据质量不错,尝试一下数据科学是有意义的。我建议尝试使用内部资源或外部顾问的小项目。这是让你的组织了解这个概念的一个很好的方式,而且你也可以在不雇佣整个团队的情况下获得快速的成功。通过这一过程,您将更好地了解贵公司对数据科学集成的能力和看法。
第四步:雇佣合适的人
此时,您应该能够确定数据科学在当前阶段是否适合您的公司。如果是的话,你应该开始雇佣你的团队。在我看来,数据科学团队的早期雇佣是最重要的。
您的第一个雇员应该能够从事数据科学,但也应该能够为组织建立数据战略。我个人建议雇佣你愿意管理你的数据科学团队的人。如果你先雇佣一群数据科学家,然后再雇佣一个经理,如果他们不能和睦相处,你可能会引起不必要的冲突。
第五步:获得认同
在我看来,得到整个公司的认可是决定数据科学团队是成功还是平庸的关键。您的组织必须发现数据科学是有用的,而作为领导者,您的工作就是让这个团队走向成功。新的数据科学团队很容易被拉到许多不同的方向,在开始时,您的团队应该只专注于明确定义的项目。
步骤 6:创建数据驱动的文化
很多公司实际上不会走到这一步。然而,如果你真的做到了这一步,你将会让你的组织获得前所未有的发展。在这个阶段,您应该将数据科学的元素集成到公司的大部分日常运营中。让数据科学家或分析师接触您业务的大部分领域有助于确定需要改进的领域,并可以消除以后的返工。
如何在 Visual Studio 代码中集成 Python 和 R
我最近在 Coursera 上开始了 IBM 数据科学课程,发现自己正在努力在我的 VSCode 中安装所需版本的 Python 和 R。由于我花了一个令人沮丧的晚上和几个 whiskys 来为我的 Windows 系统找到一个工作解决方案,我决定最好分享它,省得你在网上搜索正确的部分。
你需要什么?
- 微软的 Visual Studio 代码
- Python 语言
- 微软的 Python 扩展
- Don jaya manne 的 Python 扩展包
- R 语言
- Randy Lai 和 Kun Ren 的 R languageserver 包
- 上田祐挥的 VSCode R 扩展
- 弧度作者兰迪·赖
步骤 1:安装 Visual Studio 代码
VSCode 通常是免费的,但更多的选项(如 Azure DevOps Server)可以通过专业版或企业版许可证购买。然而,在我看来,免费版本对于个人使用来说已经足够了。
要安装免费版本的 VSCode,您需要首先从微软官方网站下载您各自平台的执行文件。
下载完成后,启动执行文件并遵循安装指南。安装不需要任何管理权限。然后启动 VSCode,主屏幕将弹出。
VSCode 主屏幕。图片作者。
步骤 2:安装 Python 语言
要在 VSCode 中安装 Python,首先需要下载并安装一个 Python 解释器。您需要哪个解释器取决于您的具体需求,但是,您可以在 Python 的官方下载页面上找到所有可用的解释器。在我写这个故事的时候,版本是 3.9.0。是最新的。
下载完执行文件后,打开它,您将看到以下窗口。
Python 3.9.0 安装程序。图片作者。
如果您对所使用的机器没有任何管理员权限,请确保在单击“立即安装”之前取消选择“为所有用户安装启动器(推荐)”选项。
要检查安装是否成功,请打开命令控制台并执行以下命令:
py -3 --version
输入命令后,应该可以看到以下输出:
显示当前 Python 版本的 Windows 命令控制台。图片作者。
步骤 3:在 VSCode 中包含 Python
打开 VSCode,然后按 Ctrl + Shift + X 打开扩展选项卡。在搜索栏中键入“Python ”,选择 Microsoft 的 Python 扩展并安装。
微软的 Python 扩展包。图片作者。
理论上,您现在已经准备好通过 VSCode 用 Python 编码了。不过我会强烈推荐安装之前 Don Jayamane 的 Python 扩展包。它包括进一步的扩展,通过添加不同的语法高亮选项和基于人工智能的完成项目建议,使您的生活更加轻松。要安装 Don 的扩展包,只需在搜索功能中输入“Python 扩展包”,点击安装即可。
Don Jayamanne 的 Python 扩展包。图片作者。
要启动新的 Python 项目,请按 Ctrl + Shift + P 打开 VSCode 中的命令行,然后键入“Python:Create New Blank Jupyter Notebook”。按回车键,VSCode 将为您打开一个新的 Jupyter 笔记本:
VSCode 中的 Jupyter 笔记本。图片作者。
如果您想在不同的 Python 解释器之间切换,您不需要导入或卸载不同的版本。您可以简单地在 VSCode 中链接不同的 Python 解释器,然后随意在它们之间切换。为此,请按 Ctrl + Shift + P 打开命令行并键入“Python: Select interpreter”。VSCode 将显示当前活动的解释器和其他选项。要添加一个新的解释器,只需将路径复制到相应的执行文件,然后按回车键。
VSCode 中的 Python 解释器选择命令。图片作者。
步骤 4:安装 R 语言
首先,你需要去 R-Project 的官方网站选择一个你附近的 CRAN 服务器位置。一旦你选择了 Windows 版的下载,点击“第一次安装 R”然后“下载 R 4.0.3 for Windows 版”。版本号可能会有所不同,这取决于您阅读本文的时间。
R-Project 4 . 0 . 3 Windows 版的下载页面。图片作者。
拥有管理员权限的每个人都可以执行下载的文件,遵循安装说明并跳到步骤 5。对于没有管理员权限的每个人,您需要执行以下操作。
打开一个文件窗口,转到 c 盘上的用户文件夹。在这里,创建一个文件夹,您可以在其中解压缩安装。我把我的名字命名为“R”。
C:\Users\<user_name>\R
创建文件夹后,正常安装 R,但选择新创建的文件夹作为安装位置,而不是默认位置。安装程序将在您的位置下创建一个名为的新文件夹:
C:/Users/<username>/R/R-<version number>
接下来,在“R”文件夹下创建一个新文件夹,并将其命名为“R-library”:
C:\Users\<username>\R\R-Library
然后导航到 R 执行文件并打开它:
C:\Users\<username>\R\R-<version number>\bin\R.exe
运行 R 终端后,输入以下代码并复制目录。
path.expand("~")
这将告诉你启动时 R 在哪个目录下工作。在我的例子中,它看起来如下:
[1] "C:\\Users\\maurice.buettgenbach\\Documents"
打开各自的目录,创建一个名为“”的新文本文件。RProfile”。你可以通过记事本应用程序做到这一点,但要确保文件没有附加经典的。txt "扩展名。将以下代码粘贴到文件中,并将文件路径与 R-Library 的用户文件夹交换:
.First <- function() {
path_to_libraries <- "C:/Users/<username>/R/R-Library"
.libPaths(c(path_to_libraries, .libPaths()))
}
r 将运行。First()函数,并执行。libPaths()函数告诉 R 安装并访问 R-Library 文件夹中的包。继续之前关闭 R。
步骤 5 :将 R 整合到 VSCode
为了使 R 在 VSCode 中的集成成为可能,我们必须首先安装 Randy Lai 和 Kun Ren 开发的语言服务器协议。R 的 LSP 提供了一个框架,在这个框架下,语言能够与我们选择的编辑器进行通信。
要安装该软件包,请打开 R 并在控制台中输入以下命令:
install.packages(“languageserver”)
接下来,打开 VSCode 并安装上田祐挥的“R”扩展。这个扩展增加了快捷方式,使您能够直接在工作区中运行代码,并更容易地查看数据帧。它现在还包括支持代码语法和高亮显示的功能(类似于旧的 LSP 客户端)。
r 上田祐挥的延期。图片作者。
你现在需要安装的最后一个东西是 Randy Lai 的 Radian。Radian 是 R 程序的另一个控制台,具有多行编辑和语法突出显示功能。因为 Radian 是用 python 编写的,所以您可以通过 Python pip 命令轻松安装它。要安装 Radian,请在 VSCode 中打开一个 Jupyter 笔记本并执行以下命令:
pip install -U radian
在 VSCode 中为-U radian 执行了 pip 安装命令。图片作者。
最后,您需要更改 VSCode 设置,以便在编辑器中启用 R。为此,请按 Ctrl + Shift + P,输入“首选项:打开设置(JSON)”,然后按 Enter 键。这将打开编辑器的 settings.json。将以下代码添加到 JSON 文件中,调整到您的设置的相应路径并保存文件。
"r.bracketedPaste": true,"r.rterm.windows": "<Path_to_radian_.exe","r.lsp.path": "<Path_to_R_.exe>","r.lsp.debug": true,"r.lsp.diagnostics": true,"r.rterm.option": ["--no-save","--no-restore","--r-binary=<Path_to_R_.exe>"],
下面是它在我的 settings.json 中的样子:
我个人 VSCode 的 Settings.json。图片作者。
然后关闭设置文件并打开浏览器。为了测试是否一切都正常工作,创建一个测试文件,并确保它有各自的”。r "结尾。用 VSCode 打开文件,并键入:
print("Hello world", quote = FALSE)
现在,您可以通过按 Ctrl + Shift + S 来运行代码。结果,您应该在终端中收到“Hello world”作为输出,如下图所示。您现在可以在 VSCode 中使用 R 了!
在 VSCode 中执行 R 代码。图片作者。
如何在 Python 中与 API 交互
实践教程
本文介绍了如何用 Python 编程语言处理 API 调用
答 PIs(应用编程接口)对开发、软件和编程社区有着巨大的影响。API 不仅有用,而且很多 API 在进行基本交互时都非常简单。编程语言可以与 API 交互,并执行任务以实现特定的结果。在本文中,我们将使用 Python 来实现这一目的。Python 是我最喜欢的语言之一,它有特别有用的模块来与 API 交互。如果你还没有看过我的一些关于 Python 语言的历史、概述、基础知识和 ide 的文章,我会把它们放在下面。
我将在这里包含我的 GitHub 库的相关代码。
Python 编程语言是一种通用的编程语言,它已经在主流编程语言中占有一席之地
medium.com](https://medium.com/python-in-plain-english/a-brief-history-of-the-python-programming-language-4661fcd48a04) [## Python 基本概述
Python 有许多独特的特性,这些特性帮助它成为现在的样子。这些功能包括:
medium.com](https://medium.com/python-in-plain-english/python-basic-overview-76907771db60) [## Python 初学者完全参考指南
Python 是一种很好的初学者语言,但也适合高级用户。我将深入核心…
medium.com](https://medium.com/python-in-plain-english/python-beginners-reference-guide-3c5349b87b2) [## Python 的最佳 ide 和文本编辑器
我无法告诉你正确的 IDE(集成开发环境)对任何编程项目有多重要。只是…
medium.com](https://medium.com/analytics-vidhya/the-best-ides-and-text-editors-for-python-872ff1176c92)
如果你以前从未使用过 API,你应该学习 HTTP 方法。在这篇文章中,我将只讲述基础知识。我还建议 Postman 在开始使用 HTTP 方法时学习并完成基本任务。Postman 还有其他几个用途。
进行任何种类的 API 调用——REST、SOAP 或普通 HTTP——并轻松检查最大的响应。邮递员也有…
www.postman.com](https://www.postman.com/)
我们将在本文中介绍的主要 HTTP 方法如下:
- GET — HTTP 客户端使用 GET 方法从服务器单向检索数据到客户端。
- POST — HTTP 客户端使用 POST 方法向服务器单向发送数据到服务器。(尽管我们使用 Python 方法来实现这一点)
本文将只介绍在 Python 中使用 HTTP 方法的基础知识。我们也将只讨论 REST APIs。我将在这个项目中使用 JetBrains PyCharm IDE。
[## py charm:JetBrains 为专业开发人员提供的 Python IDE
在 PyCharm 处理日常事务时节省时间。专注于更大的事情,拥抱以键盘为中心的方法…
www.jetbrains.com](https://www.jetbrains.com/pycharm/)
因此,假设我们想每天获取一次第二天的天气,并自动获取包含该内容的电子邮件。
为此,我们将使用 OpenWeatherMap API 和 Google Gmail API:
简单快速和免费的天气 API,你可以访问当前的天气数据,每小时,5 天和 16 天…
openweathermap.org](https://openweathermap.org/api) [## Gmail API |谷歌开发者
这个视频向开发人员展示了编程访问电子邮件的历史,以及为什么要开发一个…
developers.google.com](https://developers.google.com/gmail/api/)
首先,你必须在 OpenWeatherMap 注册一个账户,这意味着根据他们的政策,你必须符合条件。创建帐户后,您将被带到主页面板。导航至 API 键选项卡。这是我们用 Python 编写 GET 请求时需要的关键。然后去他们网站的 API 版块。点击一个调用 API 。
https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude={part}&appid=[{API key}](https://home.openweathermap.org/api_keys)
现在我将requests
模块导入 Python。我还需要pandas
模块。
import requests
import pandas as pd
然后,我将使用来自 requests 模块的 GET 请求来检索关于天气的数据,我想从这些数据中获取信息。使用 OpenWeatherMap One Call API,您可以构建一个查询字符串。查询字符串是 URL(统一资源定位符)的一部分,它使用键和值来执行大量的过程和功能。?
之后的所有内容都是查询字符串。
response = requests.get("https://api.openweathermap.org/data/2.5/onecall?lat=42.937084&lon=-75.6107&exclude=current,minutely,hourly,alerts&appid=redacted&units=imperial").json()
我使用参数exclude=
和值current,minutely,hourly,alerts
向服务器请求每日数据,以过滤我的结果。在这个例子中,我将使用纽约的坐标,但是您可以使用您选择的任何纬度和经度。
我现在将使用来自pandas
模块的json_normalize()
方法将我们的数据正确地格式化成 Pandas 数据帧。我还将使用record_path=
参数来关注对我所需要的重要的元数据。
responseData = pd.json_normalize(response, record_path="daily")
您可以通过在 API 文档的响应数据部分中查找来找出您需要的元数据。现在,我将通过对数据进行切片来获取我需要的信息。
**# get only tomorrows data
responseData = responseData[1:2]****# convert the precipitation to a percentage
responseData[’pop’][1] *100**
打印结果。我使用 alt 命令来获取度数符号。
ALT 248 | ALT 0176。
print(f"Tomorrow will have a low of: {responseData['temp.min'][1]}°.")
print(f"Tomorrow will have a high of: {responseData['temp.max'][1]}°.")
print(f"Tomorrow will have a {responseData['pop'][1]}% chance of precipitation.")msg_text = f"Tomorrow will have a low of: {responseData[’temp.min’][1]}°, a high of: {responseData[’temp.max’][1]}°, and a {responseData[’pop’][1]}% chance of precipitation."[out]
Tomorrow will have a low of: 56.95°.
Tomorrow will have a high of: 75.43°.
Tomorrow will have a 20.0% chance of precipitation.
因此,我现在有了一种格式的天气数据,我将在每天早上 7:00 使用 Gmail API 向自己发送一次,详细说明第二天的天气。为此,我们需要在您的 google 帐户中执行一些操作。请确保您遵循 Gmail API 快速入门指南中关于验证您的访问权限和下载您的凭据的指南。
[## Python 快速入门| Gmail API | Google 开发者
完成本页剩余部分描述的步骤,创建一个简单的 Python 命令行应用程序,使…
developers.google.com](https://developers.google.com/gmail/api/quickstart/python)
首先,您需要导入适当的包
import pickle
import os
import base64
import googleapiclient.discovery
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import pickle
import os
from google_auth_oauthlib.flow import InstalledAppFlow
接下来,您需要设置权限:
# set permissions
SCOPES = ['https://www.googleapis.com/auth/gmail.send',
'https://www.googleapis.com/auth/gmail.modify']
然后,我将设置凭据:
home_dir = os.path.expanduser('~')
json_path = os.path.join(home_dir, 'Downloads', 'credentials.json')
flow = InstalledAppFlow.from_client_secrets_file(json_path, SCOPES)
creds = flow.run_local_server(port=0)
pickle_path = os.path.join(home_dir, 'gmail.pickle')
with open(pickle_path, 'wb') as token:
pickle.dump(creds, token)
home_dir = os.path.expanduser('~')
pickle_path = os.path.join(home_dir, 'gmail.pickle')
creds = pickle.load(open(pickle_path, 'rb'))
我现在可以构建服务了:
service = googleapiclient.discovery.build('gmail', 'v1', credentials=creds)
最后,您需要发送消息:
message = MIMEMultipart('alternative')
message['Subject'] = "Tomorrow's daily weather alert"
message['From'] = '<youremail@email.com>'
message['To'] = '<youremail@email.com'
messagePlain = msg_text
messageHtml = '<b>Weather Update!</b>'
message.attach(MIMEText(messagePlain, 'plain'))
message.attach(MIMEText(messageHtml, 'html'))
raw = base64.urlsafe_b64encode(message.as_bytes())
raw = raw.decode()
body = {'raw': raw}
message_first = body
message_full = (
service.users().messages().send(
userId="me", body=message_first).execute())
print('Message sent!')
这将打开你的 bowser,要求你登录到你的帐户,然后要求你的应用程序的权限和访问,以发送和修改你的帐户上的消息。如果你不想要这个烦人的消息,那么你会希望在谷歌云开发者平台中给你的应用程序权限。
谷歌是云基础设施和平台服务 Gartner 魔力象限的领导者。谷歌是 Gartner 的领导者…
cloud.google.com](https://cloud.google.com/)
我建议阅读这方面的文档。
该页面为应用程序开发人员提供了 Google Cloud 平台中身份验证的概述(以前称为…
cloud.google.com](https://cloud.google.com/docs/authentication/)
我还想用任务调度程序自动运行脚本。
我首先在任务栏的搜索栏中输入任务计划。这将打开一个可以安排不同节目的应用程序。
任务调度程序
点击动作菜单,从列表中选择创建基本任务… 。
动作菜单
我继续填写关于申请的基本信息。完成后选择下一个的*。*
创建基本任务窗口
然后选择触发器为每日。选择下一个的*。*
触发窗口
我把这一天定为我目前撰写这篇文章的第二天。选择下一个的*。*
每日窗口
保持开启,启动程序并选择下一个。
动作窗口
程序/脚本:应该是要去python.exe
文件。添加参数应该是你的 Python 脚本的路径。选择下一个的。
选择 python.exe 和 python 脚本路径
我单击“完成”,查看我的任务是否在任务计划程序库中。
完成窗口
检查您的应用程序是否在任务计划程序库中
该脚本现在应该自动在每天早上 7:00 运行。
带有 HTTP 和 API 的 Python 比这更进一步,但是如果您对这种类型的项目或主题感兴趣,希望这将是一个很好的切入点。如果你有任何问题,评论或更正,请在下面的回复中留下。感谢您阅读这篇文章,希望对您有所帮助。
如何解释和计算“可能性增加 X 倍”的统计数据
吸烟的人患肺癌的可能性是普通人的 15-30 倍。黑人男性和女性死于新冠肺炎相关疾病的可能性是白人的 1.9 倍。
很有可能,你已经在标题或报纸文章中看到过这些“可能性增加 x 倍”的说法。虽然这些数字中有许多是经过充分研究和翔实的,但肯定有来源使用优势比来制造轰动效应和制造恐慌(即这里是你感染冠状病毒的 19 倍以上的地方🙄).今天我给大家简单介绍一下这些统计数据是什么,如何计算,如何解读,并讨论一些弊端。
这些统计数据是什么?
这些统计数据被称为优势似然比,它们通常被用来描述特定人群经历某事的可能性。优势比的一些好处是,它们很容易被广泛的受众解释(即 2x 对大多数人来说意味着大于 0.7 的回归系数),并且可以突出单一变量对两个人群的影响(即吸烟者和非吸烟者的癌症发病率)。
比值比有时会与概率混淆(即10–15%的吸烟者被诊断为肺癌),但它们不是一回事。优势比表示一个事件比另一个事件发生的可能性更大或更小,而概率表示一个事件在所有可能的结果中发生的可能性。
为了展示这种差异,我将使用 YouGov 对 6500 多名受访者的调查来了解美国人相信大多数生活在美国的人相信美国梦的可能性和概率。
杰克从不放手,现在他是杰伊·盖茨比#upwardMobility。图片来自 Pinterest
美国梦是一种信念,即任何美国人都可以通过努力工作和奉献获得成功和向上流动,无论种族、社会阶层或宗教信仰如何。这是美国的基本概念之一,也是我最喜欢的一本书——《了不起的盖茨比》的主题。
图片作者。
回答者认为 A.D.i.O .的概率是可获得的回答总数/所有回答,或(1383 + 1911) / 6588。结果是 51%,这意味着大约有 1/2 的美国人认为是 A.D.i.O
回答者认为 A.D.i.O 与不可获得的概率是可获得的回答总数/不可获得的回答总数,或(1383 + 1911) / (1318 + 1054 + 527)。结果是 1.13,这意味着美国人更倾向于认为 A.D.i.O。
计算比值比的一般公式是事件 A 发生次数/事件 B 发生次数。
如何计算多组的似然比
在我上面的例子中,在我的优势比计算中,我只有一组(所有受访者)。然而,这些比率最好在调查变量对两个不同群体的影响时使用。调查数据还记录了受访者的政治倾向,因此我将调查民主党和共和党的回答分组后,优势比是否有任何变化。
与上面使用的数据集相同,但这次是按政治派别分组的。免责声明:数据集没有按缔约方统计的原始回复数,因此我将使用回复的百分比进行计算。数字加起来不是 100%,因为我去掉了“不知道”的回答。图片作者。
第一步是计算民主党的优势比。利用**事件 A 发生次数/事件 B 发生次数的一般公式,**我得到 0.38 / 0.57 = 0.66。这可以解释为每 66 名民主党人相信 ADI o,就有 100 人不相信。根据调查结果,民主党人实际上更有可能认为美国梦对于大多数生活在美国的人来说是无法实现的。
然而,这只是等式的一半,现在我们对共和党的回应重复这个过程。用同样的公式,我得到 0.79 / 0.17 = 4.64。这是一个相当大的优势比——每 464 名共和党人相信 ADI o,就有 100 人不相信。
最后一步是相互比较这些几率,因为现在两者都是在同一组内计算的(即所有共和党或民主党的回答)。这可以通过获得共和党优势与民主党优势的比率来完成,该比率为 4.6/0.66 (6.96)。
图片作者。
这意味着共和党人相信美国梦的可能性是民主党人的 7 倍,相信美国梦的可能性是不相信美国梦的 4.6 倍。
如果这项调查的纵向数据可用,那将会很有趣,因此我们将能够调查这种支持美国梦的分裂是最近发生的,还是逐年变得更加两极分化的。
解释优势似然比
比值比为 1 或接近 1 意味着两个事件都不比另一个事件的可能性更大或更小,被调查的变量(即政治派别)与事件(相信美国梦)没有关系。
比值比大于 1 意味着事件 A 比事件 B 更有可能发生,变量很可能与事件相关。但统计显著性仍需检验。
比值比小于 1 意味着事件 A 发生的可能性小于事件 B,变量很可能与事件相关。但统计显著性仍需检验。
似然比的缺点
在解释这些比率时,需要注意的是你不能直接用概率乘以几率。在我们的例子中,共和党人相信 A.D.i.O .的可能性是 6.96 倍,你不能用相信 A.D.i.O .的民主党人的百分比(38%)乘以 6.96 来得到相信 A.D.i.O .的共和党人的百分比(这将导致 264%,这没有意义)。这是因为 6.96 指的是一个事件的几率如何优于另一个事件的几率,而不是一个事件发生在另一个事件之上的概率。这似乎是一件奇怪的事情,但是已经有一些有声望的报纸将优势比误报为概率,然后不得不撤回他们的文章并澄清!
我在本文开头简单提到的另一个缺点是优势比容易引起轰动。特别是当被调查事件的频率很低时,比值比会误导你相信一个罕见事件的可能性比实际情况更普遍。在我下面虚构的例子中,喝日本酸奶获得超能力的几率是不喝酸奶获得超能力的 3 倍。
图片由作者提供,数据(不幸的是)也由作者提供。
听起来不错,对吧?我正要去搜查最近的养乐多工厂。但是等等——即使在最好的情况下,我的机会仍然是 3/10,00,003,或者 0.000029%。我会有更好的机会去科学中心找一只放射性蜘蛛。
另一个缺点是,比值比有时被解释为因果关系(即变量 A 导致事件 A),但事实往往并非如此。优势比仅仅意味着一个变量和一个事件之间有关系,但是可能有许多潜在的变量,一些甚至没有包括在最初的分析中,它们实际上造成了这种影响。
总之,比值比是总结研究结果并与广大受众分享的快速有效的方法。然而,它们也可能被耸人听闻和曲解。如果你看到一个比值比似乎太高或太低,尝试找到原始数据源或类似的研究与实际频率计数。这将让你更好地意识到一个事件在整体上的可能性有多大。这样做的人在数据解释方面的体验要好 95-100 倍😉
p 值:对非统计学家的直观解释
如何找到 P 值并最终拒绝零假设
如果你阅读任何科学论文,例如医学、人工智能、气候、政治等。,或者任何一个民调结果,有一个术语几乎总是会出现——p 值。
但是到底什么是 p 值呢?为什么它会出现在所有这些上下文中?
下表显示了 COVID 和 ICU 入院的症状及其 p 值(新冠肺炎)。
表 1。来自被引用最多的新冠肺炎论文之一— 中国武汉 2019 新型冠状病毒感染肺炎 138 例住院患者的临床特征
在本文中,作者对该表唯一说的是*“分类变量的比例使用χ2 检验进行比较。p 值表示 ICU(重症监护病房)和非 ICU 患者之间的差异。”*
假设医院里所有的医生都得了冠状病毒病,而你(!)负责决定哪些病人需要进重症监护室。因为 ICU 的床位有限,你不能接纳所有人。您也可以使用这张表格作为参考。
您将如何使用表中的 p 值?根据 p 值,你能预测某人需要入住 ICU 的相关症状吗?在学校,我们了解到小的 p 值(通常小于 0.05)意味着证据是强有力的。但这是为什么呢?
1.什么是 P 值?
P-value 中的“P”表示“概率”——你的样本数据仅仅是因为随机抽样,而不是因为实际差异的可能性有多大。
所以,如果 p 值很小,那很好,因为它告诉你,你的实验结果不仅仅是由于偶然。
本文中武汉医院收治的新冠肺炎患者总数为 N=138。假设我们从纽约、意大利和韩国的医院中抽取了另外三组 138 名患者。
每次我们取样时,重症监护室和非重症监护室的厌食症患者数量会有很大不同吗?
每次我们从不同医院抽取一组病人,都是一次随机 抽样。即使厌食症与 ICU 入院无关,由于随机抽样误差,这两者也可能出现关联。巧合的是,他们看起来像是亲戚。
如果我们要声称差异不仅仅是因为随机 抽样误差 而是因为实际差异,我们需要证明什么?
我们需要证明差异太大,不可能是随机的。我们需要表现出“惊人的不同”。
当我们假设一个统计量为正态分布时,我们可以用均值的标准差来衡量任何一点。同样,我们可以对差异(或归一化差异—检验统计量)假设某种分布。如果我们显示差异在尾部进一步下降,无论是右边还是左边,我们可以说该事件发生的概率很低。
p 值是分布曲线下测试统计值向右或向左的区域。
2.手工计算 p 值
为了计算 p 值,您需要 3 样东西 — 数据、一个零假设和一个检验统计量。
一.数据
很明显。
二。虚假设
无效假设表明两组之间没有关系**。**零假设被认为是正确的,直到数据显示足够的证据证明它不是。
**H0** : The anorexia and ICU admission are **independent**.**H1** : The anorexia and ICU admission are **NOT independent**.
美国刑事司法系统使用同样的理念;“无罪推定”。零假设永远不会被证明是真的;你只是没有拒绝它。
三。检验统计量
检验统计是我们用来拒绝零假设的武器。在这种情况下,为了查看这两个变量是否相关,我们将使用卡方检验。
卡方检验统计公式的直觉
卡方检验统计量。“c”:自由度。“O”:一种观察。“E”:一个期望值。
H0 “厌食症和 ICU 没有关系。” 表示无论是否在 ICU,厌食症患者的比例都是一样的。
那么,为了拒绝 H0,我们需要展示什么?
我们需要证明重症监护室和非重症监护室患者中厌食症患者的比例有显著差异。
上面的测试统计就是基于这个思路。如果厌食和 ICU 是独立的,(观察-预期)两者各小。如果你还不清楚,请继续阅读下面的推导。
如何从头开始计算卡方检验统计量
- 根据给定数据绘制表格(又名列联表)
根据表 1,在总共 138 名患者中,36 名患者去了 ICU,102 名患者没有去 ICU。在总共 55 名厌食症患者中,24 人去了 ICU,31 人没有去 ICU。
2。填写表格
3。计算每个单元格的期望值。(这是关键!)
如果你观察细胞[ICU,厌食症],它计算:在总共 36 名 ICU 患者中,36 名* (55/138)患者预计患有厌食症。
我们为什么要这样计算?
因为,如果实际观察值 24 与 36 * (55/138)相差很大,那么厌食症和 ICU 之间一定发生了什么。反过来,如果 36 * (55/138)和 24 相差不是太大,那么 ICU/非 ICU 对厌食症没有太大影响。
如果你计算表 1 中“干咳”的期望值,你不会看到期望值和观察值之间有很大的差别。(试试吧!)
4。正常化吧&总结一下。【直觉】(T3)
应用检验统计公式。卡方检验统计:6.49 +4.3 +2.29+1.52 = 14.6
这个公式没有让你想起什么吗?
方差——观察值和平均值之间的平方差之和。我们用期望值来衡量这个偏差,就像任何标准化一样。它会计算与预期值的偏差。
卡方分布是独立标准正态随机变量的平方和(类似卡方检验统计)。
假设你有一个来自正态分布的随机样本。**考虑到中心极限趋势(如果样本超过 30 个,均值趋于正态),这不是一个不切实际的假设。**那么,(观察—期望)值也会遵循正态分布,因为 E 是确定性的。
这种正态分布假设在 p 值教学中经常被忽略,但这种假设使得卡方 p 值范式成为可能。
卡方检验统计量:6.49 + 4.3 + 2.29 + 1.52 = 14.6
这是一个单一的数字,它告诉您观察到的计数和预期的计数之间存在多少差异。
5.获得“自由度”。
对于具有 r 行和 c 列的表,卡方检验的自由度计算公式为
**Degrees of Freedom = (# of rows − 1) × (# of columns − 1)**
在我们的数据中,列联表中有 2 行 2 列,因此 df 为 1。
为什么卡方检验的自由度是这样定义的?
首先,自由度是为了使统计量保持不变而可以变化的元素数量。
例如,在公式` a + b + c = 10 '中,您可以将 a 和 b 更改为任何数字,但是一旦设置了 a & b ,就不能更改 c 、,因为总和应该保持为 10。所以,在这种情况下,df 是 2。
卡方检验的 df 是列联表中可以变化的单元格数量。在我们的例子中,列联表是 2 乘 2。如果设置单元格【ICU &厌食】为 24,则确定其余单元格。我们将(row-1)和(column-1)相乘,因为我们需要分类变量的所有可能的组合。
为什么我们需要考虑自由度?
因为自由度影响分布的形状。
如果您查看卡方表,不同的自由度对于相同的 alpha(显著性水平)具有不同的测试统计值。
随着样本规模变大,自由度也变大。所以自由度越大,分布越接近正态分布。
这也意味着,随着自由度变大,尾部的面积变小。它更倾向于平均值(较小的标准差)。而这意味着 0.05 p 值的截止点会更远。因为当你的样本量越小时,不确定性就越多。
6.查卡方表,或者用 python 或者计算器做。
如果查看卡方表,检验统计量越大,p 值越小。
还是计算器:https://stattrek.com/online-calculator/chi-square.aspx
或者,用 Python,也就几行。
from scipy.stats import chi2_contingencytable = [[24, 12], [31, 71]]alpha = 0.05test_statistic, p_value, dof, expected = chi2_contingency(table)if p_value <= alpha:
print('Variables are not independent (reject H0)')
else:
print('Variables are independent (fail to reject H0)')
测试统计越极端,结果偶然发生的可能性就越小。
3.如何解读 P 值
p 值地址只有一个问题:
假设你的零假设为真,你的数据有多大可能?
66.7%的 ICU 患者有厌食症,但 30.4%的非 ICU 患者也有厌食症。其 p 值小于 0.001。p 值 0.001 意味着**如果你对 1000 个不同的组进行抽样,**你只会看到 1 次相同的统计数据(或更极端的情况),鉴于厌食症和 ICU 确实是独立的。
4.P 值无关紧要。
- p 值经常被误解为零假设为真的概率。但严格来说不是。 P 值不能告诉你零假设是否为真,因为它已经假设零假设为真。(还记得上面的分布曲线吗?曲线的中心意味着 H0=0。)
- **无显著性 p 值不一定排除 ICU 与非 ICU 患者的差异。**这只能说明我们手头的数据没有足够的证据表明存在差异。
- p 值也没有说你的结论是正确的。它只是告诉你结果是多么的罕见,仅仅是因为随机的机会,而不是因为其他重要的因素。注意 p 值是关于测试(因此拒绝)零假设的。这只是拼图的一部分。
- p 值不是 1 类错误的概率。显著性水平(α)为。
有时候维基百科没有最好的解释…
需要注意一些事情:
- 在研究中,人们投入了大量的精力来获得 p 值< 0.05 because that’s the threshold which the study result can be declared as “statistically significant”. That is, the result wasn’t a fluke, or by random chance.
- We use the chi-square test only for categorical data. We don’t use it on numerical data. There are many different types of hypothesis tests.
**Different Hypothesis Tests**Comparing means → t, z test
Comparing 2 sample variances → F test
Determining independence → Chi-square test
Determining goodness of fit → Chi-square test
3. Setting alpha (the significance level) is arbitrary. Different people use different significance levels. Therefore, we can arrive at different conclusions from the same data depending on what we choose as our significance level. By convention, α is set to 0.05, or 0.01.
We set our significance level before we see any data. Alpha should not be derived from data nor depend on the underlying hypothesis.
4. Chi-square distribution is a special case of the 伽马分布。具有 n 个自由度的卡方分布等于 a = n / 2 且 b = 0.5(或β = 2)的伽马分布。
如何像数据科学家一样投资
数据科学是一种思维模式和技能组合,可以让你通过投资致富
图片来自 Rick & Morty,已编辑
众所周知,数据科学是一个涉及统计学、数学、计算机科学和商业知识的多学科领域。
成为数据科学家所需的思维和多学科技能是强有力的工具。他们不是博士学位,而是一个优秀数据科学家的资质。它们不仅有利于你的职业生涯,还会对你如何处理生活中的事情产生巨大而积极的影响。
对于任何寻求财务自由的人来说,投资都是一生的任务。无论是投资股票还是投资自己,都有一些原则应该牢记在心。这些原则很重要,但也很容易忘记。为什么?因为“感谢”人性,可以肯定的是,一个人需要一次不成功的投资经历,才能体会到它们的重要性。
有没有不经历失败就能真正掌握这些原则的方法?是的,有了这种心态和多学科的技能,优秀的数据科学家应该知道捷径。希望你会惊讶于这两项技能是如何让你的投资方式受益的。
“整个科学只不过是日常思维的提炼.”
——阿尔伯特·爱因斯坦
1.永远不要贪婪→用数学证明
图片来自https://arlenepellicane.com/
赌场是一个非常有利可图的行业,它甚至可以养活整个城市的福利系统,就像在拉斯维加斯。除了游客和临时访客,赌场赚取的最大利润来自赌徒的贪婪。
你很少在赌场看到数据科学家。如果你这样做了,他们要么为赌场工作,要么只是假装与他们的非数据科学家朋友“社交”😲。为什么?因为一个好的数据科学家懂数学。
让我们看一个简化的例子:
- 一个赌徒玩一个游戏,有正好 50%的机会赢和输
- 如果他赢了,他赚 1 美元;如果他输了,他就输了 1 美元
- 赌徒在开始时有 X 美元
- 只有两种方式来完成游戏:1)失去所有的 X 美元,2)总的钱达到他的目标,Y 美元
这个游戏看起来很简单,但是揭示了所有赌博游戏的两个属性。首先,它们看起来都是公平的游戏,这让你觉得如果你的运气一般,你会简单地以平局告终。其次,赌徒很贪婪。
假设,失去所有$X 的概率是 P(X)
一个人有 50%的机会从 X 到 X 到 X到X-1,有 50%的机会从 X 到 X 到 X到X+1
因此
- P(X) = 50% × P(X - 1) + 50% × P(X + 1)
- 即 2 × P(X) = P(X - 1) + P(X + 1)
- 即 P(X) - P(X - 1) = P(X + 1) - P(X),这满足了典型等差数列的性质
众所周知,对于任何算术级数,
即数列的第 n 项=第一项+第 1 项和第 n 项之间的距离,可以看成是(n - 1) ×任意两项之间的公距。
我们还知道:
- P(0) = 1,当一个人有 0 美元时,失去一切的概率是 100%
- P(Y) = 0,当一个人有 Y 美元时,游戏就结束了,所以输掉一切的概率是 0%
- 因此,d = 1 / Y
该序列现在可以转换为以下形式:
使用上面的公式,
P(X)= P(Y)+(n-1)d = P(Y)+(Y-X)1/Y =(Y-X)/Y
也就是说,如果 X = 1000 美元
- 如果 Y = 1200 美元,P(X) = 1/6
- 如果 Y = 1500 美元,P(X) = 1/3
- 如果 Y = 2000 美元,P(X) = 1/2
- 如果 Y = 5000 美元,P(X) = 4/5
如果你想赚 200 美元,相对容易实现。然而,如果你变得贪婪,想赚 5 倍,有 80%的机会你会失去一切。
“见好就收”—古老的中国智慧
2.小心密码和细价股→用博弈论论证
来自 https://coinmarketcap.com/的比特币图表
你可能听说过 2017 年加密货币的疯狂,当时比特币的价值在一年内增长了 20 倍,随后发生了大崩盘,直到今天。
让我们从一个简单的例子开始,你可能会看到如何在未来动荡的市场中投资:
- 索菲亚邀请诺亚玩一个游戏,给他们每人一枚硬币
- 在每一轮中,他们都展示硬币的一面
- 如果结果是 2 头,诺亚赢得 3 美元
- 如果结果是 2 条尾巴,诺亚赢得 1 美元
- 如果结果是 1 头 1 尾,那么诺亚损失 2 美元
不难想象,抛硬币的结果是 50–50,所以有 25%的次数结果是 2 头,25%是 2 尾,50%是 1 头 1 尾。
投掷 2 枚硬币的概率
不同结果的奖励
因此,诺亚和索菲亚的报酬的期望值是 0 美元:
25%×$ 3+25%×$ 1-50%×$ 2 = 0
是的,这似乎是一个公平的游戏加上诺亚总是想和一个迷人的女士玩游戏,像索菲亚,所以为什么不玩呢?但是,经过几个小时的游戏日期,结果显示,诺亚几乎失去了他钱包里的一切,包括钱包。那是怎么发生的?
诀窍是:索菲亚可以控制概率,而不是每轮随机展示硬币。她用了什么策略?索菲亚是这样做的:
假设 A 代表索菲亚展示头部的事件,B 代表诺亚展示头部的事件。
对诺亚报酬的期望:
绘制这个等式:
绘制诺亚奖励的功能
平面下的区域代表负的 E(Noah),并且有一定范围的 P(A),Sofia 的露头概率,使得 E(Noah)总是负的!这是索菲亚的诡计。下面的代码揭示了范围:
让诺亚赔钱的代码
[0.34 0.35 0.36 ... 0.38 0.39 0.4]
就是这样。如果索菲亚设法迫使概率落在 0.34 和 0.4 之间,她将永远使诺亚赔钱!
这个博弈是博弈论中的问题。这是一个完美的类比,告诉我们如何从一个“公平”的游戏中受骗。在这里,游戏可以被视为一种投资,诺亚代表个人投资者,索菲亚代表机构投资者,也就是大鲸鱼。在小型资本投资中,如加密货币和细价股,大鲸鱼可以轻松地用大量资金操纵市场,即大量抛售或买入。如果个人投资者幸运地跟随“鲸鱼”的运动,他们可以赚钱,但最终个人投资者会亏损,因为他们只是被操纵了。
3.总是比你想象的更快“放弃”→客观思考
图片来自 https://www.aconsciousrethink.com/
在一项投资中,在不同的时间点既赢又输是最常见的事情。当你赢的时候,永远不要贪婪(前面已经证明了)。当你亏损时,明智地止损。
萨姆一直持有价值 1 万美元的股票。最近该公司并没有落入坏人之手,股价突然跌破收购价格,现在它只值 8k 美元。
山姆应该减少损失吗?
如果山姆继续持有或加仓,90%的机会他会损失更多。显然,减少损失是我们应该做的。然而,许多人没有做到这一点,即使他们事先得到了统计数据。这都是因为人的自我,比如“你不卖就不会亏钱”,“永远不会亏钱”。不要武断地看待这些话。
把自我放在一边,也就是客观思维,并不像看起来那么简单,它需要定期的训练和一个人的坚持。这种技能是任何科学家和研究人员的基本要求。
当损失无法挽回时,比如公司是骗局/泡沫,不要希望它会很快好转,承认损失已经成为沉没成本,立即抽身。尽管有时损失可能会被霍德林挽回,但考虑到机会成本,即你等待投资回到之前水平所花费的时间,如果你选择将资金转移到其他地方,你可能已经将仓位翻倍了。
说到投资生存,总是建议对股票进行更多的研究,做一些计算来支持投资决策。另一个简单而聪明的方法是把股票当成是免费送给你的。你会发现,如果 Sam 收到一只免费的 10000 美元的股票,但有一天这只股票跌到 8000 美元,几乎没有机会再涨回来,这个决定就变得容易多了。
4.看穿“预期”→蒙特卡洛模拟
图片来自 https://screenrant.com/的漫威(独眼巨人)和
评估一项投资有无数种好的和坏的方法,上面列出了三种最差的方法。对于个人投资者来说,价值投资、贴现、记分卡、 PB + PE + PEG 都是很好的开始方式。我不会在这篇文章中详细阐述它们,请点击链接,你会发现它们是多么有用。
我想说的是一种有趣的、有时反直觉的方式,许多人包括专业人士都过于依赖这种方式——预期回报。下面显示了什么时候可以,什么时候不可以。
当它工作的时候
假设有一个掷硬币游戏。每一轮,如果是头,玩家赚 1 美元,如果是尾,玩家赚 2 美元。他玩一轮这个游戏应该付多少钱?
预期回报是 1.5 美元,所以只有入场费低于 1.5 美元,这个游戏才值得玩。
当它不起作用时
假设你有$X,有 50%的几率它在下一个单位时间内变成 0.9 × $X,有 50%的几率变成 1.11 × $X。是不是每次都要全进的道理?
这意味着,在下一个单位时间内,你将从你拥有的$X 中获得 0.5%的收益。也就是说,每次投资,你都会获利,所以当然,你应该每次都全押!
然而,在现实中,如果你这样做,你会失去一切。反直觉对吗?下面告诉你为什么。
通过蒙特卡洛模拟,我在 500 个时间单位内创造了 10,000 个投资者,所有人的起点都是 100 美元。
图上的每个点代表投资者在特定时间单位的回报。从中我们可以看出,随着时间的推移,少数投资者取得了非常显著的回报,而大多数投资者却没有这么幸运。
他们有多倒霉?88.56%的投资者的回报率低于他们 100 美元的起点。更不幸的是,10000 个投资者中有 84.76%的人最后都是 0 美元。是的,大多数投资者最终会血本无归。
看起来这项投资非常乐观,如果他(她)们继续玩下去,理论上应该可以获得无限的钱,但市场上几乎没有真正的赢家。
下面的代码再现了模拟:
当预期回报不起作用时演示的代码
如果你不是 100%相信,下面从数学角度解释原因:
我们已经知道预期收益是
一个人的回报极限如何:
因为
多亏了大数定律
因此
嘣!又反直觉了!预期收益为正,但极限为零。这是因为有些 x 最终非常大,但这是非常难以实现的。由于这些很少的大 x,平均回报被拖向正,但事实是大多数 x 几乎为零。
投资时,应该明智地使用工具。预期回报是一个简单而有用的工具,但过度依赖它会让你忽略某些重要信息,这有时可能是致命的。
最后
我想从这篇文章中传达两个信息:
- 数据科学不仅仅是一项日常工作。成为一名优秀的数据科学家所需的思维模式和多学科技能是强大的设备,有利于一个人与生活中一切事物的交互方式。
- 不要变得贪婪,与波动的市场保持距离,减少损失,使用工具时首先要知道自己是什么。这四个投资原则在许多投资者中可能是众所周知的。然而,没有多少人每次都记住它们,因为这些原则是通过语言传授的,而不是通过现实生活中的经验,也就是失败。我希望通过揭示数据和这些教训背后的科学,你不必经历成为投资大师的失败。
参考
[1]中等,朝向数据科学。(2018).数据科学需要研究生学历吗?https://towards data science . com/do-you-need-a-graduate-degree-for-data-science-8e 3d 0 ef 39253
[2]维基百科。算术级数。https://en.wikipedia.org/wiki/Arithmetic_progression
如何发放更明智的贷款
让您的用户满意并遵守联邦法规
由于各种各样的原因,申请贷款可能是一次紧张的经历。在本帖中,我们将使用一个工作实例来理解如何利用数据科学来发放更好的贷款。
近期目标是从头到尾了解如何创造一个金融科技 ( fintech )产品。更大的目标是使贷款申请过程透明。
在介绍这个系统中的角色之前,请记住在头衔的背后,每个人都是人。这意味着并非一切都可以量化,在许多情况下,最终的决定可能是基于人的判断。
债权人
债权人是那些有钱可借的人,必须小心不要把他们的资产浪费在没有出路的努力上。传统上,贷方依赖于 5c 的信用:
- 性格;角色;字母
- 容量
- 资本
- 情况
- 抵押品
申请人
贷款申请人需要证明他们的信誉。所需的信息可能因贷款人而异,浏览申请流程可能会令人困惑。
因此,市场双方都需要理解风险和回报,这一点显而易见。在本帖中,我们将使用 Lending Club 数据来创建 LoanHelp :一个简单的网站,能够帮助债权人和借款人了解贷款是否值得。
详细分析请随时查看 GitHub 回购:https://github.com/NadimKawwa/loan-help
数据采集
杰西卡·刘易斯在 Unsplash 上拍摄的照片
对于这个项目,我们将使用来自美国 P2P 贷款公司的 Lending Club 的数据,这些数据是从 2007 年到 2018 年收集的。这些数据可以在 Kaggle 上免费下载。这些文件包含所有已发放贷款的信息,如当前贷款状态和最新付款信息。
该数据还包含信用评分、金融查询次数、邮政编码和托收等特征。总的来说,我们有大约 890,000 个观察值和 75 个特征。重申一下,我们的目标是预测个人是否会偿还贷款或违约。
在执行任何步骤之前,我们按照发布日期进行排序,并将最后 10%的观察值作为测试集。为了更好的可视化,考虑图 1:
图 1:每年发放的贷款
这种方法要求在勘探阶段看不到测试数据,增加了另一种防止泄漏的安全措施。这是常见的做法,因为我们没有办法确切知道未来是什么。
我们的目标是预测个人是否会偿还贷款或违约
数据探索和特征工程
瑞安·昆塔尔在 Unsplash上的照片
未来泄漏
数据中的一些信息发生在贷款发放后的未来,比如installment
:借款人在贷款发起的情况下所欠的月供。这些信息预示着未来,并构成数据泄漏,应该被丢弃。总的来说,在这一步中,我们从分析中丢弃了大约 50 个特征。
遗漏的观察
数据集包含大量缺失的输入,对于数据科学家来说,如果超过一半的输入缺失,就很容易放弃某个要素。但是,建议慢慢来,对每个特性进行尽职调查。在混乱中发现模式是一种乐趣,这是数据科学家的工作。
下面的图 2 显示了缺失观测值在每个特征中所占的百分比分布。我们做出判断,丢弃丢失值超过 50%的所有特征。对于那些少于 10%的缺失,我们填充该特征的模式。
图 2:每列的平均缺失值
分类数据
一些特征是分类数据,例如职位。对于后者和类似的功能,我们设计了自己的功能,试图将作业分配到相关的类别。例如,像护士和医生这样的头衔被标记为健康职业。此外,我们为拥有总裁、首席执行官和区域经理等头衔的’高管创建了一个二元特性。
按地理位置定制功能缩放
对于许多机器学习算法来说,标准规模 r 实例可以提升性能。在深入研究之前,请考虑下图:
通过大都市统计区 (MSA)来衡量观察结果比全国更有经济意义。如果邮政编码的第一位数字代表一个州,那么后两位数字代表该地区的中央邮局。
因此,我们将跟踪统计数据,如按前两位数分组的样本的平均值和标准偏差,我们将称之为“宏观”统计数据。背后的原因是,20,000 美元在德克萨斯州奥斯汀的价值不同于在加利福尼亚州旧金山的价值(作者希望他支付的租金更少)。
用户配置文件
那么谁是 Lending Club 的债务人呢?该公司给每个人分配一个字母子等级(后面会有更多),例如 A1 是最好的等级,G5 是最差的等级。分布似乎向右倾斜,大多数用户的分数为“好”到“好”。
一个有趣的结果是下图比较了已付贷款和违约贷款的年收入。请注意,分布似乎是相同的,而那些倾向于违约的人平均收入略低。
也许这两个情节更有意思。我们看到,较高的利率(int_rate)与较高的违约可能性相关。同时,较低的路基也表明可能违约。我们将这两个地块放在一起展示,因为申请人的子等级越低,风险就越大,利率就越高。因此,这是特征相关性的一个例子。
建模和性能指标
瑞安·昆塔尔在 Unsplash 上的照片
挑选模特
随着数据的清理,我们选择尝试几种监督学习算法,以选出一个赢家,并进一步发展它。
性能指标
鉴于数据集的不平衡性质,仅仅依靠准确性是不够的。诸如接收器操作特性 (ROC)和 f1 分数等指标在不平衡数据集的情况下非常有用。下图 3 显示了不同模型的 ROC 曲线:
图 3:初步 ROC 曲线
请注意,每个分类器都是用默认参数实例化的,因此结果可能会因参数而异。在一项更深入的研究中,人们会将每个模型的最佳之处与其他模型的最佳之处进行比较。为了限制项目的范围,我们决定使用 XGBoost,因为它的整体性能更好。总体而言,XGBoost 能够实现 0.68 的 AUC。
优化结果
与所有机器学习算法一样,交叉验证和网格搜索是最大限度提高性能的有用工具。超参数调整可能是一个计算量很大的过程,因此最好用 google colab 笔记本来完成。然而,模型超参数仅针对少量试验进行了调整。
输出的解释
来源:维基百科
美国联邦贸易委员会(FTC)是美国负责消费者保护和监管商业行为等事务的机构。取决于你住在哪里,大概有一个政府机构有类似的任务。
联邦贸易委员会可能会要求一个机构解释为什么某些贷款申请被拒绝或面临法律后果。因此,模型的可解释性对于法律遵从性是至关重要的。此外,如果任何特征与个人信息有关,如性别或种族:放弃它们。这不仅是不道德的,也是违法的。
从产品的角度来看,网站上的用户可能想知道为什么他们的申请没有通过。会不会是他们的年龄?信用评分?有什么对他们有利的因素吗?沮丧的用户倾向于完全放弃这个平台。不透明的机器学习模型注定会失去业务。可解释性不仅是法则,也是成长的关键。
因此,本节将讨论如何理解起作用的潜在特征,以及它们如何影响模型的决策。
不透明的机器学习模型注定会导致糟糕的决策
我们利用 SHAP 值来获得模型输出的逐例解释。注意,SHAP 特征重要性与特征排列重要性截然不同。事实上,排列是基于模型性能的下降,而 SHAP 是基于特征属性的大小。
图 4: SHAP 汇总图
图 4 是每个特征的 SHAP 值的密度散点图,用于确定每个特征对训练数据集中个体的模型输出的影响程度。
图 4 将输出限制为前 30 个特征,这些特征按所有样本的 SHAP 值大小的总和排序。最大的特点是“路基”(贷款俱乐部指定的等级),最好的等级是 A1,最差的是 G5。直觉上,让评级最高的申请人最有可能还清贷款是合理的。
下一个特性是“term ”,指的是贷款的还款次数,值以月为单位,可以是 36 或 60。第三个特征“dti”是“一个比率,使用借款人每月总债务支付额除以借款人自我报告的月收入来计算总债务,不包括抵押贷款和要求的 LC 贷款“。
我们将注意力转移到房屋所有权上,它可以是拥有、抵押贷款、租金、任何、其他或没有之一。在项目的特征工程部分,我们决定用一个数值来代替这些观察值,这样拥有一个家就有了最高的价值。我们之所以关注这一特性,是因为对于一部分用户来说,拥有房屋可能是即将发生违约的一个指标。这里值得注意的是,功能交互可能在这个评估中发挥作用。
把所有的放在一起
照片由 Precondo CA 在 Unsplash 上拍摄
随着我们的模型得到训练,结果令人满意,我们可以将它包装成一个脚本,用户可以输入关于自己的信息,并接收信用评估。
更大的目标是提供一个个案解释,使贷款申请成为一个透明的过程
我们必须考虑我们可以合理地要求用户做什么。例如,C1 的子等级意味着什么?用户如何知道他们的立场?因此,我们参考 Lending Club 的 SEC 文件,该文件提供了一个子等级与 FICO 平均分数的表格(参见第 49 页)。下面是路基和 FICO 之间的关系图:
图 5
请注意,这个图表并不完全像我们希望的那样稳健。请注意,图中有违反逻辑的扭曲:F1 比 E5 有更好的 FICO 分数。我们预计 FICO 分数和次等级之间几乎完全呈线性正相关。关于如何计算次级评级,还有其他考虑因素,可能隐藏在 SEC 文件的其他部分。然而,在这项研究中,我们认为这些信息已经足够了。
我们还必须考虑到这部分用户的疲劳和我们的应用范围。在 app 开发方面,我们可以要求用户输入 30+条关于自己的信息进行初步评估吗?出于实际考虑,我们将限制关键项目所需的输入,例如:
- FICO 评分
- 位置
- 债务收入比
- 贷款金额
- 岁入
示范
我们利用 python 的 Flask 框架来创建一个简单的网站。然后,我们使用 heroku ,一个支持多种编程语言的云平台服务,在线部署它:
[## 贷款帮助:初步贷款审批帮助
预测贷款违约
loan-help.herokuapp.com](https://loan-help.herokuapp.com/)
下面是如何使用该网站的演示。我们从填写信息开始:
点击 submit 按钮会产生一个决定和关于贷款的信息:
开发 Web 应用程序时的注意事项
在 Heroku 或其他任何地方开发应用程序的最重要的经验是:总是用明确指定的版本来指定 python 依赖关系。
此外,还要考虑预期的流量以及如何减少计算时间。例如,页面一打开就加载 pickled 模型,这样就省去了我们每次做预测时都要加载它的麻烦。另一方面,该网站托管在一个免费的域名上,30 分钟不活动后就会休眠。
最后,考虑我们期望的输入类型和值,并在需要的地方设置硬限制。W3schools 为那些想开始学习的人提供了一个简单的教程。
违约和保险
到目前为止,我们已经能够以债权人和贷款申请人易于理解的方式解释模型的输出。我们可以进一步将我们的发现扩展到评估风险和增加债权人收入的实际方法中。在本节中,我们将简要介绍如何将数据科学应用于贷款保险。
一些债权人可能希望为他们的资产投保以防违约。我们如何计算预期增益?让我们假设一个简单的案例,申请人获得 1000 美元的贷款。
每个月底,债务人都要连本带利地还钱。如果在任何月份有 5%的违约概率,那么债权人的预期利润是:
其中n _ payed是支付月末费用的次数,n _ payable是未支付的次数。如果所有的账单周期都还清了,信贷将收回他们的钱加上利息。如果在任何时候债务人拖欠贷款,任何未来的付款都被视为损失。
这如何在更大范围内应用?保险公司将有可靠的和不那么优秀的债务人。通过将这些投资组合汇集在一起,保险公司可以提供更低的利率,因为违约造成的损失被有价值的债务人全额支付的保费所抵消。数据科学在这里扮演了一个关键角色,因为它会产生每笔贷款的违约概率。
得分和信心
通常,我们希望展示我们的最佳绩效指标,然后就到此为止。但是,部署的模型会持续返回相同的结果吗?我们如何向利益相关者保证最低限度的绩效?
使用 Bradley Efron 和 Robert Tibshirani 的. 632 Bootstrap 方法,我们能够构建置信区间。我们发现 95%的时候,AUC 在 (0.64,0.67) 之间。
缩放产品
照片由 Pepi Stojanovski 在 Unsplash 上拍摄
机器学习模型最终将驻留在专用的网络服务器上,并由使用该服务的债权人和债务人调用。抛开加载网页和访问数据所需的时间,做一个决定需要多少时间?
我们对测试数据进行了这个测试,发现平均来说,预测是在 203 微秒内做出的,标准偏差是 62 微秒。性能可能会得到优化,但是时间是相当合理的。
总结和展望
Fabian Blank 在 Unsplash 上拍摄的照片
利用消费者数据,我们能够帮助市场双方评估贷款结果,做出更明智的决策。输入和结果用简单的英语给出,不需要专业知识。
尽管我们尽了最大努力,我们还是无法实现一个几乎总是正确的模型。这部分是由于问题的模糊性。此外,一些关键特征在数据中不存在,如年龄、教育水平和微观/宏观经济因素。
与任何机器学习模型一样,定期更新我们的训练数据至关重要。随着时间的推移,消费者趋势发生变化,新产品出现,基本事实发生变化,因此我们的指标开始受到冲击。
我们重新训练模型的频率以及使用哪些数据超出了本文的范围,但是在生产部署之前必须考虑。
希望你喜欢阅读这篇文章!
有问题吗?评论?反馈?或者你只是想进一步讨论事情?请随时联系我,我会尽我所能迅速回答你!
参考
虽然一个“C”的平均分在学术等级上可能感觉中庸,但获得五个 C 的学分是…
www.nerdwallet.com](https://www.nerdwallet.com/blog/5-cs-credit/) [## Lending Club 贷款数据
分析 Lending Club 发放的贷款
www.kaggle.com](https://www.kaggle.com/wendykan/lending-club-loan-data) [## 信贷和贷款
关于信贷和贷款的决定涉及很多因素,包括你需要多少钱,你能得到什么条件…
www.consumer.ftc.gov](https://www.consumer.ftc.gov/topics/credit-and-loans) [## 5.10 SHAP (SHapley 附加解释)|可解释的机器学习
本章目前仅在此网络版本中可用。电子书和印刷品将紧随其后。SHAP(沙普利添加剂…
christophm.github.io](https://christophm.github.io/interpretable-ml-book/shap.html) [## 贷款保障保险适合你吗?
贷款保障保险旨在通过在需要时提供经济支持来帮助投保人。是否…
www.investopedia.com](https://www.investopedia.com/articles/pf/08/loan-protection-insurance.asp) [## 保险联营
保险联营是一种做法,其中一组小公司联合起来,以确保更好的保险费率和…
www.inc.com](https://www.inc.com/encyclopedia/insurance-pooling.html) [## 预期值
在概率论中,随机变量的期望值是其概率分布的一个关键方面。的…
en.wikipedia.org](https://en.wikipedia.org/wiki/Expected_value)
交叉验证的改进:. 632+ Bootstrap 方法,Bradley Efron 和 Robert Tibshirani
[## 使用 Lending Club 免费了解您的 FICO 分数
信用评分贷款俱乐部(LC)是一个人对人的贷款网站,连接借款人和贷款人(LC…
www.doctorofcredit.com](https://www.doctorofcredit.com/use-lending-club-find-fico-score-range-free/)
https://www . sec . gov/Archives/Edgar/data/1409970/000089161808000318/f 41480 ors v1 . htm
如何用 PostgreSQL/PostGIS 连接空间数据
初学者指南和教程
马克斯·拉罗彻尔在 Unsplash 上拍摄的照片
连接数据是数据科学领域的一项常见任务。虽然常规的 SQL 表连接是一个很好的特性,但空间连接的真正威力给我留下了深刻的印象。
通过空间连接,您可以基于不同表的几何关系关联它们的信息。在本教程中,我们将看到空间连接的示例以及空间连接后的要素汇总。
如果你是 PostgreSQL/PostGIS 世界的新手,我有一个初学者教程来设置你的环境,并通过一步一步的指导让你快速入门。
[## 使用 PostgreSQL/PostGIS 的空间数据科学
PostgreSQL 和 Python 空间数据入门实用指南。
towardsdatascience.com](/spatial-data-science-with-postgresql-postgis-2f941c8c367a)
探索数据
我们在本教程中使用了巴塞罗那 Airbnb 数据集,统计面积较小。我们的任务是将 Airbnb 公共列表加入到它们所属的各自较小的统计区域中。换句话说,我们希望找出每个 Airbnb 指向的区域。最后,我们将汇总连接的数据,找出每个统计区域有多少 Airbnb 招待所。
在我们进行空间连接之前,让我们先熟悉一下数据集。我们通过查询这些列并将结果限制在前 100 个列表来查看公共列表。
SELECT name, host_name, room_type, price, reviews_per_month, neighbourhood, geom
FROM public.listings
LIMIT 100;
我们在下面显示了前十行的结果。我们有列表的名称、主机名、房间类型、价格、评论、邻居和几何图形(Geom)。几何列有一个小眼睛,允许您可视化空间数据。
Airbnb 列出巴塞罗那
这是 Airbnb 列表的几何查看器的输出。请注意,这仅限于前 100 分。
Airbnb 房源巴塞罗那 PgAdmin 4 几何查看器
现在,让我们看看统计区域数据集。我们简单地将列限制为几何图形和区域代码。
SELECT aeb, geom
FROM public.statistical_areas
巴塞罗那较小的统计区域
下图显示了使用 PgAdmin4 几何查看器可视化的统计区域多边形。
巴塞罗那统计区域 PgAdmin 4 几何查看器
在执行空间连接之前,请确保检查两个数据集的坐标参考系统(CRS)是否匹配。我们可以像这样简单地查询出每个数据集的空间参考系统。
SELECT ST_SRID(geom)
FROM public.statistical_areas
LIMIT 1;
两个数据集都有 WGS84 CRS,因此我们可以继续执行空间连接。
使用 PostGIS 进行空间连接
我们已经看过数据集并检查了数据集的 CRS。现在一切都准备好了。为了连接两个数据集,我们可以使用不同的空间关系,包括ST_Within
、ST_Contains
、ST_Covers
或ST_Crosses
。在这个例子中,我们使用ST_Within
来找出哪个点在哪个多边形内。
SELECT
houses.name AS guest_name,
houses.room_type as room,
houses.price as Price,
areas.aeb AS statistical_code
FROM listings AS houses
JOIN statistical_areas AS areas
ON ST_Within(houses.geom, areas.geom)
结果是这个包含 Airbnb 列表的表格,其中有一个额外的列指示每个点属于哪个统计区域代码,如下表所示。
空间连接结果
太好了!如果您只想找出每个点的所属位置,那么空间连接可能就是您的最终结果。但是,我们可能需要汇总空间连接结果,以了解数据集的分布情况。
汇总空间连接结果
任何 SQL 聚合函数都可以在这里工作,以从空间连接的数据集中获得洞察力。假设我们想要找出每个统计街区的平均 Airbnb 列表价格。
我们只需要对标价使用平均聚合函数,并按统计区域对数据进行分组。
SELECT
AVG(houses.price) AS AVG_Price,
areas.aeb AS statistical_code
FROM listings AS houses
JOIN statistical_areas AS areas
ON ST_Within(houses.geom, areas.geom)
GROUP BY areas.aeb
结果就是这张表,其中显示了每个统计区域的平均价格。
这是一张显示巴塞罗那统计区域平均价格分布的地图。
巴塞罗那统计区域的 Airbnb 平均标价-使用 QGIS 创建的地图。
结论
在本教程中,我们了解了如何使用真实数据集通过 PostGIS 进行空间连接。我们使用几何关系成功地将 Airbnb 列表连接到它们各自的统计区域。您可以尝试使用ST_Contains
来得到相同的结果。您可能还想尝试不同的聚合函数,比如计算每个统计区域中的列表数。
如何在 Golang 中加入弦乐?
马修·皮尔斯在 Unsplash 上的照片
golang 中有多种连接字符串的方式。
让我们从简单的开始。
最初发布于https://schadokar . dev。
使用+运算符🔧
**package main****import (
"fmt"
)****func main() {
str1 := "Hello"
// there is a space before World
str2 := " World!"****fmt.Println(str1 + str2)
}**
输出
**Hello World!**
使用 Sprint,Sprintf,Sprintln 🛠
fmt 包有 Sprint 、 Sprintf 和 Sprintln 函数,可以使用默认或自定义格式格式化字符串。
所有的Sprint
函数都是变量函数。
可变函数 可以用任意数量的尾随参数调用。
冲刺
Sprint
使用默认格式格式化并返回结果字符串。
Sprint
接受空接口。这意味着它可以接受 n 个任意类型的元素。
如果没有传递字符串类型的元素,那么结果字符串将在元素之间添加一个空格。
**package main****import (
"fmt"
)****func main() {
num := 26** **str := "Feb"** **boolean := true** **withStr := fmt.Sprint(num, str, boolean)** **fmt.Println("With string: ", withStr)** **withOutStr := fmt.Sprint(num, boolean)** **fmt.Println("Without string: ", withOutStr)
}**
输出
With string: 26Febtrue
Without string: 26 true
Sprintf
Sprintf
根据格式说明符格式化并返回结果字符串。
格式说明符
%v the value in a default format
%s the uninterpreted bytes of the string or slice
检查fmt
包中所有可用的格式指定符。
您可以使用
*Sprintf*
功能来创建 DB 的*connection string*
。
例如我们将创建一个 Postgres 连接 URL 。
*连接 URL 格式:*postgres://username:password @ hostname/databasename
**package main****import (
"fmt"
)****func main() {** **dbname := "testdb"** **username := "admin"** **password := "test1234"** **hostname := "localhost"** **connectionURL := fmt.Sprintf("postgres://%s:%s@%v/%v", username, password, hostname, dbname)** **fmt.Println(connectionURL)
}**
输出
**postgres://admin:test1234@localhost/testdb**
Sprintln
Sprintln
使用默认格式格式化元素或参数。在元素之间添加空格,并在末尾添加一个新行。
**package main****import (
"fmt"
)****func main() {** **str1 := "Hello"
str2 := "Gophers!"** **msg := fmt.Sprintln(str1, str2)** **fmt.Println(msg)
}**
输出
**Hello Gophers!**
使用连接功能🔩
Join
函数接受一个字符串数组和一个分隔符来连接它们。
**func Join(elems []string, sep string) string**
该示例包含一组工作日。Join
函数将返回由,
分隔的一串工作日。
使用
*Join*
你可以将一个字符串数组转换成一个字符串。
**package main****import (
"fmt"
"strings"
)****func main() {
weekdays := []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}
// there is a space after comma
fmt.Println(strings.Join(weekdays, ", "))
}**
输出
**Monday, Tuesday, Wednesday, Thursday, Friday**
你可以在 上看我最新的 golang 教程我的博客 。
如何在你的人工智能模型中避免偏见
人工智能模型是空的,中立的机器。当用有偏差的数据训练时,他们会产生偏差
如今,人工智能(AI)中的偏见备受争议。从图像分类器给人们的脸贴不正确的标签到雇佣机器人在筛选求职者时歧视女性,当试图自动复制它们时,人工智能似乎继承了人类最糟糕的做法。
风险在于,我们将利用人工智能创造一支种族主义、性别歧视、满嘴脏话的机器人大军,然后这些机器人会回来困扰我们。这是一个伦理困境。如果 AI 天生就有偏见,那么依赖它不是很危险吗?我们最终会塑造我们最糟糕的未来吗?
机器将成为机器
我先澄清一点:AI 只是一台机器。我们可以把它拟人化,但它仍然是一台机器。这个过程就像我们和孩子们在湖边玩石头一样,突然间,一块普通的石头变成了可爱的宠物石。
即使和我们的孩子一起玩,我们通常也不会忘记,一个宠物石,无论多么可爱,也只是一块石头。我们应该对人工智能做同样的事情:无论它的对话或外观多么像人类,我们都不应该忘记它仍然只是一台机器。
例如,前段时间,我做了一个机器人项目:一个教师机器人。这个想法是为关于开源数据科学软件 KNIME Analytics Platform 的文档和特性的查询生成自动的信息答案。在所有的 bot 项目中,一个重要的问题是说话方式。
有许多可能的说话或写作风格。就机器人而言,你可能希望它友好,但不要过分友好——有礼貌,但有时会根据情况表现得很自信。博客文章“描述写作或说话风格的 60 个单词”列出了不同机器人说话风格的 60 种细微差别:从闲聊和对话到抒情和文学,从有趣和雄辩到正式,以及我最喜欢的不连贯。我的机器人应该采用哪种说话方式?
我选择了两种可能的风格:礼貌和自信。彬彬有礼到了诗意的极限。自信到近乎不礼貌。两者都是自由文本生成的问题。
作为这个教师机器人项目的一部分,几个月前我实现了一个简单的深度学习神经网络,它具有一个隐藏层的长短期记忆(LSTM)单元,以生成自由文本。
网络将 M 个字符的序列作为输入,并在输出层预测下一个最可能的字符。因此,给定输入层的字符序列“h-o-u-s ”,网络将预测“e”为下一个最可能的字符。在自由句子语料库的训练下,网络学会一次生成一个字符的单词甚至句子。
我没有从零开始构建深度学习网络,而是(跟随当前的趋势,在互联网上找到现有的例子)在 KNIME Hub 中搜索类似的自由文本生成解决方案。我发现了一个例子,一个类似的网络在现有的真实山脉名称上进行训练,为一系列户外服装新产品生成虚拟的无版权的山脉候选名称。我下载了网络,并根据我的需要对其进行了定制,例如,将多对多转换为多对一架构。
该网络将在一组适当的自由文本上接受训练。在部署期间,将提供 M=100 个初始字符的触发语句,然后网络将继续自己组装它自己的自由文本。
基于 LSTM 的深度学习网络,用于自由文本生成。
人工智能偏差的一个例子
想象一下,一个客户或用户有着不合理但根深蒂固的期望和不可能的要求。我该怎么回答?机器人应该如何回答?第一项任务是训练网络变得自信——非常自信到不礼貌的极限。哪里可以找到一套坚定自信的语言来训练自己的人脉?
我最终在一组说唱歌曲文本上训练了我的基于 LSTM 的深度学习网络。我认为说唱歌曲可能包含这项任务所需的所有足够自信的文本。
我得到的是一个非常污言秽语的网络;以至于每次我向观众展示这个案例研究时,我都要请所有未成年人离开房间。你可能会认为我创造了一个性别歧视、种族歧视、不尊重——也就是公开有偏见——的人工智能系统。似乎我做到了。
下面是网络产生的说唱歌曲之一。前 100 个触发字符是手动插入的;这些是红色的。网络生成的文本是灰色的。当然,触发句对于为文章的其余部分设定合适的基调是很重要的。对于这个特殊的例子,我从英语中最无聊的句子开始:软件许可描述。
有趣的是,在所有可能的单词和短语中,神经网络选择在这首歌中包括“支付费用”、“昂贵”、“银行”和“诚实地”。语气可能不一样,但内容尽量符合触发句。
人工智能生成的说唱歌曲的例子。红色的触发句是软件许可证文档的开始。
关于这个网络的建设、训练和部署的更多细节可以在文章“人工智能生成的说唱歌曲”中找到
这种语言可能不是最优雅和正式的,但它有一个令人愉快的节奏,主要是由于押韵。注意,为了使网络生成押韵文本,过去输入样本序列的长度 M 必须足够。押韵适用于 M=100,但不适用于 M=50 的过去字符。
消除人工智能的偏见
为了重新教育我行为不端的网络,我创建了一个新的训练集,其中包括莎士比亚的三部戏剧:两部悲剧(《李尔王》和《奥赛罗》)和一部喜剧(《无事生非》)。然后,我在这个新的训练集上重新训练了网络。
部署后,该网络现在制作类似莎士比亚的文本,而不是说唱歌曲——在言语整洁和礼貌方面有了明显的改善。不要再说脏话了!不要再说脏话了!
同样,让我们从软件许可文本开始触发自由文本生成,看看莎士比亚将如何根据我们的网络进行。下面是网络生成的莎士比亚文本:红色,手动插入的前 100 个触发字符;灰色的是网络生成的文本。
即使在这种情况下,触发句也为接下来的话奠定了基调:“小偷”、“拯救和诚实”,以及令人难忘的“先生,现在耐心在哪里”都对应于软件许可证的阅读。不过这次说话风格很不一样。
关于这个网络的建设、训练和部署的更多细节可以在“AI 能像莎士比亚一样写作吗?”
请记住,产生类似莎士比亚文本的神经网络与产生说唱歌曲的神经网络是同一个神经网络。一模一样。它只是在一组不同的数据上进行训练:一方面是说唱歌曲,另一方面是莎士比亚的戏剧作品。因此,产生的自由文本是非常不同的——正如在生产中产生的文本的偏差一样。
人工智能生成的莎士比亚文本的例子。红色的触发句是软件许可证文档的开始。
总而言之,我创造了一个满嘴脏话、咄咄逼人、有偏见的人工智能系统,也创造了一个非常优雅、正式、几乎诗意的人工智能系统——至少就说话风格而言。它的美妙之处在于,两者都基于相同的人工智能模型——两个神经网络之间的唯一区别是训练数据。这种偏见实际上是在数据中,而不是在人工智能模型中。
偏入,偏出
事实上,人工智能模型只是一台机器,就像宠物石最终只是一块石头。它是一台根据训练集中的数据调整其参数(学习)的机器。训练集中的性别歧视数据产生了性别歧视的 AI 模型。训练集中的种族主义数据产生了种族主义的 AI 模型。由于数据是由人类创造的,它们也经常有偏差。因此,产生的人工智能系统也会有偏差。如果目标是有一个干净、诚实、无偏见的模型,那么在训练之前,训练数据应该被清理并去除所有偏见。
首次发表于 信息世界。
如何跟上学术文献
学会持续有效地做文献综述
跟上学术文献就像试图从消防栓喝水一样——似乎不可能跟上!(感谢亚历克斯·科宁斯)。来自 dlpng.com、freepik.com的作品。
学术出版正在爆炸式增长。每年有超过 250 万篇论文出版,而出版速度每年攀升 8%的事实对此毫无帮助。有这么多东西要读,很容易让人觉得我们只是在勉强维持生计。
不幸的是,跟上文学是那些事情中的一件——就像走路——并没有真正教给我们。我们被期望自学它。然而,在过去的几年里,我意识到,即使我们有自己查找和阅读论文的风格,也有一些被许多人掌握的、但不为所有人所知的良好实践。只有在我坐在教室里学习如何跟上文学之后,这一点才变得明显起来(吴恩达的讲座)。
在这篇文章中,我将把这些教训与来自我的同事、教授和我自己的经验的其他有价值的见解结合起来。到文章结束时,我们会学到:
- 如何找到与我们相关的论文?
- 如何使用三遍法有效地阅读这些论文?
- 为什么持续的阅读胜过突发的活动?
读什么?一套精心策划的文章。
甚至在我们学会如何高效阅读之前,跟上学术文献的一个方法就是缩小我们的范围,仔细选择我们阅读的内容。除非你是一个像达芬奇一样的博学者,否则你感兴趣的领域很可能很窄,可以用 6-10 个关键词来定义。因为我是一名地球科学家,所以我使用“野火”、“森林死亡率”等关键词。
你可以使用尽可能多的关键词来定义你的范围,但是要尽量保持每个关键词的明确性。比如“深度学习”就是一个很可怕的关键词,因为它不够具体。这将导致数以千计的不相关的文件,在其中找到与你相关的就像大海捞针一样困难。另一方面,“图像分割”是一个很好的关键字,因为它是特定的。最后,不要羞于及时更新你的关键词,以反映你不断变化的兴趣。
使用像“图像分割”这样的特定关键词比使用像“深度学习”这样的宽泛关键词更好,这样可以减少混乱,并使你的阅读列表易于管理。数据来源:科学网。图片作者。
一旦你定义了你的关键词,使用以下资源收集与你相关的文献-
- 在(免费)、 Scopus (付费),或者科学之网(付费)上在线搜索。此选项仅对一次性搜索有效。你不能仅仅依靠这个来让自己跟上文学的发展(稍后解释)。
- 会议记录
- Twitter - 用你的关键词搜索合适的人,关注他们。
- 朋友和同事——利用你的关系网找到合适的论文。如果你找到他们地区的文件,你可以还他们人情。
- 谷歌学术提醒——用你的关键词设置提醒,或者“关注”你感兴趣的教授。
- 目录 -设置接收杂志目录的提醒,你所在地区的文章经常在这些杂志上发表。JournalTOCs 是一个很棒的服务,因为它为大多数期刊合并并发送提醒。对于浏览目录的重要性,人们有不同的看法。然而,我发现克服这种盲目的感觉是很有用的——它让我们得以一窥更广阔的科学世界的发展。
一旦我们使用我们的关键词编辑了一个精选的论文列表,我们就可以使用三遍方法来阅读它们。
如何阅读?三重途径被形象化了。
阅读论文时,我们要确保在略读其余部分的同时,详细阅读所有重要和相关的论文。当然,事先无法知道什么是重要的。因此,从头到尾阅读每篇论文并不是对我们时间的有价值的利用,因为每篇论文的相关性不同——有些可能对它们的背景很重要,有些可能有助于激励我们的特定项目,有些可能有我们想要复制的分析,有些可能有与我们最初的假设相反的结果(因此通读非常重要)。
不要浪费时间从开始到结束依次阅读每篇论文。图片作者。
我发现阅读论文的三步法(S. Keshav 的论文)不仅帮助我识别项目的重要论文,还让我专注于每篇论文中的相关部分。通过这种方式,我可以在每篇论文中进行多次传递,每次传递都有更大的深度
第一轮:亮点。
第一轮:标题、摘要和图片+说明文字。来自 freepik.com的作品。
第一轮包括阅读标题、摘要和图表+说明。这一轮的目的是抓住一篇论文的重点,而不是通过它的细节。标题和摘要有助于我们抓住论文的主要结论。这些数字提供了一目了然的结果。
请记住,我们仍然没有了解到确切的结果,或者这篇论文的背景,这很好。在这个阶段,我们最感兴趣的是论文的“内容”,而不是“为什么”或“如何”。由于第一轮相当短,我在这一轮中涵盖了我从上一节收集的每一篇论文。
在第 1 轮中需要记住的一些思考内容:
- 作者试图完成什么?
- 如何使数字变得更好?(不管论文内容如何,这是一项需要学习的有用技能)
在第一轮结束时,我们可以筛选出那些显然与我们感兴趣的主题无关的论文。然后我们进入第二轮。
第二轮:核心。
第 2 轮:介绍、结果、结论、图表+标题,略读其余部分。来自freepik.com的艺术品。
第二轮包括阅读引言、结果、结论、图表和说明,并略读其余部分。这是我们真正开始理解报纸的地方。导言将帮助我们适应研究的需要,而结果和结论将帮助我们清楚地理解论文的发现。我发现这是我学得最多的一轮。
在第二轮中需要记住的一些提示:
- 有哪些想法或数据可以自己用?
- 你想关注哪些参考资料?
第三轮:细节。
第 3 轮:方法、讨论、参考资料,略读其余内容。来自 freepik.com的艺术品。
第三轮包括阅读方法,讨论,记下一些参考文献,略读其余的。这一轮是为了深入文件。通过详细研究这些方法,我们应该对自己能够复制这种方法相当有信心。因为我们在第三轮深入研究论文,所以这一轮只讨论那些与我们感兴趣的主题直接相关的论文。
由于我们在这一轮结束时已经经历了多轮,这是一个很好的时间来记录最初一组论文中被频繁引用的所有论文。在第三轮中,对讨论部分的额外关注也应该为我们指出具有类似发现的其他相关论文,或者这些结果可能非常重要的地方。
在第三轮中需要记住的一些提示:
- 该方法的关键要素是什么?
- 你想关注哪些参考资料?
三通是什么样子的。图片作者。
通过这种三关方法,我可以每周通读大约 25 篇论文,而不用在那些与我当前兴趣不太相关的论文上花费太多时间。因此,它节省了我大量的时间,而不会影响我对学术文献的需求。但是,只有经常执行,才算成功。
什么时候读书?天天!
如果你从这篇文章中只学到一样东西,那就是这个- 说到阅读,坚持胜过活跃。虽然文献综述在新项目的开始阶段无疑是有用的,但它并不是一项只针对开始阶段的活动。不坚持复习文献,会让我们变得过时。在像深度学习这样的新兴领域,更是如此,4 年前的论文被认为是旧的。
目标是与你的阅读保持一致。图片作者。
与阅读不一致是危险的,原因有二
- 一旦第一轮文献综述完成,我们就不再了解我们领域的最新发展
- 很有可能会错过一些我们最初没有涉及的重要文件
在一次会议上,当有人在我的报告后问我,“当论文 Y 表明它在像你这样的案例中不成立时,你为什么假设 X?”一般来说,这类问题有几个可以接受的答案,但没有一个是以*开头的,“我没有读过那篇论文,但是……”。*从那以后,我每晚睡觉前都会阅读至少一篇论文,这极大地帮助了我跟上文学的脚步。
一天一份报纸让你远离尴尬。
结论
在这篇文章中,我们学习了如何跟上学术文献。虽然网上搜索是可以的,但使用经常给我们提供论文的工具,如学者提醒或目录提醒,是至关重要的。有了一套精选的论文,我们可以遵循三步走的方法来有效地通读它们——首先抓住重点,然后进入核心,最后理解论文的细节。在每一轮结束时,随意扔掉与你感兴趣的话题无关的论文。最后,通过我自己的尴尬经历,我希望你重视每天阅读的需要,不要把文献综述作为一次性活动。
如何在不需要人工智能的工作中跟上人工智能的最新发展
思考如何平衡学习 SOTA 的需要和工作生活义务的现实。
鸣谢:Unsplash @jon_chng
介绍
本文是由 山姆·鲍曼 对这条推文(下图)的总结。大部分内容取自原始帖子的回复,并与我自己的经历交织在一起。
如果你在数据科学领域工作,你可能会认识以前问过这个问题的人(或者那个人实际上就是你自己)。尤其是如果你在一家非科技公司工作(实际上,即使是科技公司也能务实地解决他们的问题)——你的公司可能不会期望你花太多时间去阅读/研究/学习“艺术之初”( SOTA)的技术来解决你的业务问题。
这真是一个两难的选择。一个有时相当令人沮丧的问题。
这是一个两难的问题,因为成为一名优秀的数据科学家的一部分是推动数据科学所能提供的边界,但在你的工作场所并不鼓励你这样做。
令人沮丧的是,你总是隐隐约约地怀疑你当前生产系统中部署的任何东西都可以很容易地被最新的 SOTA 技术取代,但你却没有获准花一些工作时间阅读一些相关的研究论文,进行实验和 A/B 测试你的假设。
那么,一个数据科学家应该怎么做才能跟上世界的潮流呢?
一方面,成为一名体面的数据科学家的驱动力迫使你跟上最新的 AI/ML 进展,但在硬币的另一面,每天有这么多的论文要读,在这么多的领域发表。在一家对推动人工智能领域的发展不感兴趣的公司工作绝对没有帮助。
战略
从推特的帖子来看,这里有一些我喜欢的策略(也许对你也有用)。
1。错开你的学习
我喜欢上面的是,它让你不再需要总是关注最新的 SOTA 算法,而是迫使你专注于最终目标(即解决商业问题)。是的,你会迟到一会儿(FOMO 是真的)。但是你也可以在其他事情上保持一点点理智(比如帮助孩子做作业或者和你的妻子出去购物)。
我记得几年前伯特论文发表的时候,每隔几周你就会看到一个新的伯特变种出现,并声称 SOTA 分数。我不认为测试所有不同的嵌入是对您时间的有效利用——而且它们可能不会增加您的知识深度水平(因为当每个人都渴望证明一些东西时,在快速上升期间事情会很快变得陈旧)。
因此,在采用一种技术之前,有一个间隔年(或 6 个月)让尘埃落定,对我来说听起来是个不错的策略。更不用说在这一年的时间内,已经有大量的研讨会、教程、文章、视频、示例代码以及您需要快速了解的算法要点,以及如何有效地部署它(在您非常熟悉的框架中)。
2.听播客
在我看来,播客是消费最新 SOTA 最简单的方式。一天的通勤时间(Covid 19 之前)大约花费我 3 小时的时间(来回),一集播客通常在 30 分钟到 1 小时之间,取决于提供商。这意味着在一周内,它会总结出 15 个小时的高质量内容,如果我觉得这个话题有趣,我可以随时回去看。
我最喜欢的如下:
- TWIML(涵盖整个人工智能领域、垂直业务和 ML Ops)
- NLP 亮点(Allen NLP 人员采访其他 NLP 专家)
- Lex Friedman 的人工智能
3.加入一个虚拟的纸质阅读小组
如果说新冠肺炎有什么好消息的话,那就是它已经成为许多公司虚拟知识共享的催化剂。我最近关注的一些问题是:
- Stitchfix 制作的 Algo Hours (录像可在 Youtube 上获得)
- 深度学习沙龙通过权重和偏见(Youtube 上有录音)。
- HuggingFace 已经在各种技术会议和他们的 Youtube 频道上分享了许多内容,但还没有开始分享内部讨论。然而,他们确实会在 Github 上分享他们正在阅读的内容。
- Kaggle 阅文组。它很过时了(最后一次更新是在 2019 年 12 月,所以可能没那么老……),但是涵盖了很多 NLP 研究论文。准备人:Kaggle 的 Rachael Tatman。
5.由 dair.ai 的 elvis 主持的论文阅读&讨论 dair . ai,这是一个相当新的发现,我还没有时间深入研究他们的材料。不过,过去录音的标题看起来确实很有趣。
然而,回到现实,我从来没有刻意去观看或参加每一场直播的知识分享会(通常在中午 12 点左右+)。我通常会做的(Covid19 之前)是查找记录,将其保存在我的手机上(这对 Youtube 来说很容易),并在通勤期间观看它们。
当然,现在我大部分时间都在家里工作,每当我休息或什么的时候,我总是可以直接在 Youtube 上观看它们。大多数时候,我通常会专注于与我可以立即使用的东西相关的东西(回到上面的第一点)或者正在某个地方的商业环境中应用的东西(而不仅仅是最新的 SOTA)。
4.社区/社交媒体
前面提到的项目指出了你可以自己学习的事情。但是请注意,在大多数情况下,没有一个反馈环告诉你到目前为止你所学到的是否正确。
这就是与社区保持联系的好处。我能想到的一些好处是:
- 检查和平衡你的理解。
- 众筹解决问题的最快方法。一般来说,人们都很慷慨,只要你不被认为是在虐待他们。
- 能够加入各种主题的学习小组(从初级到高级)。TWIML ( 本周在机器学习)和 MLT ( 机器学习东京 ) Slack group 上的那些甚至为各个地理区域举办会议来迎合观众)。对于 fastai 库的用户来说, fast.ai 社区尤其活跃在他们的话语页面上。
- 通过 Twitter/Slack 等平台直接接触行业先锋和开拓者。关于这个平台,我最喜欢的是该领域专家的推文(以及他们的回应,比如激发这篇文章的那条)。能够通读来自书籍作者、讲师、研究人员和人工智能圈名人录的关于 ML 最佳实践、数据伦理、NLP 技术和其他主题的来回讨论总是令人耳目一新。
5.做
最终,一个人需要积极地工作在代码上,并构建一些东西来真正欣赏已经获得的知识。研究源代码,从事自己的项目,参加 Kaggle 竞赛,甚至写下你所学到的东西——将极大地帮助巩固你的理解,并将它保存更长的时间(即刻意练习)。
结论
与 AI/ML/NLP 的最新发展和艺术状态保持同步可能是一项艰巨的任务——如果你的日常工作不需要你处于 AI 研究的前沿,就更是如此。
在这篇文章中,我们介绍了一些如何跟上 ML/NLP 最新发展的技巧。总结一下,不容易。但更重要的是,也许你真的不需要停留在进步的前沿。
随着这些天 NLP 领域的进展越来越快——想要跟踪每周出现的每一件事情可能都不是一件好事。一个更好、更简单的方法是错开投入的比例,这样既能让同类中的佼佼者脱颖而出;同时也从炒作的循环中过滤掉虚假的声明。
其余的建议围绕着在业余时间消耗知识,利用网络进行信息过滤,以及分配一些时间进行有意识的练习。
如何跟上 ML 的最新研究和趋势
对 ML 的大肆宣传导致该领域的研究和兴趣急剧增加。在这篇文章中,我分享了我追踪最新研究和趋势的方法。
ML 中的出版物数量呈指数级增长。下面的图表来自 2020 年的 Jeffrey Dean,图表显示,自 2009 年以来,我们已经增长了 30 倍。现在,跟上该领域的发展趋势和研究进展变得更加困难。你是如何跟上时代的?
接下来,我们将首先看看其他人是如何跟踪这个领域的,然后我将分享我在过去几年在轻松地工作期间收集的技巧和诀窍。
其他研究人员是如何跟上最新研究的?
2019 年,我们对 CVPR、ICML、ICCV、NeurIPS 等会议接受的出版物作者进行了调查。来自学术界和行业研究实验室的 50 名研究人员参加了调查。
根据我们的调查,我们在 2019 年 3 月进行了调查
Arxiv 托管出版物的重印版,并对公众开放。这与 ML 研究人员对公开分享和传播他们的工作的强烈兴趣相结合,使其成为查找论文的首选地点之一。
会议可能是与该领域其他感兴趣的人进行身体交流的最佳场所。此外,他们列出了所有被接受的出版物,并向公众开放。我给你加了 CVPR 2019 、 ICML 2019 、 NeurIPS 2019 、 ICLR 2020 的链接。你也可以在网上找到会议发言的录音。我在这里列出了一些: CVPR 有自己的 YouTube 频道,对于 ICML,你可以在 YouTube 上简单地搜索“ICML 2019”来找到相关的演示文稿,对于 NeurIPS 也是如此。
谷歌学术可能是最广泛的关于 ML 出版物的数据库。它允许我们在引文中搜索(如下面我的一个提示和技巧所示)以及按出版日期过滤。例如,这将很容易过滤掉 2020 年后出现的所有引用 BERT 的公开论文。
人们不能忘记在同一领域工作的同事的重要性。我定期与来自世界各地的朋友交流,讨论我们最近感兴趣的论文。找到志趣相投的人的一个方法是参加当地的聚会小组。
我发现有趣的是 GitHub 越来越重要。我已经看到越来越多的存储库显示了“牛逼论文”的列表,例如牛逼-深度视觉、牛逼-深度学习论文。我不期望这些来源总是最新的,但是在一个地方有一个更有影响力的论文的“摘要”可能是方便的。
我觉得非常有用的提示和技巧
我将总结一些帮助我提高效率的要点。我使用的主要渠道是 Twitter、Reddit 和谷歌学者引文搜索。
创建一个 Twitter 账户,关注其他研究人员 尽管 Twitter 在我们 2019 年的调查中只获得了几票,但我觉得它对我保持最新状态有很大帮助。大多数与我的领域相关的 ML 研究人员都在推特上发布他们最新的研究论文。只要跟踪他们,每周查看几次我的 twitter 账户,我就能跟踪他们的工作。此外,他们经常转发他们喜欢的领域的其他新论文。因此,只要关注几十名研究人员,你就已经可以在 twitter 上看到很多有趣的新论文了。如果你是一名研究人员,还没有 Twitter 账户,那就创建一个,让其他同事随时了解你的工作进展。
使用 Reddit,不仅可以找到新的论文,还可以对它们进行讨论 我喜欢 Reddit 的一点是,在对他人的工作给出反馈时,人们会更加直接和诚实。我想强调一下机器学习子编辑。这个 subreddit 有将近 100 万用户。你不仅会发现许多新的有趣的出版物,还会在评论区看到其他人的评论和想法。使用 Reddit 时还有另一个好处:你经常会发现与你的领域没有直接关系的论文。作为计算机视觉领域的人,你也会发现关于 NLP 或语音识别的论文。就个人而言,我非常欣赏这一点,因为它让我能够看到跨数据类型和行业的研究模式。此外,它给了我一个自我监督学习的一般进展概述。2018 年, BERT 使用自我监督的预训练在 NLP 中展示了巨大的成功。2019 年取得了跨界突破,并被证明对计算机视觉具有不可估量的价值。
使用谷歌学者的“引文搜索”功能 对我来说,谷歌学术是找到与我当前研究相关的其他相关论文的最重要工具之一。假设我们想要在 Google scholar 上引用 SimCLR 的文章中搜索特定文本。只需切换“在引用文章中搜索”复选框,您将在引用 SimCLR 的文章中进行搜索。Arxiv 有一个在引文中搜索的类似功能,但是我个人偏好谷歌学术搜索。
切换复选框,在引用谷歌学术的文章中进行搜索
在一次会议上检查论文是否被接受 我经常看到自己落入这个陷阱。Arxiv 已经成为 ML 论文的热点之一。然而,提交给 Arxiv 是非常容易的,有时甚至太容易了。没有同行评审程序,例如,你可以在著名的会议上进行。你只需要已经注册的人的“认可”。这有其利弊。一方面,实验,其结果将不足以为其他会议可以出现在 Arxiv。不太成功的实验不像成功的实验那样享有相同的曝光度,但它们可以为我提供一些有价值的知识,这个简单的平台使它们可以公开。另一方面,在 Arxiv 上也可能出现错误的实验、错误的数字和结果。为了保持对这一缺点的警惕,快速检查您在 Arxiv 上找到的论文是否也被该领域的任何会议接受总是好的。
查看论文评论 对于一些论文,你会在 OpenReview 上找到反馈。举个例子,我在这里为你链接了 Karras et al .Progressive GAN 的反馈,2018 ,。并非所有的反馈都对你有用,因为你不是该出版物的作者。但它仍然可以帮助你更详细地理解某些部分,并了解其他工作与它的区别。
你如何跟踪你所在领域的相关研究和趋势?请在评论中分享你的建议和窍门。
Igor 联合创始人
lightly.ai
如何启动你的第一个数据博客?
弗兰基·查马基通过 Unsplash 拍摄
除了“之外,这可能是我最常被问到的问题了。你是如何找到数据科学/数据分析方面的工作的?“我将写另一篇关于我求职历程的博客,所以这篇博客将关注如何在没有工作的情况下获得行业曝光率。
我之前在 DIPD @加州大学洛杉矶分校 — *就这个话题做过一次演讲,这个学生组织致力于增加产品和数据领域的多样性和包容性,是我共同创立的。*然而,我的目标是扩展这个主题,让更多的人了解它。
我希望这篇文章能激发越来越多的数据爱好者开始他们自己的博客。
对我们许多人来说,这可能是一个艰难的时期,但这也是增强和提升你在数据科学和分析方面的技能的黄金时间。如果你的工作在这个时候受到了影响, 把不幸的当作一个休息、反思和启动你的个人项目——时间不允许时奢侈的事情。
“当一扇门关闭时,另一扇门会打开”——亚历山大·格雷厄姆·贝尔
艰难并不能决定你是谁,是你的态度和毅力决定了你的价值。让我们开始吧!
从哪里开始?
卡尔·海尔达尔通过 Unsplash 拍摄的照片
从小规模开始,逐步扩大
在我们开始任何项目之前, 先缩小你的兴趣范围 。这是你的个人项目,所以你有完全的自主权。找到让你兴奋的事情,让你有动力投入时间!
一路上会有很多挑战,可能会阻止或转移你完成项目,让你坚持下去的应该是与你的兴趣密切相关的分析主题。它不一定是世界之外的东西。问问自己什么对你来说是重要的,为什么我们要在乎它。
当我刚开始时,我知道我全心全意地关心心理健康和获得更多正念的方法。所以我更深入地分析了排名前六的冥想指导应用,以了解哪一个最适合我的偏好。
获得灵感
与 Raj 通过 Unsplash 公路旅行的照片
读,读,读!
以我的微妙的夫妻特质分析为例。通过 Spotify API 在音乐品味分析领域已经做了一些工作,但还没有人真正深入研究电影。所以我抓住这个机会,发现了我们夫妇对音乐和电影的狂热爱好的交集。
寻找合适的工具箱
Giang Nguyen 通过媒体 MinfulR 拍摄的照片
现在,到了这一步,您需要确定要收集哪些数据,并为这项工作找到合适的工具。 这部分一直与我作为数据分析师的行业经验有着内在的共鸣 。这确实是最具挑战性和最耗时的部分。
对于这一阶段的分析,我最好的建议是问很多实际问题,并提出一些你需要通过数据来回答或证明的假设。我们还必须注意项目的可行性,否则,你可以更灵活地调整你的方法,使之更可行。
注意,可以使用自己最得心应手的编程语言:)我相信 Python 或者 R 都有自己的优势和很棒的支持数据包。
我过去项目中的一个例子可以阐明这个策略。我对与抑制新冠肺炎相关的非药物因素很好奇,所以我列出了所有我能想到的变量,如天气、个人防护用品、重症监护室床位、隔离等。然后我开始对开源数据集进行大规模研究。
“所有的模型都是错误的,但有些是有用的”——乔治·博克斯
由于我没有公共卫生方面的背景,为这种类型的疫情数据建立预测模型是一个巨大的挑战。我首先从一些我熟悉的模型开始,如随机森林或贝叶斯岭回归。然而,我发现疫情通常遵循逻辑曲线的趋势,即病例在一段时间内呈指数增长,直到达到拐点并趋于平稳。这里指的是流行病学中的房室模型。我花了将近两周的时间来学习这个模型并将其应用到我的分析中,但结果非常令人着迷。我最终写了一篇关于此事的博客。
该过程
如果你在数据科学/分析领域工作,这对你来说并不陌生— “数据科学家 80%的时间都用于准备(简单地查找、清理和组织数据),只有 20%的时间用于构建模型和执行分析。”
照片由冲动创意
清理数据的过程可能很繁琐,但是当你做对了,你的分析就会更有价值,更有意义。以下是我在分析工作流程中采用的典型流程:
1)收集数据
2)清理数据
更多…
3)基于项目的技术
- (NLP) 情感分析、POS、话题建模、BERT 等。
- ***(预测)*分类/回归模型
- ***(推荐系统)*协同过滤等。
更多……
4)写下见解和建议
将这些点连接起来
这是分析中最重要的部分。我们如何将分析见解与现实环境联系起来,并提出可行的建议?不管你的项目的重点是什么,是关于机器学习、深度学习还是分析, w 你的分析/模型试图解决什么问题?
照片由 Quickmeme 拍摄
想象一下,我们建立一个高度复杂的模型来预测有多少媒体读者会为你的博客鼓掌。好吧,这有什么重要的?
将其与潜在影响联系起来!如果你的帖子从 claps 获得更多的支持,它可能会在媒体平台上更频繁地被策划和展示。如果更多的付费媒体读者找到你的博客,你可能会通过媒体合作伙伴计划赚更多的钱。这才是影响!
然而,这并不总是利润驱动的影响,它可能是社会,健康,甚至环境影响。这只是如何将技术概念与现实世界的实现联系起来的一个例子。
障碍
你可能会在旅途中的某些地方碰壁。我最好的一条建议是主动 寻求帮助 !
除了向朋友、同事或导师寻求建议之外,我经常发现在在线问答平台上搜索或发布问题很有帮助,如 Stack Overflow 、 StackExchange 、 Github 、 Quora 、 Medium 等等!在寻求解决方案时,要有耐心和创造力。如果在线解决方案还没有解决您的问题,请尝试考虑另一种方法来针对您的数据或代码版本的特征定制解决方案。
写作的艺术是重写。
当我第一次向 Medium 发布我的第一个数据博客时,我发现自己重新访问了我的帖子,并在这里和那里修改了一些句子或措辞。如果你在发布后发现一些错别字或语法错误,不要气馁,你可以随时回去编辑!
因为这是我们的个人项目,所以你没有义务一定要完成它。因此,优先顺序和纪律在整个过程中起着至关重要的作用。为你的项目设定一个明确的目标,并制定一个实现目标的时间表。同时,不要把自己分散得太开,因为这可能会让你失去兴趣。
了解您的时间表和容量!我经常在休息或周末的时候,用 2 到 4 周的时间来完成我的个人项目。为了组织你的冲刺,跟踪你的进度,你可以参考一些敏捷框架,可以通过协作软件找到,比如特雷罗或者阿萨纳。只要你取得进步,哪怕是最小的进步,总有一天你会成功。所以坚持下去,不要放弃!
结束语
第一步总是最难的 。如果你觉得项目还没准备好,给自己一点时间微调,分享一下!
一开始没有什么是完美的。但是通过将它交付给观众,你会知道在以后的项目中应该改进什么——我从产品管理的角度全心全意地采纳了这个原则。
我过去并不擅长清晰地表达我的想法(我仍在努力改进),但通过将自己推出舒适区,我已经走得更远了。我希望这将在某种程度上激励你开始你的第一个数据博客。相信你自己,勇敢一点,如果你一路上需要帮助,请联系我或你网络中的任何人!
“信念是迈出第一步,即使你看不到整个楼梯.”—马丁·路德·金
格伦·麦卡勒姆通过 Unsplash 拍摄的照片
点击这里查看我的数据博客
免责声明:本分析的目标是提供一些关于新冠肺炎传输的数据信息
towardsdatascience.com](/covid-19-what-do-we-know-about-non-pharmaceutical-interventions-ba5c9f4150bb) [## 微妙的夫妻特质:通过 Spotify 和网飞了解你爱的人
是的,像其他亚洲夫妇一样,我们分享每个订阅账户,包括 Spotify 和网飞·😄
towardsdatascience.com](/a-subtle-analysis-on-couples-music-and-movie-tastes-via-spotify-netflix-df40ce274383) [## MindfulR —应用商店评论挖掘
你有没有被淹没在思绪中?你希望变得更加专注和专注吗?
towardsdatascience.com](/mindfulr-how-app-store-review-mining-can-boost-growth-improve-product-and-increase-monetization-4d50e20e9834)
快乐的数据博客!🎉*
是的,你可以:如何开始你的数据科学家生涯
回答初级数据科学家和准数据科学家关于 ds 职业生涯第一步的常见问题
照片由来自 Pixabay 的 StartupStockPhotos 拍摄
如果你错过了,有一个疫情在那里,它迫使我们所有人关闭所有公共活动。随着时间的推移,我们都开始理解封闭、社交距离和缺少聚会的影响。我们意识到的一件事是,这里的“我们”我指的是我工作的 Taboola 的 Algo 团队,它对那些刚刚开始职业生涯或即将改变职业生涯的人有着重要影响。
我们曾经主持和参加过许多数据科学会议,并注意到许多初级数据科学家和准数据科学家利用这些聚会来寻求和接受关于他们职业道路的指导和非官方咨询。而现在,当所有这些都取消后,他们就没有人可以联系了。因此,我们提出了一个新的倡议,我们将其命名为 Algo Boost(Algo Boost . me),允许每个人与我们安排 30 分钟的一对一变焦会议,并获得他们所寻求的指导。
我们所在的以色列的数据科学界对此的需求之大让我们震惊。我们所有的志愿者在活动开始后的 6 个小时内就被预订满了。
我个人已经花了几个小时回答问题,并尽可能地提供指导,我发现有些问题和焦虑是大多数人都有的——老实说,我在开始职业生涯时也有过。因此,我认为把它们都写下来是一个好主意,包括我个人的想法,因为我相信更多的人会发现它们在这些时候很有用,在全球的其他地方也是如此。我还是想强调一下——这些都是我个人对事情的看法,仅仅是我自己的建议。
**数据科学家的实际含义变化很大。**在阅读数据科学职位描述时,您可能已经注意到,每个公司对数据科学的解释都不尽相同。在一些地方,这意味着你将从事深度学习模型的工作,在其他地方,这个角色主要涉及 SQL 和 Excel。确保你明白你所看到的具体角色是什么。如果你对数据科学的定义是研究机器学习和深度学习模型,那么—
你的第一份工作不会是数据科学家,这没关系。如果有什么事情我希望在我刚刚开始职业生涯时有人告诉我,那就是这个。数据科学家知道如何对问题建模,如何分析数据和结果,并且能够实现执行它的代码,显然还能调整它。如果这听起来像是很多技能,那是因为它是。这也是为什么它不是第一份工作。当你获得了作为分析师或软件开发人员的经验后,你就成为了一名数据科学家,然后作为你第一份数据科学家工作的一部分,填补了另一个角色的空缺。因此,如果你正在寻找你的第一份工作,从成为分析师或软件开发员(最好是大数据相关的)开始——无论哪个最适合你。我们大多数人都是这样开始的。例如,我在 Appsflyer 作为一名数据工程师开始了我的职业生涯,这无疑是我职业生涯中可能发生的最好的事情之一,也是我直到今天都感到自豪的事情之一。所以,万一不够清楚,请允许我强调一下—
**编程是工作的一部分,很重要的一部分。**实现机器学习模型意味着你需要对它们进行编码。并测试它们。并部署它们。以及修复 bug、升级——我们甚至还没有触及输入数据处理和功能设计。编码是数据科学家一天中的大部分时间所做的事情,不一定要编码一个最先进的模型。不是每个人都喜欢编码,这很好,因为虽然我可能在陈述显而易见的事情,但我想把这一点说清楚—
**不做数据科学家也没关系。**如今,数据科学似乎笼罩着一层巨大的光环。这是最热门的趋势,人们有时会觉得成为数据科学家是最好的职业道路。这绝对是错误的。对你来说,最好的职业道路是最适合你的,因为这是你茁壮成长的地方。对于任何问我如何成为数据科学家的人,我的第一个问题是:向我描述一下五年后你的工作日。如果你对分析、计算数据和使用统计数据来揭示有趣的见解感兴趣,但编码是你宁愿避免的事情——那么去做一名分析师。如果你想与人交谈,提出想法,并根据数据做出决定,那么你应该成为一名产品经理。这不是“让自己失望”或“退而求其次”——这些是有意义的、要求高的、极具挑战性的角色,具有很大的影响力,如果这是你真正想做的——去做吧。标题只是标题。但如果你真的在追求数据科学,这里有一些我个人的建议:
**关注与行业相关的模型。**机器学习和深度学习下有大量不同的模型类型和领域,但只有其中一些真正用于当今的行业。这些主要是图像识别、自然语言处理(NLP)和推荐系统。因此,虽然强化学习可能是你见过的最酷的事情(我非常同意你的观点),但这不是我建议你在启动职业生涯时关注的事情。去卡格尔,接我提到的类型的挑战,并尝试自己解决它们——。我的意思是,使用外部库来为你做困难的技术工作是我们在行业中实际做事情的方式,但是至少尝试自己实现一次简单的版本。例如,使用 NLTK 进行 NLP 词干分析是很棒的,但是试着看看你是否能自己实现它的一个基本版本。吴恩达在 Coursera 上的机器学习课程甚至有一个练习,让你从头开始实现反向传播。这些东西真的会让你明白事情是如何运作的,而且肯定会反映在你的工作面试中。如果你不确定你知道该如何应对这些挑战—
阅读,并确保你理解。数据科学家最重要的技能之一是自己寻找解决方案的能力。我们面临的许多挑战,我们第一次面对。对于这份工作来说,知道相关的来源并能够阅读学术论文&技术博客是必须的。练习这个,如果论文中有你不完全理解的地方,去寻找答案。一旦你找到了答案,
***写 blogposts,带代码。*这个技巧是我个人的最爱之一,因为这是我开始寻找我作为数据科学家的第一份工作时经常做的事情之一,直到今天仍然如此。我写博客的读者总是相同的——我,六个月后,在我忘记了博客里写的一切之后。所以每当我写博客时,我都会确保从最基本的开始解释我所做的一切,提供例子,并确保不留下任何漏洞或公开的问题。我发现这是确保我真正理解我认为我理解的东西的最好方法,遵循爱因斯坦的名言:如果你不能简单地解释它,你就理解得不够好。添加代码作为例子只会让它变得更好,因为它迫使你将理论转化为实践。
你真的需要更高的学位吗?这个问题的答案因你所在的国家而异。我可以告诉你,在以色列这里,答案将是:可能是,这是有原因的。顾名思义,数据科学家就是科学家,也就是说,我们进行研究。这意味着,掌握一个月前你还不知道的领域,了解最新的学术论文并设计&进行实验是数据科学的核心。这些正是人们在追求完成学术论文时所做的事情,这就是为什么拥有一篇论文是一个主要优势。也就是说,有些数据科学家只拥有学士学位。老实说,我在 Taboola 的第一个经理只有理学学士学位,但仍被认为是团队中最聪明的人之一。
你需要机器学习的学位吗?**简而言之就是没有。更长的答案将是:不,但你必须更加努力地工作来弥补差距。说实话,你甚至不需要计算机科学学位,但这是有代价的。我从未学习过计算机科学——我的学术背景是物理学,但我现在在这里。但我意识到我的数据科学知识和经验中存在漏洞,并努力工作来填补这些漏洞。如果你也不是来自学术数据科学背景,你必须迎头赶上——学会编码,学会处理数据,学会建模,学会分析,并真正理解你在做什么和为什么做。没有正式背景的代价意味着你的第一份数据科学工作可能比其他工作更长,需要更多的努力,但这是完全可能的。想知道应该采取什么步骤来获得数据科学家的第一份工作吗?嗯,从头读起:)。祝你好运!
由 starline / Freepik 设计
如何用 4 个简单的步骤为深度学习标记音频
使用 Audacity 标记音频文件并在 Python 中加载结果的快速分步指南
韦斯·希克斯在 Unsplash 上拍摄的照片。
为了训练深度学习模型,准备和管理数据集通常是非常重要的一步。在这个故事中,我展示了如何使用 Audacity 一款“免费、开源、跨平台的音频软件”来标记你的数据。
目录
- 声谱图表示
- 创建标签
- 导出标签
- 在 Python 上加载数据
1.声谱图表示
在安装 Audacity 并导入一个音频文件后,第一步是更改为声谱图表示,如下图所示。
大胆地看声谱图。作者打印屏幕。
然后,您可以在同一菜单中调整谱图设置,并通过右键单击显示比例来调整显示比例。在下面的例子中,我选择“Mel”选项来缩放。你可以在 Dalya Gartzman 的这个故事中读到更多关于 Mel 光谱图的含义。
将比例更改为 Mel。图片由作者提供。
2.创建标签
要创建标签,首先进入编辑>标签>在选择处添加标签并检查键盘快捷键(Windows 中的 Ctrl+B ),这样你就不需要每次都回到菜单。
寻找添加标签的选项。图片由作者提供。
现在您已经知道了键盘快捷键,在谱图中选择一个要标记的区域(单击并拖动),然后使用快捷键“在选择处添加标签”。将出现一个标签轨道,您可以输入标签的名称。您可以重复此过程,根据需要添加任意数量的标签!
创建标签。图片由作者提供。
**注意:**在您添加标签时播放片段会有所帮助。您可以使用“空格键”来播放和暂停。
3.导出标签
要导出标签,请转到文件>导出>导出标签。
导出标签。图片由作者提供。
结果是一个文本文件,每个标签指示开始和结束时间、标签名称以及最小和最大频率。频率值为-1 表示低于显示的最小值或高于显示的最大值。
导出标签的示例。图片由作者提供。
4.在 Python 上加载数据
对所有音频文件重复上述步骤后,您就可以在 Python 中加载数据了!我准备了以下代码来读取和显示带有相应标签的声谱图。该代码也可以作为 Kaggle 内核获得。
结果是下图所示的 Mel 谱图,红色边框对应于“标签数据框”(上面的代码)中的标签。
Mel 谱图和标签。图片由作者提供。
结束语
希望你觉得这个故事有用!请考虑在这个链接 加入我的私人邮件列表,这样你就不会错过我接下来的任何一个故事了!你可以在下面的两个故事中了解更多关于我的数据科学之旅!
[## 我的 3 年历程:从零 Python 到深度学习竞赛高手
自从 2017 年开始学习 Python 以来,我一直遵循的道路是成为一名独自参加 Kaggle 比赛的大师…
towardsdatascience.com](/my-3-year-journey-from-zero-python-to-deep-learning-competition-master-6605c188eec7) [## 我在 Kaggle 上的两年旅程:我如何成为竞赛大师
描述我的旅程和策略,我遵循成为一个竞赛大师与个人金牌
towardsdatascience.com](/my-2-year-journey-on-kaggle-how-i-became-a-competition-master-ef0f0955c35d)
感谢阅读!祝您愉快!
如何逐步标记用于对象检测的图像
标记图像的逐步详细指南
照片作者: Pixabay
图像标记是目标检测的第一步,也是最重要的一步。标注确实是一个非常耗时的过程,但是你在标注图像上投入的精力越多,你的模型就越精确。在这个故事中,我将详细讨论标签的完整方法。最后,通过这篇文章,您将为您的对象检测模型准备好您的标记数据。
这里你需要一个开源的工具来标注你的数据。要下载该工具,请按照以下步骤操作。
下载贴标工具
- 如果您的机器上安装了 Git,请在设备的 open 命令提示符下键入
git clone [https://github.com/pranjalAI/labelImg.git](https://github.com/pranjalAI/labelImg.git)
- 如果你没有安装 Git,那么去 https://github.com/pranjalAI/labelImg.git下载压缩目录。
- 如果你是通过链接直接下载的,那么解压你的压缩文件。zip 文件。
安装依赖项
- 您需要使用命令提示符进入“labelImg”文件夹。
- 之后需要安装一个名为“pyqt5”的库。在命令提示符下键入以下命令。
安装 pyqt5
定义自定义类
- 你需要去“labelImg\data”文件夹;在那里你会发现 predefined_classes.txt 在这里,你可以定义你的自定义类。
激活“标签”工具
在命令提示符下,键入以下命令。
启动标签工具
- 键入上面的命令后,您会看到一个交互式窗口,这是一个开源工具。
“标签”工具
你将在这里花费相当多的时间,因为这将帮助你得到标记的图像,并使它们为物体检测做好准备。
如何使用这个工具
- 点击“打开目录”并选择保存您需要标记的图像的文件夹。
- 然后点击“更改保存目录”这里,你需要选择目录来保存你的标签文件。该目录应该不同于图像目录。
- 现在你可以使用“创建矩形盒”在图像上绘制盒子。
- 点击保存按钮。它将生成一个包含盒子坐标的文件。
标签过程
- 您可以在一个图像中绘制多个框。它会要求分配一个类;选择您在上述步骤中定义的类别。
最后,您现在将拥有一个文件夹,该文件夹将使用与您的图像相同的名称来标记图像数据。您的数据现在可以进行对象检测了。尽管如此,如果你觉得你有更少的图像计数,那么请按照我的指南生成对象检测数据。这里,我展示了不同图像和标签增强技术。如果你想了解更多关于对象检测的后续步骤,那么请阅读我的另一篇文章,Python 中的自定义对象检测。在这里,我已经讨论了如何训练您的模型并将其部署到本地主机。
约翰·施诺布里奇在 Unsplash 上的照片
一些收尾建议
标注数据可能是一个非常耗时的过程,但是如果您想要在您的模型中实现良好的准确性,那么您必须在此步骤中给出合理的时间量。试着从不同的资源中收集尽可能多的图像。图像种类越多,你的模型就越好。
在你走之前……
如果你喜欢这篇文章,并且想继续关注关于 Python &数据科学的更多精彩文章——请点击这里https://pranjalai.medium.com/membership考虑成为一名中级会员。
请考虑使用我的推荐链接注册。通过这种方式,会员费的一部分归我,这激励我写更多关于 Python 和数据科学的令人兴奋的东西。
还有,可以随时订阅我的免费简讯: Pranjal 的简讯 。
如何开始你的数据科学生涯
你有兴趣进入数据科学领域吗?我们不怪你。数据科学是一个不断变化和发展的令人兴奋的领域,这给数据科学家的工作带来了无限的潜力。这里有六个方法可以让你开始你的数据科学生涯!
格伦·卡斯滕斯-彼得斯在 Unsplash 上拍摄的照片
1.熟悉 Python 和 SQL
学习 Python 和 SQL 将在您投身数据科学职业生涯时对您大有裨益。对于 python,有一个完整的数据科学包和工具的生态系统,你应该学习。为了帮助你,安装 Anaconda 发行版并查看这个伟大的资源让你开始pythonprogramming.net。对于您使用 SQL 的第一步,我们建议您查看伟大的w3schools.com。
2.参加在线课程
学位是开创新事业的必备条件的日子已经一去不复返了。如今,你可以通过在线课程独立学习,并获得在数据科学领域取得成功所需的技能和知识。去看看伟大的吴恩达。了解计算机科学、统计学和数学的基本概念——你就可以开始了。您可以参考的一些推荐课程和资源包括:
3.在 Kaggle 比赛
建立投资组合对于有抱负的数据科学家来说至关重要,就像对于艺术家来说一样。有了 Kaggle,你可以做到这一点。 Kaggle 是世界上最大的数据科学社区,它提供的工具和资源可以帮助您快速启动您的数据科学事业。Kaggle 还举办比赛,世界各地的数据科学家可以竞争,以产生预测和描述数据的最佳模型。想比赛吗?这里有一个提示:不要放弃比赛,直到你进入前 10%的提交名单,并且你的名字出现在排行榜上。这将迫使你推动自己,结果,你将熟悉该领域的最佳实践和最现代的工具和框架。
4.熟悉完整的开发者世界和工具包
数据科学家将大部分时间花在编写代码上。但是数据科学家不仅仅是编码员,他们还是技术专家。为了写出好的代码并产生更大的影响,熟悉技术世界和做事的最佳方法对你有好处。
5.听播客,读科技博客
播客和技术博客提供了一种极好的方式来了解数据科学领域发生的一切。播客也提供了一个很好的方式来听取该领域一些最伟大的思想关于行业中最紧迫的问题以及他们目前正在做什么和在想什么。你甚至可能会遇到一个故事,这个故事来自一个解决了和你正在处理的问题相似的问题的人,它会给你一些新的想法和见解。这就是我们刚开始建立特色商店时发生的事情,你可以在这里了解。
想知道从哪里开始?伟大的数据科学博客的数量可能会多得惊人。我们建议从这些开始:
在撰写本文时,这些数据科学播客仍然活跃,并且仍在制作中。从档案深处开始,一路向上:
6.与人交谈
加入论坛和其他在线团体,在那里数据科学家可以相互交流。您会发现大多数数据科学家都面临着相同类型的问题。与他人交谈,了解他们是如何解决他们所面临的各种问题的,这将有助于你学习和前进。
结论
我们生活在一个激动人心的时代,比以往任何时候都有更多的机会获得专业信息,这些信息可以帮助我们促进我们的职业发展。这也适用于寻求在数据科学领域开创职业生涯的人。通过在网上轻松访问课程、小组、竞赛和信息,以及实践和奉献,您可以获得作为数据科学家开始成功职业生涯所需的技能。
如何学习数据科学的编码
意见
提示 1:停止参加在线课程
当我第一次想学编程的时候,我在 YouTube 上看了 4 个小时的教程。
课程结束后,我想:“太棒了”。"我现在知道如何编码了!”
我很兴奋!我想了解更多。
所以我又上了一门教程。
然后……我又拿了一个。
还有一个。
听着耳熟吗?
这种情况持续了一段时间,直到我最终放弃学习如何编码。
我太习惯结构化的课程了,而且似乎没有明确定义的教学大纲可以让我在编码方面从“零到英雄”。
嗯,至少我试过了。现在我知道这不适合我,”我心想。
一年后,在与一些程序员交谈并阅读了一些资料后,我意识到自己陷入了一个叫做的教程陷阱。
什么是教程陷阱?
教程陷阱真的很容易掉进去了。
你想学习编码。有人承诺,如果你学习他们的课程,你将成为一名程序员。
你选这门课。
你用新的框架和语言一次又一次地这样做。
这是一个非常棘手的情况,尤其是因为你实际上感觉你在每个教程中都学到了一些东西。
不幸的是,你无法学以致用。你不能用自己的代码来解决问题,更不用说从头开始创建一个完整的项目了。
如果这是你,那么是时候跳出教程陷阱了。
突破教程陷阱
如果你读这篇文章是因为你想成为一名程序员,你来错地方了。
每个人学习编码的道路是不同的。我会简单地根据对我有效的方法给你指出正确的方向。
要跳出教程陷阱,首先需要停止上教程。
如果你上过一两门在线课程,你就会知道基本的语法和操作符。
- 变量
- 功能
- 控制流
- 环
- 数组
一旦你熟悉了基础知识和它们是如何工作的,继续前进!
所有的在线课程都会教你同样的东西,多学一门只会浪费你的时间。
了解这些之后,继续前进,开始做一些小的编码挑战。
Jukan Tateisi 在 Unsplash 上的照片
我个人最喜欢的是一个名为 HackerRank 的网站。他们面临不同难度的挑战。
一旦你掌握了编程的基本知识,这是一个很好的入门方式。它会帮助你熟悉这门语言。
这些挑战一开始可能会有点吓人,因为这是您第一次在没有编码的情况下解决问题。
如果你中途遇到困难,看看另一个人的代码也会帮助你开始思考。(不要只是复制粘贴他们的代码,试着去了解他们是如何解决的。)
当你看别人的代码时,你会注意到他们都是不同的。看待一个问题的方式总是不止一种,你可以采取许多不同的方法。
这将真正改变你作为程序员的思维方式,提高你的编码能力。
项目,项目,项目
Jo Szczepanska 在 Unsplash 上拍摄的照片
一旦你对自己无需遵循教程就能编写代码的能力有了一些信心,你就可以从项目开始了!
开始之前,心中要有一个最终产品
当我第一次进入数据分析领域时,我在任何地方都读到同样的建议。
做项目!
然而,我不知道该做什么项目。每次我开始做一件事,它都没有结果,我永远也不会完成它。
这是因为我头脑中没有一个坚实的目标。
当创建一个项目时,头脑中始终要有一个坚实的最终目标。此外,确保这是一个你有兴趣做的项目。否则你将永远无法完成它。
这里有一个例子:
你想分析音乐行业的发展趋势。
**最终目标:**利用艺术家姓名和流派等数据,发现音乐趋势随时间变化的模式。
为此,您首先需要收集数据。
这可以在网络刮刀或 API 的帮助下完成。这将需要相当多的编码,这本身就是一个很好的中级编码项目。
然后,您需要清理数据。这是一项简单的任务,但由于数据可能会非常混乱,因此可能会非常耗时。
执行数据分析任务不需要很高的编程技能。需要做的大多是数据操作,不需要太多逻辑就能做到。
最后,您可以执行实际的分析。为了做到这一点,你需要知道如何使用可视化库,这很容易掌握。Matplotlib 和 Seaborn 是两个流行的 Python 可视化库。
就是这样!
这只是你学习数据科学编码应该采取的步骤的一个粗略的想法。
我知道数据科学是一个吸引各种不同背景的人的领域。如果你来自非技术背景,编码部分可能一开始看起来真的很吓人。
每个人似乎都在编写这些非常复杂、大而无意义的代码。
然而,你需要记住每个人都有起点。
即使是最好的程序员也是从“Hello World”开始的,你只需要有耐心。
给自己一些时间去学习,拥抱学习曲线。就像学习游泳、开车或骑自行车一样,学习编码不是一夜之间就能完成的。这需要大量的练习和盯着电脑屏幕才能实现。
我希望这篇文章是有帮助的,感谢阅读!
犯错误仅仅意味着你学得更快