import torch
import numpy as np
import joblib
from sklearn.model_selection import train_test_split
from matplotlib import pyplot as plt
#⾃定义逻辑回归模型
class LogisticRegression(object):
#定义初始化⽅法
def __init__(self, max_iters=1000, learning_rate=1e-9):
#参数初始化
self.max_iters = max_iters
self.learning_rate = learning_rate
self.w = None
self.b = None
self.n_features = None
self.losses = []
self.train_accs = []
self.test_accs = []
#保存模型
self.best_w = None
self.best_b = None
self.best_train_acc = -float("inf")
self.best_test_acc = -float("inf")
#定义逻辑回归⽅法
def _logic_regression(self, X):
'''
逻辑回归的正向传播过程
'''
return torch.sigmoid(X @ self.w + self.b)
#定义损失⽅法
def _get_loss(self, y_true, y_pred):
'''
⽤MSE来衡量误差
'''
return ((y_true - y_pred) ** 2).mean()
#定义准确率⽅法
def _get_ac