X 代表特征向量
g 代表逻辑函数(logistic function)是一个常用的逻辑函数为 S 形函数(Sigmoid function)
def sigmoid(z): return 1 / (1 + np.exp(-z))按照以上的公式,得到逻辑回归的边界函数,用来预测类别。
逻辑回归的具体方法和线性回归类似。不断迭代更新theta,得到较好的边界函数。
通过优化函数,使代价函数cost达到最小,得到最好的拟合参数theta。
scipy.optimize.minimize
scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
import scipy.optimize as opt res = opt.minimize(fun=cost, x0=theta, args=(X, y), method='Newton-CG', jac=gradient)fun:目标函数被最小化。 必须采用f(x,* args)的形式。
x:优化参数x是一维数组。
args:是完全指定函数所需的任何附加固定参数的元组。
method:优化的算法。CG:使用共轭梯度算法最小化一个或多个变量的标量函数。
jac: 可以是可调用的,返回目标的梯度。 Only for CG, BFGS, Newton-CG, L-BFGS-B, TNC, SLSQP, dogleg, trust-ncg, trust-krylov, trust-region-exact
final_theta = res.x即用一条直线来做为不同类别的边界划分,在直线上方,即Y值大于直线的值;在直线下方,即Y值小于直线的值。
方程为:H=theta0+theta1*X1+theta2*X2=0,即为边界直线,判定H>0或H<=0,分别为不同类别。
根据学习得到的theta,并将X测试数据带入公式,得到Sigmoid函数值在0-1之间,以0.5为区分进行预测。
下图为sigmoid函数:
