我一直在关注Andrew Ng CSC229机器学习课程,现在我已经介绍了逻辑回归。目标是最大化对数似然函数并找出theta的最优值来做到这一点。讲义的链接是:[http://cs229.stanford.edu/notes/cs229-notes1.ps][1]-页码16-19。现在,下面的代码显示在课程主页上(但在matlab中 - 我将它转换为python)。Logistic回归的批次梯度下降
我将它应用于一个包含100个培训示例的数据集(在Coursera主页上提供了一个介绍性机器学习课程的数据集)。这些数据有两个特点,两个考试分数是两个。如果学生收到录取通知书,则输出为1,而学生未收到录取通知书则为0。已经显示了下面的所有代码。以下代码使似然函数收敛到约-62的最大值。 theta的相应值是[-0.05560301 0.01081111 0.00088362]。当我测试一个训练样例,如[1,30.28671077,43.89499752]应该给出值0作为输出时,使用这些值,我得到0.576,这对我没有意义。如果我用输入[1,10,10]来检验假设函数,我得到0.515,这再次没有意义。这些值应该对应较低的概率。这让我很困惑。
import numpy as np
import sig as s
def batchlogreg(X, y):
max_iterations = 800
alpha = 0.00001
(m,n) = np.shape(X)
X = np.insert(X, 0, 1, 1)
theta = np.array([0] * (n+1), 'float')
ll = np.array([0] * max_iterations, 'float')
for i in range(max_iterations):
hx = s.sigmoid(np.dot(X, theta))
d = y - hx
theta = theta + alpha*np.dot(np.transpose(X),d)
ll[i] = sum(y * np.log(hx) + (1-y) * np.log(1- hx))
return (theta, ll)
链接不起作用。另外,你应该在你的问题中发布相关文本,而不是仅仅给它一个链接。 – Kmeixner
道歉这里是一个工作版本http://cs229.stanford.edu/notes/cs229-notes1.ps – Aerole
你试过更大的学习率('阿尔法')?它通常不会**那么小,所以你可能没有正确地训练你的模型。试试'0.1,0.001'等等。 – IVlad