我想在 python 中从头开始实现 Logisitic 回归。以下是其中的功能:
- 乙状结肠
- 成本
- fminunc
- 评估逻辑回归
我想知道,在 python 中从头开始会是一个很好的开始。关于如何以及什么是好的任何指导。我知道这些函数的理论,但正在寻找更好的 Pythonic 答案。
我使用了 octave,但我不知道如何在 python 中开始,因为 OCtave 已经设置了这些包来完成这项工作。
我想在 python 中从头开始实现 Logisitic 回归。以下是其中的功能:
我想知道,在 python 中从头开始会是一个很好的开始。关于如何以及什么是好的任何指导。我知道这些函数的理论,但正在寻找更好的 Pythonic 答案。
我使用了 octave,但我不知道如何在 python 中开始,因为 OCtave 已经设置了这些包来完成这项工作。
您可能想尝试将您的 octave 代码转换为 python 并查看发生了什么。您也可以使用 python 包为您执行此操作。查看关于逻辑回归的 scikit-learn 。此博客中还有一个简单的示例。
为了实现逻辑回归,您可以考虑以下两种方法:
考虑线性回归的工作原理。将 Sigmoid 函数应用于线性回归假设并运行梯度下降直到收敛。或应用基于指数的 Softmax 函数来排除较低的发生可能性。
def logistic_regression(x, y,alpha=0.05,lamda=0):
'''
Logistic regression for datasets
'''
m,n=np.shape(x)
theta=np.ones(n)
xTrans = x.transpose()
oldcost=0.0
value=True
while(value):
hypothesis = np.dot(x, theta)
logistic=hypothesis/(np.exp(-hypothesis)+1)
reg = (lamda/2*m)*np.sum(np.power(theta,2))
loss = logistic - y
cost = np.sum(loss ** 2)
#print(cost)
# avg cost per example (the 2 in 2*m doesn't really matter here.
# But to be consistent with the gradient, I include it)
# avg gradient per example
gradient = np.dot(xTrans, loss)/m
# update
if(reg):
cost=cost+reg
theta = (theta - (alpha) * (gradient+reg))
else:
theta=theta -(alpha/m) * gradient
if(oldcost==cost):
value=False
else:
oldcost=cost
print(accuracy(theta,m,y,x))
return theta,accuracy(theta,m,y,x)