我正在尝试在Python中使用scipy.optimize
来实现逻辑回归。当我尝试使用sklearn时,我了解了可用于预测给定数据集的beta值。但是,当我尝试在scipy优化函数中使用它时,代价值将变为无穷大,有时值也可以,但是截距不存在。原因是,界限和初步猜测似乎。如何制定呢?如果还有其他方法,请告诉我。
import scipy
import numpy as np
def sigmoid(x,beta):
return((np.exp(np.dot(x, beta))/(1.0 + np.exp(np.dot(x, beta)))))
def mle(beta, x, y):
return(-(np.sum(y*np.log(sigmoid(x, beta)) + (1-y)*(np.log(1-sigmoid(x,beta))))))
# x0 value ? and bounds ?
result = scipy.optimize.minimize(mle, x0 = np.array([-.1]), args = (x,y))
没有拦截。数据框的形状为(100,2)。请指教
答案 0 :(得分:0)
我刚刚添加了x = np.hstack((np.ones((x.shape [0],1)),x)),这解决了这个问题。