使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

1. 导入必要的库

首先,导入我们需要的库:Numpy、Pytorch 和相关工具包。

import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.metrics import accuracy_score, recall_score, f1_score
2. 自定义数据集

使用 Numpy 创建一个简单的线性可分数据集,并将其转换为 Pytorch 张量。

# 创建数据集
X = np.random.rand(100, 2)  # 100 个样本,2 个特征
y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 标签,若特征之和大于1则为 1,否则为 0

# 转换为 PyTorch 张量
X_train = torch.tensor(X, dtype=torch.float32)
y_train = torch.tensor(y, dtype=torch.long)
3. 定义逻辑回归模型

在 Pytorch 中定义一个简单的逻辑回归模型。

class LogisticRegressionModel(nn.Module):
    def __init__(self, input_dim):
        super(LogisticRegressionModel, self).__init__()
        self.linear = nn.Linear(input_dim, 2)  # 二分类问题

    def forward(self, x):
        return self.linear(x)
4. 初始化模型、损失函数和优化器
# 初始化模型
model = LogisticRegressionModel(input_dim=2)

# 损失函数与优化器
criterion = nn.CrossEntropyLoss()  # 交叉熵损失函数
optimizer = optim.SGD(model.parameters(), lr=0.01)
5. 训练模型

训练模型并保存训练好的权重。

epochs = 100
for epoch in range(epochs):
    # 前向传播
    outputs = model(X_train)
    loss = criterion(outputs, y_train)

    # 反向传播
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    if (epoch+1) % 20 == 0:
        print(f"Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}")

# 保存模型
torch.save(model.state_dict(), 'logistic_regression.pth')
6. 加载模型并进行预测

加载保存的模型并进行预测。

# 加载模型
model = LogisticRegressionModel(input_dim=2)
model.load_state_dict(torch.load('logistic_regression.pth'))
model.eval()  # 设为评估模式

# 预测
with torch.no_grad():
    y_pred = model(X_train)
    _, predicted = torch.max(y_pred, 1)
7. 计算精确度、召回率和 F1 分数

使用 sklearn 中的评估函数计算精确度、召回率和 F1 分数。

accuracy = accuracy_score(y_train, predicted)
recall = recall_score(y_train, predicted)
f1 = f1_score(y_train, predicted)

print(f"Accuracy: {accuracy:.4f}")
print(f"Recall: {recall:.4f}")
print(f"F1 Score: {f1:.4f}")
8. 总结

这篇博客展示了如何使用 Numpy 自定义数据集,利用 Pytorch 框架实现逻辑回归模型,并进行训练。训练后的模型被保存,并在加载后进行预测,最后计算了精确度、召回率和 F1 分数。

相关推荐
SUNX-T1 小时前
【机器学习理论】朴素贝叶斯网络
人工智能·机器学习·概率论
佛州小李哥2 小时前
在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(上)
人工智能·科技·ai·语言模型·stable diffusion·aws·亚马逊云科技
东锋1.33 小时前
深度解析近期爆火的 DeepSeek
人工智能·深度学习
爱研究的小牛3 小时前
讯飞智作 AI 配音技术浅析(二):深度学习与神经网络
人工智能·深度学习·神经网络·机器学习·aigc
Luzem03193 小时前
使用PyTorch实现逻辑回归:从训练到模型保存与性能评估
人工智能·pytorch·逻辑回归
灵封~3 小时前
自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
人工智能·深度学习
nnerddboy3 小时前
深度学习查漏补缺:2. 三个指标和注意力机制
人工智能·神经网络·cnn
新加坡内哥谈技术3 小时前
Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题
人工智能·科技·深度学习·语言模型·机器人
goomind3 小时前
深度卷积神经网络实战无人机视角目标识别
人工智能·神经网络·yolo·cnn·无人机·pyqt5·目标识别