这次试着入门 AI 相关内容,给自己定了几个具体的学习小目标:先试着掌握 Python 数据处理的基础工具,学着用 Pandas 做数据清洗、Numpy 实现张量运算;再慢慢摸索 PyTorch 的核心基础,比如张量创建、自动求导、数据加载这些入门必学的知识点;顺带简单了解下 FastAPI。

整个过程都是边学边动手实操,我也是刚接触这些内容,算不上精通,只是把自己摸索出来的步骤和避坑点记下来,希望能给大家做个参考。

一、环境搭建:

1. 工具选型

Python选了3.12.0稳定版,兼容大部分数据科学库;IDE还是VS Code,装了三个插件:

  • Python:基础的代码补全、语法检查,必备;
  • Pylance:比默认插件的智能提示更准,变量、函数跳转很方便;
  • Code Runner:一键运行单个.py文件,调试代码不用来回敲命令。

2. 国内镜像源配置(解决下载慢的老问题)

# 全局配置(后续pip install都默认走阿里源)
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

# 临时用(不想改全局配置时)
pip install 库名 -i https://mirrors.aliyun.com/pypi/simple/

3. 虚拟环境

虚拟环境可以避免不同项目依赖冲突。我用Python自带的venv,不用额外装工具,简单直接:

# 创建虚拟环境,命名day1venv(按项目习惯命名)
py -m venv day1venv

# 进入虚拟环境(Windows PowerShell下的命令)
./day1venv/Scripts/activate.bat

# 退出虚拟环境
deactivate

第一次进虚拟环境可能会报执行策略错误,按下面步骤改一下就行,改完能恢复默认:

# 1. 执行命令(PowerShell里)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 2. 提示确认时,输入Y回车
# 3. 后续想恢复默认策略,管理员身份运行PowerShell,输入:
Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope CurrentUser

4. Git版本管理

可能有同学不熟悉 git 相关操作,这里把我自己的相关操作记录一下,方便跟着操作参考:

首先创建.gitignore文件,把无关文件过滤掉:

# 忽略虚拟环境(day1venv,和自己创建的名字对应)
day1venv/
# 忽略Python缓存文件,看着烦
__pycache__/
*.pyc
# 忽略CSV大文件(数据文件不用提交到仓库)
*.csv
# 忽略VS Code本地配置,避免同步给别人
.vscode/

然后初始化仓库、提交代码,关联远程仓库:

# 初始化本地仓库
git init 
# 暂存所有有效文件
git add .
# 提交代码
git commit -m "初始化项目:添加数据清洗、张量操作等脚本和.gitignore"

# 关联GitHub
git remote add origin https://github.com/用户名/ai-day1.git  
# 关联Gitee
git remote add gitee https://gitee.com/用户名/ai-day1.git  

# 验证关联是否成功
git remote -v

# 推送到远程仓库
git push -u origin master
git push -u gitee master

5. 核心库安装

# tqdm:显示进度条
pip install tqdm -i https://mirrors.aliyun.com/pypi/simple/
# pandas:数据清洗核心
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
# numpy:张量运算基础
pip install numpy -i https://mirrors.aliyun.com/pypi/simple/
# PyTorch:深度学习框架
pip install torch torchvision torchaudio -i https://mirrors.aliyun.com/pypi/simple/
# scikit-learn:获取AG News数据集用
pip install scikit-learn -i https://mirrors.aliyun.com/pypi/simple/

装完顺手验证一下,新建个.py文件,跑几行代码,没报错就没问题:

import pandas as pd
import numpy as np
import torch

print("环境配置OK!")

二、实战任务1:清洗AG News数据集

第一个任务是数据清洗,目标很明确:把AG News数据集下载下来,清理掉无效数据,保存成CSV文件。

新建文件ag_news_data_cleaning.py,完整代码和操作步骤如下:

# 导入需要的库,sklearn拿数据,pandas做清洗
from sklearn.datasets import fetch_20newsgroups
import pandas as pd

# 下载数据集,subset='all'拿全部数据,remove参数直接剔除冗余信息
news_data = fetch_20newsgroups(
    subset='all',
    remove=('headers', 'footers', 'quotes'),
    shuffle=True,  # 打乱数据
    random_state=42  # 固定随机种子,每次运行结果一致
)

# 转成DataFrame格式
df = pd.DataFrame({
    'text': news_data.data,
    'label': news_data.target
})

print("数据前5行:")
print(df.head())
print("\n数据基本信息(有没有缺失值、数据类型):")
print(df.info())
print("\n分类标签分布:")
print(df['label'].value_counts())

# 开始清洗,步骤很简单:删缺失值、去重、筛空白文本、重置索引
df = df.dropna()  # 删除缺失值
df = df.drop_duplicates(subset=['text'])  # 按文本内容去重,避免重复数据
df = df[df['text'].str.strip() != '']  # 把空白文本筛掉,没用
df = df.reset_index(drop=True)  # 去重后索引乱了,重置一下

# 保存清洗后的文件,存当前文件夹,后续能用
df.to_csv('cleaned_ag_news.csv', index=False, encoding='utf-8')
print("\n数据清洗搞定!文件保存成cleaned_ag_news.csv了")

跑起来没什么问题,几分钟就搞定了,清洗后的数据后续做文本分类或者其他分析都能用。

三、实战任务2:Numpy+PyTorch张量运算

第二个任务是张量运算,主要是实现加减乘除和矩阵乘法。

新建文件tensor_operations.py,代码如下:

# 先写Numpy的张量运算
import numpy as np

# 创建几个张量,二维的,方便演示矩阵乘法
np_tensor1 = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
np_tensor2 = np.array([[7, 8], [9, 10], [11, 12]], dtype=np.float32)
np_tensor3 = np.array([[1, 2], [3, 4]], dtype=np.float32)

print("=== Numpy 张量运算 ===")
print("张量1:\n", np_tensor1)
print("张量2:\n", np_tensor2)
print("张量3:\n", np_tensor3)

# 元素级加减乘除,就是对应位置的元素逐个计算
np_add = np_tensor3 + np_tensor3
np_sub = np_tensor3 - np_tensor3
np_mul = np_tensor3 * np_tensor3
np_div = np_tensor3 / np_tensor3

print("\n元素级加法:\n", np_add)
print("元素级减法:\n", np_sub)
print("元素级乘法:\n", np_mul)
print("元素级除法:\n", np_div)

# 矩阵乘法,按线性代数的规则来,前一个的列数等于后一个的行数
np_matmul = np.matmul(np_tensor1, np_tensor2)
print("\n矩阵乘法结果(2x3 × 3x2):\n", np_matmul)

# 再写PyTorch的,和Numpy对比着,语法几乎一样
import torch

# 创建对应的PyTorch张量
torch_tensor1 = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float32)
torch_tensor2 = torch.tensor([[7, 8], [9, 10], [11, 12]], dtype=torch.float32)
torch_tensor3 = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)

print("\n=== PyTorch 张量运算 ===")
print("张量1:\n", torch_tensor1)
print("张量2:\n", torch_tensor2)
print("张量3:\n", torch_tensor3)

# 元素级运算,和Numpy一模一样
torch_add = torch_tensor3 + torch_tensor3
torch_sub = torch_tensor3 - torch_tensor3
torch_mul = torch_tensor3 * torch_tensor3
torch_div = torch_tensor3 / torch_tensor3

print("\n元素级加法:\n", torch_add)
print("元素级减法:\n", torch_sub)
print("元素级乘法:\n", torch_mul)
print("元素级除法:\n", torch_div)

# 矩阵乘法,也是matmul函数,用法一样
torch_matmul = torch.matmul(torch_tensor1, torch_tensor2)
print("\n矩阵乘法结果(2x3 × 3x2):\n", torch_matmul)

跑起来之后能明显看到,Numpy和PyTorch的运算结果基本一致,只是张量的类型不同。

最后也分享一个我自己学的时候觉得很实用的资源:B 站「码奇码」的入门视频。里面讲的 numpy、pandas、fastapi 都很通俗易懂,大家有需要的话可以看看

视频链接地址:https://www.bilibili.com/video/BV1fQtkeLEKc?spm_id_from=333.788.videopod.sections&vd_source=8b2f495eb520f446575635ec54763241

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐