版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Triple_WDF/article/details/87555153
Logistic Regression实现python代码:Logistic Regression作为二分类器的手写代码 vs 调用sklearn库
数据集中的一组测试数据: =,其对应的一个输出,i=1, 2, ..., m
要学习的参数为:
,其向量表示为
Sigmoid函数:
预测函数:
根据Sigmoid函数的性质,可以知道
用概率表示:
损失函数:,此处的log是以e为底的
如果分类结果正确的话,那么cost就应该小,而是增函数,而也是增函数,而是一个减函数,也就是当这一组数据得到的估计值越是接近正确的数值那么其cost就越小,相反亦是如此。
损失函数可以进一步变化为一个式子:
对于所有训练集来说,共同造成的损失函数的总和
接下来要做的就是最小化损失函数:
梯度下降算法:其中α是学习率,表示步长,一次下降多少。
def sigmoid(x):
return 1.0 / (1 + np.exp(-x))
def gradientDescent(x, y, theta, alpha, m, numIterations):
xTrans = x.transpose()
for i in range(0, numIterations):
hypothesis = sigmoid(np.dot(x, theta))
loss = hypothesis - y
gradient = np.dot(xTrans, loss) / m
theta = theta - alpha * gradient
return theta
#x:输入的样例
#y:输出结果
#theta:θ要学习的参数
#alpha:α学习率
#m:有m个样例
#numIterations:下降次数