考虑以下:
def sigmoid(inSig):
return 1.0/(1.0+np.exp(-inSig))
def classifyVector(inX, weights):
prob = sigmoid(sum(inX*weights))
if prob > 0.5: return 1.0
else: return 0.0
我的理解是sigmoid结果的范围是0到1。根据这篇文章(http://clear-lines.com/blog/post/Logistic-Regression.aspx):
“正值将返回大于 0.5 的值,输入值越大,越接近 1。可以将函数视为返回概率:对于非常高或低的 x 值,有很高的确定性它属于两组之一,对于接近零的值,每组的概率为 50% / 50%。”
但是,如果它是 Sigmoid(0),sigmoid 似乎只产生 0.5(即零分类)。除非 inX 或 weights 为零(或零向量),否则分类向量不会总是返回 1 吗?
例如,考虑以下数据:
trainset = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])
trainlbl = np.array([1,12,11,40])
在这里,inX 永远不会为零。如果计算出数学,权重也不会为零。那么,sigmoid 如何提供公平的分析呢?