利用全连接网络实现病例AD,heart,WDBC等数据集的分类预测

本文介绍了一种利用全连接网络对病例数据(如AD, heart, WDBC)进行分类预测的方法。通过训练和测试模型,计算损失值和准确率,实现了数据集的高效分类。在训练过程中,采用Adam优化器和交叉熵损失函数,并进行了GPU加速。通过交叉验证和可视化技术,展示了模型性能并评估了训练效果。" 12037061,1836221,Windows系统栈分析与故障排查,"['Windows开发', '调试工具', '虚拟化', '软件故障', '数据库优化', '网络编程']
摘要由CSDN通过智能技术生成

“”"

作者:lds

整个实验运行时涉及的一些自定义方法

包括数据获取、网络初始化、网络训练、网络测试以及交叉验证

“”"

import pandas as pd

import numpy as np

import Visualization as v

import time

import torch as t

import torch.nn as nn

import scipy.io

import net as classifier

import torch.optim as opt

def init(model):

“”"

训练前对模型权重进行初始化

:param model: 训练模型

“”"

for m in model.modules():

if isinstance(m, nn.Linear):

nn.init.xavier_uniform_(m.weight)  ##这里调用xavier_uniform初始化函数

def train(train_ds, train_ls, model, criterion, optimizer, epochs=20):

“”"

训练模型

:param train_ds: 训练数据

:param train_ls: 训练标签

:param model: 训练模型

:param criterion: 损失函数

:param optimizer: 优化算法

:param epochs: 迭代次数

:return: 训练损失值

“”"

t_loss_list = []

train_correct = 0

将训练集迁移到GPU上

train_ds = train_ds.cuda()

train_ls = train_ls.cuda()

model = model.cuda()

init(model)

for epoch in range(epochs-1):

model.train()

每次训练前梯度置零

optimizer.zero_grad()

正向传播

output = model(train_ds)

计算损失值

train_loss = criterion(output, train_ls.squeeze())

反向传播,计算梯度

train_loss.backward()

更新参数

optimizer.step()

t_loss_list.append(train_loss.item())

获取预测值

predict = output.max(1, keepdim=True)[1]

统计预测正确个数

train_correct += predict.eq(train_ls.view_as(predict)).sum().item()

计算准确率

train_accuracy = train_correct / train_ds.shape[0]

print(“Train loss: {:.3f}”.format(train_loss.item()))

print(“Train Accuracy:{:.2f}%”.format(train_accuracy*100))

return train_loss.item(), train_accuracy, t_loss_list

def for_test(test_ds, test_ls, model, criterion):

“”"

测试模型

:param test_ds: 测试数据

:param test_ls: 测试标签

:param model: 测试模型

:param criterion: 损失函数

:return: 测试损失值,测试准确度

“”"

将测试数据迁移到GPU上

test_ds = test_ds.cuda()

test_ls = test_ls.cuda()

model = model.eval()

correct = 0

with t.no_grad():

使用训练好的模型测试

output = model(test_ds)

计算测试集损失函数

test_loss = criterion(output, test_ls.squeeze())

获取预测值

predict = output.max(1, keepdim=True)[1]

统计预测正确个数

correct += predict.eq(test_ls.view_as(predict)).sum().item()

计算准确率

accuracy = correct / test_ds.shape[0]

print(“Test loss: {:.3f}”.format(test_loss.item()))

print(“Test Accuracy:{:.2f}%”.format(accu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值