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行两列,为什么他运行不了显示参数不够


相关课程:人工智能>第六阶段:机器学习-线性分类>逻辑回归>对逻辑回归的损失函数求导_推导出导函数的形式

©2014-2023 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备13018289号-12    营业执照    经营许可证:京B2-20212637