适合初学者的指南
Python 已成为人工智能和数据科学事实上的编程语言。尽管存在无代码解决方案,但学习如何编码对于构建完全定制的人工智能项目或产品仍然至关重要。在本文中,我分享了使用 Python 进行人工智能开发的初学者快速入门指南。我将介绍基础知识,然后分享一个带有代码的具体示例。
Python 是一种编程语言,即一种向计算机提供精确指令来完成我们不能或不想做的事情的方法 [1]。
在没有现成解决方案的情况下自动执行独特任务时,这非常方便。例如,如果我想自动编写和发送个性化会议后续内容,我可以编写一个 Python 脚本来执行此操作。
有了 ChatGPT 这样的工具,我们很容易想象这样一个未来:人们可以用简单的英语描述任何定制的任务,而计算机就会做到这一点。然而,目前尚不存在这样的消费产品。在此类产品面世之前,了解(至少了解一点)Python 具有巨大的价值。
虽然当前的人工智能产品(例如 ChatGPT、Claude、Gemini)尚未使编程变得过时,但它们使学习编码变得比以往任何时候都容易。我们现在都有一位称职且耐心的编码助理,他随时可以帮助我们学习。
结合谷歌搜索所有问题的“传统”方法,程序员现在可以更快地行动。例如,我慷慨地使用 ChatGPT 来编写示例代码并解释错误消息。这加速了我的进步,让我在探索新技术堆栈时更有信心。
我在写这篇文章时考虑到了特定类型的读者:那些试图进入 AI 并完成了一些编码(例如 JS、HTML/CSS、PHP、Java、SQL、Bash/Powershell、VBA)但还是新手的人到 Python 。
我将从 Python 基础知识开始,然后分享一个简单 AI 项目的示例代码。这并不是对 Python 的全面介绍。相反,它的目的是让您能够快速使用 Python 编写您的第一个 AI 项目。
关于我 — 我是一名数据科学家和自学的 Python 程序员(5 年)。虽然关于软件开发我还有很多东西需要学习,但在这里我根据我的个人经验介绍了我认为用于人工智能/数据科学项目的 Python 基本要素。
许多计算机都预装了 Python。要查看您的计算机是否有它,请转到终端 (Mac/Linux) 或命令提示符 (Windows),然后只需输入“python”。
如果您没有看到这样的屏幕,您可以手动下载Python(Windows / Mac)。或者,可以安装 Anaconda,这是一种用于人工智能和数据科学的流行 Python 软件包系统。如果您遇到安装问题,请向您最喜欢的人工智能助手寻求帮助!
Python 运行后,我们现在可以开始编写一些代码了。我建议我们在您的计算机上运行这些示例。您还可以从 GitHub 存储库下载所有示例代码。
字符串和数字
数据类型(或简称“类型”)是一种对数据进行分类的方法,以便可以在计算机中适当且有效地处理数据。
类型由一组可能的值和操作定义。例如,字符串是可以以特定方式操作的任意字符序列(即文本)。在命令行 Python 实例中尝试以下字符串。
“这是一个字符串”
>> '这是一个字符串'
'所以是这样的:-1*!@&04"(*&^}":>?'
>> '这就是:-1*!@&04"(*&^}":>?'
“““和
这是
也!!11!"""
>> '这也是n!!11!'
“我们甚至可以”+“将字符串添加在一起”
>>“我们甚至可以将字符串添加在一起”
虽然字符串可以添加在一起(即连接),但它们不能添加到数字数据类型,如 int(即整数)或 float(即带小数的数字)。如果我们在 Python 中尝试这样做,我们将收到一条错误消息,因为操作仅为兼容类型定义。
# 我们不能将字符串添加到其他数据类型(顺便说一句,这就是在 Python 中编写注释的方式)
“我是”+29
>> TypeError:只能将 str (不是“int”)连接到 str
# 所以我们必须将 29 写为字符串
“我是”+“29”
>>“我29岁”
列表和字典
除了字符串、整数和浮点数等基本类型之外,Python 还具有用于构造更大数据集合的类型。
其中一种类型是列表,即值的有序集合。我们可以有字符串列表、数字列表、字符串+数字列表,甚至列表列表。
# 字符串列表
[“a”、“b”、“c”]
# 一个整数列表
[1,2,3]
# 包含字符串、int 和 float 的列表
[“一”, 2, 3.14]
# 列表的列表
[[“a”,“b”],[1, 2],[1.0,2.0]]
另一种核心数据类型是字典,它由键值对序列组成,其中键是字符串,值可以是任何数据类型。这是表示具有多个属性的数据的好方法。
# 一本字典
{“姓名”:“肖”}
# 具有多个键值对的字典
{“姓名”:“肖”,“年龄”:29,“兴趣”:[“人工智能”,“音乐”,“面包”]}
# 字典列表
[{"姓名":"肖","年龄":29,"兴趣":["人工智能","音乐","面包"]},
{“姓名”:“Ify”,“年龄”:27,“兴趣”:[“营销”,“YouTube”,“购物”]}]
# 嵌套字典
{"User":{"姓名":"Shaw", "年龄":29, "兴趣":["AI", "音乐", "面包"]},
"Last_login":"2024-09-06",
"Membership_Tier":"免费"}
到目前为止,我们已经了解了一些基本的 Python 数据类型和操作。然而,我们仍然缺少一个基本特征:变量。
变量提供基础数据类型实例的抽象表示。例如,我可能会创建一个名为 user_name 的变量,它表示包含我的名字“Shaw”的字符串。这使我们能够编写灵活的程序,而不受特定值的限制。
# 创建一个变量并打印它
用户名=“肖”
打印(用户名)
#>>肖
我们可以对其他数据类型(例如整数和列表)做同样的事情。
# 定义更多变量并将它们打印为格式化字符串。
用户年龄 = 29
user_interests = ["AI", "音乐", "面包"]
print(f"{user_name} 年龄为 {user_age} 岁。他的兴趣包括 {user_interests}。")
#>> 肖今年 29 岁。他的兴趣包括[“人工智能”、“音乐”、“面包”]。
现在我们的示例代码片段越来越长,让我们看看如何创建我们的第一个脚本。这就是我们从命令行编写和执行更复杂的程序的方式。
为此,请在计算机上创建一个新文件夹。我将其命名为python-quickstart 。如果您有最喜欢的 IDE(例如集成开发环境),请使用它打开这个新文件夹并创建一个新的 Python 文件,例如 my-script.py。在那里,我们可以编写仪式性的“Hello, world”程序。
# 仪式第一程序
print("你好,世界!")
如果您没有 IDE(不推荐),您可以使用基本的文本编辑器(例如 Apple 的 Text Edit、Window 的记事本)。在这些情况下,您可以打开文本编辑器并使用 .py 扩展名而不是 .txt 保存新的文本文件。注意:如果您在 Mac 上使用 TextEditor,则可能需要通过“格式”>“制作纯文本”将应用程序置于纯文本模式。
然后,我们可以使用终端 (Mac/Linux) 或命令提示符 (Windows) 导航到包含新 Python 文件的文件夹并运行以下命令来运行此脚本。
python my-script.py
恭喜!您运行了第一个 Python 脚本。您可以通过复制粘贴接下来的代码示例并重新运行脚本来查看其输出来随意扩展此程序。
Python(或任何其他编程语言)的两个基本功能是循环和条件。
循环允许我们多次运行特定的代码块。最流行的是 for 循环,它在迭代变量时运行相同的代码。
# 一个简单的 for 循环迭代数字序列
对于范围(5)内的 i:
print(i) # 打印第 i 个元素
# for 循环迭代列表
user_interests = ["AI", "音乐", "面包"]
对于 user_interests 的兴趣:
print(interest) # 打印列表中的每个项目
# for 循环迭代字典中的项目
user_dict = {"姓名":"Shaw", "年龄":29, "兴趣":["AI", "音乐", "面包"]}
对于 user_dict.keys() 中的键:
print(key, "=, user_dict[key]) # 打印每个键和对应的值
另一个核心功能是条件,例如 if-else 语句,它使我们能够编写逻辑。例如,我们可能想检查用户是否是成年人或评估他们的智慧。
# 检查用户是否年满 18 岁
如果 user_dict["年龄"] >= 18:
print("用户已成年")
# 检查用户是否为 1000 岁或以上,如果没有打印他们还有很多东西要学
如果 user_dict["年龄"] >= 1000:
print("用户是明智的")
别的:
print("用户还有很多东西需要学习")
通常在 for 循环中使用条件来根据特定条件应用不同的操作,例如计算对面包感兴趣的用户数量。
# 统计对面包感兴趣的用户数量
user_list = [{"姓名":"Shaw", "年龄":29, "兴趣":["AI", "音乐", "面包"]},
{“姓名”:“Ify”,“年龄”:27,“兴趣”:[“营销”,“YouTube”,“购物”]}]
count = 0 # 初始化计数
对于 user_list 中的用户:
如果用户[“兴趣”]中的“面包”:
count = count + 1 # 更新计数
print(count, "对面包感兴趣的用户")
函数是我们可以对特定数据类型执行的操作。
我们已经看到了一个基本函数print() ,它是为任何数据类型定义的。然而,还有一些其他方便的值得了解。
# print(),我们已经使用过多次的函数
对于 user_dict.keys() 中的键:
打印(键,“:”,user_dict [键])
# type(),获取变量的数据类型
对于 user_dict.keys() 中的键:
打印(键,“:”,类型(user_dict [键]))
# len(),获取变量的长度
对于 user_dict.keys() 中的键:
打印(键,“:”,len(user_dict [键]))
# TypeError: 'int' 类型的对象没有 len()
我们看到,与print()和type()不同, len()并不是为所有数据类型定义的,因此当应用于 int 时它会抛出错误。还有其他几个类似的特定于类型的函数。
# 字符串方法
# --------------
# 使字符串全部小写
print(user_dict["姓名"].lower())
# 使字符串全部大写
print(user_dict["姓名"].upper())
# 根据特定的字符序列将字符串拆分为列表
print(user_dict["姓名"].split("ha"))
# 将一个字符序列替换为另一个字符序列
print(user_dict["姓名"].replace("w", "whin"))
# 列出方法
# ------------
# 将一个元素添加到列表末尾
user_dict["兴趣"].append("创业")
print(user_dict["兴趣"])
# 从列表中删除特定元素
user_dict["兴趣"].pop(0)
print(user_dict["兴趣"])
# 将元素插入列表中的特定位置
user_dict["兴趣"].insert(1, "AI")
print(user_dict["兴趣"])
# 字典方法
# ------------
# 访问字典键
打印(user_dict.keys())
# 访问字典值
打印(user_dict.values())
# 访问字典项目
打印(user_dict.items())
# 删除一个键
user_dict.pop("姓名")
打印(user_dict.items())
# 添加一个键
user_dict["姓名"] = "肖"
打印(user_dict.items())
虽然核心 Python 函数很有帮助,但真正的力量来自创建用户定义的函数来执行自定义操作。此外,自定义函数使我们能够编写更简洁的代码。例如,以下是将之前的一些代码片段重新打包为用户定义函数。
# 定义自定义函数
def user_description(user_dict):
”“”
返回描述输入用户的句子(字符串)的函数
”“”
return f'{user_dict["Name"]} 已经 {user_dict["Age"]} 岁,并且对 {user_dict["Interests"][0]} 感兴趣。'
# 打印用户描述
描述 = 用户描述(用户字典)
打印(描述)
# 打印新用户的描述!
new_user_dict = {"姓名":"Ify", "年龄":27, "兴趣":["营销", "YouTube", "购物"]}
打印(用户描述(新用户字典))
# 定义另一个自定义函数
definterested_user_count(用户列表,主题):
”“”
计算对任意主题感兴趣的用户数量的函数
”“”
计数 = 0
对于 user_list 中的用户:
如果用户[“兴趣”]中的主题:
计数 = 计数 + 1
返回计数
# 定义用户列表和主题
user_list = [user_dict, new_user_dict]
主题=“购物”
# 计算感兴趣的用户数量并打印出来
计数=感兴趣的用户计数(用户列表,主题)
print(f"{count} 个用户对 {topic} 感兴趣")
尽管我们可以使用核心 Python 实现任意程序,但这对于某些用例来说可能非常耗时。 Python 的主要优势之一是其充满活力的开发者社区和强大的软件包生态系统。几乎任何你想要用核心 Python 实现的东西(可能)已经作为开源库存在。
我们可以使用 Python 的本机包管理器 pip 安装此类包。要安装新软件包,我们从命令行运行 pip 命令。以下是我们如何安装 numpy,这是一个实现基本数学对象和运算的重要数据科学库。
pip安装numpy
安装 numpy 后,我们可以将其导入到新的 Python 脚本中并使用它的一些数据类型和函数。
将 numpy 导入为 np
# 创建一个“向量”
v = np.array([1, 3, 6])
打印(五)
# 乘以一个“向量”
打印(2*v)
# 创建一个矩阵
X = np.array([v, 2*v, v/2])
打印(X)
# 矩阵乘法
打印(X*V)
前面的 pip 命令将 numpy 添加到我们的基本 Python 环境中。或者,最佳实践是创建所谓的虚拟环境。这些是 Python 库的集合,可以针对不同的项目轻松互换。
以下是如何创建一个名为my-env的新虚拟环境。
python -m venv my-env
然后,我们就可以激活它了。
# Mac/Linux
源 my-env/bin/activate
# 窗口
.my-envScriptsactivate.bat
最后,我们可以使用 pip 安装新的库,例如 numpy。
点安装点
注意:如果您使用的是 Anaconda,请查看此方便的备忘单以创建新的 conda 环境。
其他几个库也常用于人工智能和数据科学。以下是对构建人工智能项目的一些有用内容的不全面概述。
现在我们已经了解了Python的基础知识,让我们看看如何使用它来实现一个简单的AI项目。在这里,我将使用 OpenAI API 创建一个研究论文摘要器和关键词提取器。
与本指南中的所有其他代码片段一样,示例代码可在 GitHub 存储库中获取。
安装依赖项
我们首先安装一些有用的库。您可以使用我们之前创建的相同my-env环境,也可以创建一个新环境。然后,您可以使用 {GitHub 存储库} 中的requirements.txt文件安装所有必需的软件包。
pip install -r 要求.txt
这行代码扫描requirements.txt中列出的每个库并安装每个库。
进口
接下来,我们可以创建一个新的 Python 脚本并导入所需的库。
导入 fitz # PyMuPDF
导入openai
导入系统
接下来,要使用 OpenAI 的 Python API,我们需要导入 AI 密钥。这是一种方法。
从 sk 导入 my_sk
# 设置您的 OpenAI API 密钥
openai.api_key = my_sk
请注意, sk不是 Python 库。相反,它是一个单独的 Python 脚本,定义了一个变量my_sk ,它是一个由我的 OpenAI API 密钥组成的字符串,即允许使用 OpenAI 的 API 的唯一(且秘密)令牌。
我在上一篇文章中分享了对初学者友好的 API 介绍、OpenAI 的 API 以及设置 API 密钥。
破解开放OpenAI (Python) API
带有示例代码的完整初学者友好介绍
迈向数据科学网
阅读PDF
接下来,我们将创建一个函数,给定保存为 .pdf 文件的研究论文的路径,该函数将从论文中提取摘要。
# 读取 PDF 第一页并提取摘要的函数
def extract_abstract(pdf_path):
# 打开 PDF 文件并从第一页抓取文本
使用 fitz.open(pdf_path) 作为 pdf:
第一页 = pdf[0]
文本 = first_page.get_text("文本")
# 提取摘要(假设摘要以“Abstract”开头)
# 找到摘要开始的地方
start_idx = text.lower().find('摘要')
# 如果摘要存在于第一页,则在简介处结束摘要
if text.lower() 中的“简介”:
end_idx = text.lower().find('简介')
别的:
end_idx = 无
# 提取抽象文本
摘要 = 文本[start_idx:end_idx].strip()
# 如果摘要出现在第一页则返回它,如果没有则返回 None
如果 start_idx != -1:
摘要 = 文本[start_idx:end_idx].strip()
返回摘要
别的:
返回无
用LLM总结一下
现在我们有了摘要文本,我们可以使用法学硕士来总结它并生成关键字。在这里,我定义了一个函数来将摘要传递给 OpenAI 的 GPT-4o-mini 模型来执行此操作。
# 使用 OpenAI API 总结摘要并生成关键词的函数
defsummary_and_generate_keywords(摘要):
# 使用 OpenAI Chat Completions API 总结并生成关键词
Prompt = f“总结以下论文摘要并生成(不超过5个)关键字:nn{abstract}”
# 进行 API 调用
响应 = openai.chat.completions.create(
型号=“gpt-4o-mini”,
消息=[
{"role": "system", "content": "你是一个得力助手。"},
{“角色”:“用户”,“内容”:提示}
],
温度=0.25
)
# 提取响应
摘要 = response.choices[0].message.content
返回摘要
将所有内容整合在一起
最后,我们可以使用用户定义的函数为从命令行传递到程序的任何研究论文生成摘要和关键字。
# 从命令行参数获取 PDF 路径
pdf_path = sys.argv[1]
# 从 PDF 中提取摘要
摘要 = extract_abstract(pdf_path)
# 如果首页存在摘要,则打印摘要。
如果是抽象的话:
# 总结并生成关键词
摘要=summary_and_generate_keywords(摘要)
打印(摘要)
别的:
print("在第一页上找不到摘要。")
然后我们可以从命令行执行我们的程序。
python summarise-paper.py“files/attention-is-all-you-need.pdf”
输出:
论文介绍了 Transformer,一种新颖的序列网络架构
转导任务仅依赖于注意力机制,消除了
需要循环和卷积结构。变压器演示
在机器翻译任务中表现出色,获得 BLEU 分数
28.4 关于 WMT 2014 英语到德语的翻译和最先进的
英法翻译任务得分为 41.8,同时也更高
训练时间高效。此外,Transformer 通过以下方式展现出多功能性:
成功应用于具有不同数量的英语选区解析
训练数据。
**关键词:** Transformer、注意力机制、机器翻译、
BLEU 分数,神经网络。
YouTube-Blog/python-quickstart 位于 main · ShawhinT/YouTube-Blog
用于补充 Medium 上的 YouTube 视频和博客文章的代码。 – YouTube-Blog/python-quickstart at main ·…
github.com
在这里,我们学习了一些 Python 基础知识并实现了我们的第一个 AI 项目!尽管我们涵盖了很多内容,但仍有很多东西需要学习。
下一步是实施您自己的人工智能项目。这是持续学习的最佳方式。不过,在我们出发之前,这里有一些提示。
- 每当遇到困难时,请慷慨地使用 Google 和 ChatGPT
- “弄清楚”是作为程序员必须培养的一项关键技能
- 查看数据科学家最喜欢的工具:Jupyter Notebooks
- 破解本指南中的示例即可开始!
版权声明
本文为本站原创内容,转载需注明文章来源(https://www.eiefun.com),另:文中部分素材可能会引用自其他平台,如有侵权或其它,请联系 admin@eiefun.com,我们会第一时间配合删除