考慮以下幾點:Sigmoid總是返回1?
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
我的理解是乙狀結腸結果範圍從0到1。根據此信息(http://clear-lines.com/blog/post/Logistic-Regression.aspx):
「正值將返回一個值大於0.5 ,輸入值越大,越接近1.可以認爲函數返回概率:對於x的非常高或低的值,有很高的確定性,它屬於兩組中的一組,並且對於值接近零,每組的概率是50%/ 50%。「
但是,如果Sigmoid(0),sigmoid似乎只產生0.5(即,零分類)。除非inX或權重爲零(或零向量),否則classifyVector總是返回1?
例如,請考慮以下數據:
trainset = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])
trainlbl = np.array([1,12,11,40])
這裏,INX將永遠是零。如果算出數學,權重也不會爲零。那麼,乙狀結腸怎麼能提供一個公平的分析呢?
可能取代l中的1。 2用1.0嗎?據我記得Python,這可能會改變整個類型的devision。 [這是神經網絡嗎?] – Unknown
param爲什麼叫inSig和var inX? – Unknown
我編輯它。這是爲了邏輯迴歸。 – swabygw