逻辑回归

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