1.导入依赖包
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
2.读取数据集
2.1可以看到数据集有653行,16列,数据集没有表头,需要设置header=None
data = pd.read_csv('credit-a.csv', header=None)
data
2.2查看数据集信息,没有缺失值
data.info()
3.定义X和Y
3.1数据集的前15列作为X
X = data.iloc[:, :-1]
X.head()
3.2数据集的最后一列作为Y
Y = data.iloc[:, -1].replace(-1, 0)
Y.unique()
3.3将X转化成张量
X = torch.from_numpy(X.values).type(torch.float32)
X.shape
3.4将Y转化成张量
Y = torch.from_numpy(Y.values.reshape(-1, 1)).type(torch.float32)
Y.size()
4.定义模型
model = torch.nn.Sequential(
torch.nn.Linear(15, 1),
torch.nn.Sigmoid()
)
4.1查看模型结构
model
5.定义损失函数
loss_fn = torch.nn.BCELoss()
6.定义优化器
opt = torch.optim.Adam(model.parameters(), lr=0.001)
7.设置超参数
7.1定义batch_size
batch_size = 16
iteration = Y.size(0)//16
7.2定义epoches
epoches = 1000
8.训练模型
for epoch in range(epoches):
for batch in range(iteration):
start = batch * batch_size
end = start + batch_size
x = X[start : end]
y = Y[start : end]
y_pred = model(x)
loss = loss_fn(y_pred, y)
opt.zero_grad()
loss.backward()
opt.step()
9.查看各参数的权重
model.state_dict()
10.查看模型准确率
((model(X).data.numpy() > 0.5).astype('int') == Y.numpy()).mean()
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2621041184@qq.com