from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt
#获取数据
data = load_iris().data[:1000,[0,2]]
target = load_iris().target[:1000]
#切割数据
X_train,X_test,y_train,y_test = train_test_split(data,target,test_size=.3) #常用的训练:验证集的比例是7:3。如果数据量够大,train越多越好哦。还经常用k折交叉去获得更稳定的模型。
class Logistic(object):
#不考虑偏置项(wx+b中的b)
def __init__(self,max_iter=1000,eta0=0.01):
#迭代率
self.eta0 = eta0
#最大迭代次数
self.max_iter = max_iter
def fit(self,X,y):
X = np.array(X)
#必须要是一个矩阵
y = np.array(y).reshape(-1,1) #后面更新系数时,损失函数要用到
#获取样本数量和特征数
sample_num,feature_num = X.shape (特征数目就是每次计算的w的数目)
#初始化系数,随机给定最初的系数 randn 标准的高斯分布 zeros
self.coef_ = np.zeros(shape=(feature_num,1))