我目前正在Coursera上学习Andrew Ng的课程,我尝试使用从数据集中进行逻辑回归的知识。但是我无法降低成本函数。
我尝试了不同的学习率(0.001、0.003、0.0001…)和迭代次数。可能是我编写的函数不正确,但是我找不到错误
import numpy as np
import scipy as sc
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data[:,:2]
Y = (iris.target != 0)*1
m = Y.size
th = np.random.rand(1,3)#theta
xo = np.ones((m,1))
Xi = np.concatenate((xo,X),axis=1)#X intercept
sigma = lambda z: 1/(1+(np.e**-z))
cost = lambda h,y: (np.sum(-y.T*np.log(h)-(1-y).T*np.log(1-h)))/m
grad = lambda h,y,x : np.sum(x.T@(h-y))/m
ite = 100000
lr = 0.0015
for i in range(ite):
z = Xi@th.T
th = th- lr*grad(sigma(z),Y,Xi)
print(cost(sigma(z),Y))
答案 0 :(得分:0)
固定的,我不知道为什么我在渐变之前写了np.sum。但是现在可以了
grad = lambda h,y,x : x.T@(h-y))/m