import numpy as np #画图包 import matplotlib.pyplot as plt
# 2.模型 def model(x,theta): z=x.dot(theta) h=1/(1+np.exp(-z)) return h # 代价函数 m,n=train_X1.shape def cost(h,y,theta,lamda): # 正则化 R=lamda/(2*m)*np.dot(theta.T,theta) j=-np.mean(y*np.log(h)+(1-y)*np.log(1-h))+R return j # #梯度下降函数 def grop(x,y,alphy,num,lamda=0.5): m,n=x.shape theta=np.zeros((n,1)) j=np.zeros(num) for i in range(num): h=model(x,theta) j[i]=cost(h,y,theta,lamda) de_theta=1/(m)*x.T.dot(h-y)+(lamda/m)*theta #正则化 theta=theta-alphy*de_theta return j,h,theta j,h,theta=grop(x=train_X1,y=train_Y,alphy=0.01,num=1000,lamda=0.5) # 求精确值 def acce(x,y,theta): m,n=x.shape sum=0 for i in range(m): h=model(x,theta) if (np.where(h[i]>0.5,1,0)==y[i]): sum+=1 acc=sum/m return accz