import numpy as np #创建数据集X,y X=np.random.rand(100,1) y=4+3*X+np.random.randn(100,1) X_b=np.c_[np.ones(100),X] #创建超参数 learning_rate=0.0001 n_iterations=10000 #1.创建cta,w0,w1,w2,w3,....,wn cta=np.random.randn(2,1) def p_theta_function(features,w1,w2): z=w1*features[0]+w2*features[1] #这里使用sigmoid函数,y_heater=1/(1+exp(-1*cta.T.dot(X))) return 1/(1+np.exp(-z)) #4.判断是否收敛,一般不会去设置阈值,而是采用相对大的迭代次数 for _ in range(n_iterations): gradients=0 #2.求梯度,计算gradient for i in range(100): x=X_b[i:i+1,:] y=y[i:i+1] p_result=p_theta_function(x,cta[0],cta[1]) gradients+=x.T.dot(p_result-y) #3,应用梯度下降法公式调整cta值,cta(t+1)=cta(t)-ita*gradient cta=cta-learning_rate*gradients/100 print(cta) 这里我传的参数是1行两列,为什么他运行不了显示参数不够