人工智能——Python 基础
1. Python 基础语法
1.1 打印输出
打印是 Python 的基础功能,用于输出内容到屏幕:
print("Hello, AI World!")
1.2 变量和数据类型
Python 支持多种数据类型:
# 数值类型
a = 10 # 整数
b = 3.14 # 浮点数
# 字符串
name = "AI Learner"
# 布尔值
is_ai_ready = True
# 列表
numbers = [1, 2, 3, 4, 5]
# 字典
person = {"name": "John", "age": 25}
2. 控制流
2.1 条件语句
控制程序的执行逻辑:
x = 10
if x > 5:
print("x is greater than 5")
else:
print("x is less than or equal to 5")
2.2 循环
重复执行某些代码:
# for 循环
for i in range(5):
print(f"Iteration {i}")
# while 循环
count = 0
while count < 5:
print(f"Count is {count}")
count += 1
3. 数据结构
3.1 列表
有序集合,可修改:
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)
3.2 字典
键值对存储,便于查找:
person = {"name": "Alice", "age": 30}
print(person["name"])
3.3 元组
不可修改的有序集合:
coordinates = (10, 20) print(coordinates)
3.4 集合
无序且不重复的集合:
unique_numbers = {1, 2, 3, 4}
unique_numbers.add(5)
print(unique_numbers)
4. 函数
函数用于封装重复代码:
def greet(name):
return f"Hello, {name}!"
print(greet("AI Learner"))
5. 面向对象编程
Python 是一门支持面向对象的语言,面向对象编程(OOP)是处理复杂系统的一种方法。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"My name is {self.name}, and I am {self.age} years old.")
person = Person("John", 30)
person.introduce()
6. 文件操作
Python 提供方便的文件读写功能:
# 写入文件
with open("data.txt", "w") as file:
file.write("Hello, AI World!")
# 读取文件
with open("data.txt", "r") as file:
content = file.read()
print(content)
7. 科学计算与 AI 入门
AI 和机器学习需要用到 Python 科学计算库,以下是常用库和示例:
7.1 NumPy
NumPy 是一个高性能的数组计算库,适合矩阵运算和数值分析。
import numpy as np # 创建数组 a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 数组运算 print(a + b) print(np.dot(a, b)) # 点积
7.2 Pandas
Pandas 是用于数据处理的库。
import pandas as pd
# 创建 DataFrame
data = {"Name": ["Alice", "Bob"], "Age": [25, 30]}
df = pd.DataFrame(data)
# 查看数据
print(df)
7.3 Matplotlib
Matplotlib 是用于数据可视化的库。
import matplotlib.pyplot as plt
# 绘制折线图
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y)
plt.title("Simple Plot")
plt.show()
7.4 Scikit-learn
Scikit-learn 是一个机器学习库,提供多种机器学习算法:
from sklearn.linear_model import LinearRegression # 数据 X = [[1], [2], [3]] # 特征 y = [2, 4, 6] # 标签 # 模型训练 model = LinearRegression() model.fit(X, y) # 预测 print(model.predict([[4]])) # 输出 [8]
8. 深度学习入门:PyTorch 和 TensorFlow
8.1 PyTorch 示例
import torch
# 张量创建
x = torch.tensor([1.0, 2.0, 3.0])
w = torch.tensor([0.5, 0.5, 0.5], requires_grad=True)
# 前向传播
y = torch.dot(x, w)
print(f"Output: {y}")
# 反向传播
y.backward()
print(f"Gradients: {w.grad}")
8.2 TensorFlow 示例
import tensorflow as tf
# 张量创建
x = tf.constant([1.0, 2.0, 3.0])
w = tf.Variable([0.5, 0.5, 0.5])
# 前向传播
with tf.GradientTape() as tape:
y = tf.reduce_sum(x * w)
# 计算梯度
grads = tape.gradient(y, w)
print(f"Gradients: {grads}")
9. 学习路径建议
9.1 Python 基础
- 掌握基本语法、控制流、数据结构、文件操作。
- 推荐书籍:《Python 编程:从入门到实践》。
9.2 数据科学
- 学习 NumPy、Pandas、Matplotlib,用于数据处理和分析。
9.3 机器学习
- 学习 Scikit-learn,理解基本算法(如线性回归、决策树、SVM)。
9.4 深度学习
- 学习 PyTorch 或 TensorFlow,掌握神经网络的构建和训练。
将数据集转换成张量是深度学习中常见的一步,因为深度学习框架(如 PyTorch 和 TensorFlow)通常以张量作为输入。以下是使用 PyTorch 和 TensorFlow 将常见数据类型(如列表、NumPy 数组、Pandas DataFrame 等)转换成张量的方式。
1. PyTorch: torch.tensor
1.1 从 Python 列表转换
import torch # 从列表转换为张量 data = [[1, 2], [3, 4]] tensor = torch.tensor(data) print(tensor) # 输出: tensor([[1, 2], [3, 4]])
1.2 从 NumPy 数组转换
import numpy as np # 创建 NumPy 数组 data = np.array([[1, 2], [3, 4]]) # 转换为 PyTorch 张量 tensor = torch.from_numpy(data) print(tensor) # 输出: tensor([[1, 2], [3, 4]], dtype=torch.int32)
1.3 从 Pandas DataFrame 转换
import pandas as pd # 创建 DataFrame data = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"]) # 转换为 NumPy 数组再转换为张量 tensor = torch.tensor(data.values) print(tensor) # 输出: tensor([[1, 2], [3, 4]])
1.4 加载数据集并转换
当处理数据集(如 CSV 文件)时,可以结合 torch.utils.data.Dataset 和 torch.Tensor:
from torch.utils.data import Dataset
class CustomDataset(Dataset):
def __init__(self, data):
# 假设输入是 NumPy 数组
self.data = torch.tensor(data, dtype=torch.float32)
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
# 示例数据集
data = [[1, 2], [3, 4], [5, 6]]
dataset = CustomDataset(data)
print(dataset[0])
# 输出: tensor([1., 2.])
2. TensorFlow: tf.convert_to_tensor
2.1 从 Python 列表转换
import tensorflow as tf # 从列表转换为张量 data = [[1, 2], [3, 4]] tensor = tf.convert_to_tensor(data, dtype=tf.float32) print(tensor) # 输出: tf.Tensor([[1. 2.] # [3. 4.]], shape=(2, 2), dtype=float32)
2.2 从 NumPy 数组转换
import numpy as np # 创建 NumPy 数组 data = np.array([[1, 2], [3, 4]]) # 转换为 TensorFlow 张量 tensor = tf.convert_to_tensor(data, dtype=tf.float32) print(tensor) # 输出: tf.Tensor([[1. 2.] # [3. 4.]], shape=(2, 2), dtype=float32)
2.3 从 Pandas DataFrame 转换
import pandas as pd # 创建 DataFrame data = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"]) # 转换为 NumPy 数组再转换为张量 tensor = tf.convert_to_tensor(data.values, dtype=tf.float32) print(tensor) # 输出: tf.Tensor([[1. 2.] # [3. 4.]], shape=(2, 2), dtype=float32)
2.4 加载数据集并转换
使用 TensorFlow 的 tf.data.Dataset:
# 示例数据
data = [[1, 2], [3, 4], [5, 6]]
# 创建 TensorFlow 数据集
dataset = tf.data.Dataset.from_tensor_slices(data)
for item in dataset:
print(item)
# 输出:
# tf.Tensor([1 2], shape=(2,), dtype=int32)
# tf.Tensor([3 4], shape=(2,), dtype=int32)
# tf.Tensor([5 6], shape=(2,), dtype=int32)
3. 数据预处理示例
当数据集较大或需要预处理时,通常需要转换为张量后进行标准化或其他变换。
3.1 标准化张量数据
import torch # 示例张量 data = torch.tensor([[1.0, 2.0], [3.0, 4.0]]) # 计算均值和标准差 mean = data.mean(dim=0) std = data.std(dim=0) # 标准化 normalized_data = (data - mean) / std print(normalized_data)
3.2 自定义预处理管道(PyTorch)
from torchvision import transforms
# 定义预处理管道
transform = transforms.Compose([
transforms.ToTensor(), # 转换为张量
transforms.Normalize(mean=[0.5], std=[0.5]) # 标准化
])
# 示例数据
data = [[1, 2], [3, 4]]
# 转换和标准化
tensor = transform(data)
print(tensor)
3.3 TensorFlow 数据预处理
import tensorflow as tf # 示例数据 data = tf.constant([[1.0, 2.0], [3.0, 4.0]]) # 标准化 mean, variance = tf.nn.moments(data, axes=0) normalized_data = (data - mean) / tf.sqrt(variance) print(normalized_data)
总结
- PyTorch 和 TensorFlow 都提供了简单的方式将数据(如列表、NumPy 数组、Pandas DataFrame)转换为张量。
- 数据转换后,可以结合预处理步骤(如标准化、归一化)以适应模型输入。
- 对于大型数据集,使用
Dataset和DataLoader(PyTorch)或tf.data.Dataset(TensorFlow)更高效。 - 数据转换是深度学习的基础步骤,应熟练掌握。
通过上述方法,可以快速将数据集转换为张量,并准备好供深度学习模型使用。
本文来自博客园,作者:z_s_s,转载请注明原文链接:https://www.cnblogs.com/zhoushusheng/p/18559369
浙公网安备 33010602011771号