本代码使用 PyTorch 构建了一个基于神经网络的二分类模型,并以 HIV 和 PAH 数据集为例进行模型训练和评估。代码展示了数据预处理、模型定义、训练过程、测试集评估等步骤。

import torch
import torch.nn as nn
import torch.optim as optim
import pandas as pd
from sklearn.preprocessing import StandardScaler

# 读入数据
train_data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\PAH三个数据集\selected_genes.xlsx')
test_data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\PAH三个数据集\GSE53408 对应lasso基因.xlsx')

# 标准化数据
scaler = StandardScaler()
train_data.iloc[:, 1:] = scaler.fit_transform(train_data.iloc[:, 1:])
test_data.iloc[:, 1:] = scaler.transform(test_data.iloc[:, 1:])

# 划分特征和标签
train_x = train_data.iloc[:, 1:].values
train_y = train_data.iloc[:, 0].values
test_x = test_data.iloc[:, 1:].values
test_y = test_data.iloc[:, 0].values

# 转换为tensor
train_x = torch.from_numpy(train_x).float()
train_y = torch.from_numpy(train_y).unsqueeze(1).float()
test_x = torch.from_numpy(test_x).float()
test_y = torch.from_numpy(test_y).unsqueeze(1).float()


# 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(8, 4)
        self.fc2 = nn.Linear(4, 1)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        x = self.fc1(x)
        x = self.sigmoid(x)
        x = self.fc2(x)
        x = self.sigmoid(x)
        return x


# 初始化模型、损失函数和优化器
net = Net()
criterion = nn.BCELoss()
optimizer = optim.Adam(net.parameters(), lr=0.01)

# 训练模型
for epoch in range(1000):
    optimizer.zero_grad()
    outputs = net(train_x)
    loss = criterion(outputs, train_y)
    loss.backward()
    optimizer.step()
    if (epoch + 1) % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch + 1, 1000, loss.item()))

# 输出每个样本的预测概率
with torch.no_grad():
    outputs = net(test_x)
    probabilities = outputs.numpy().squeeze()

# 输出测试集的准确率和损失值
test_loss = criterion(outputs, test_y)
predicted = (outputs > 0.5).float()
accuracy = (predicted == test_y).float().mean()
print('Test Loss: {:.4f}, Accuracy: {:.4f}'.format(test_loss.item(), accuracy.item()))


上述代码的测试集参与训练了吗?

没有参与训练,因为训练过程中使用的是 `train_x` 和 `train_y` 作为输入和标签,而没有使用 `test_x` 和 `test_y`。测试集只在训练结束后被用来评估模型的性能。

代码功能解析:

  1. 数据预处理:
    • 使用 pandas 读取 Excel 数据集。
    • 使用 StandardScaler 对特征数据进行标准化。
  2. 模型定义:
    • 定义一个名为 Net 的神经网络模型,包含两个全连接层和两个 sigmoid 激活函数。
  3. 训练模型:
    • 使用 Adam 优化器和 BCELoss 损失函数进行模型训练。
    • 在训练过程中,每 100 个 epoch 打印一次损失值。
  4. 评估模型:
    • 使用测试集 test_xtest_y 评估模型的性能,计算测试集的损失值和准确率。

代码总结:

本代码展示了使用 PyTorch 构建和评估一个二分类模型的完整流程,包括数据预处理、模型定义、训练、测试等步骤。该模型可以用于预测 HIV 和 PAH 等疾病的可能性。

扩展阅读:

基于 PyTorch 的二分类模型构建和评估:以 HIV 和 PAH 数据集为例

原文地址: https://www.cveoy.top/t/topic/nfsl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录