2015-12-29 90 views
-2

我試圖來計算貝葉斯公式spamicity,但我得到這個錯誤:我該如何解決我的代碼不調用浮動?

error TypeError: 'float' object is not callable 

這裏是我的代碼:

spamicities = sorted(
    map(self.classify_word(body) ,re.sub("[^\w]", " ", body).split()), 
    key=lambda x: abs(x-0.5), 
    reverse=True)[:38] 
+3

'self.classify_word(body)' - >'lambda body:self.classify_word(body)'。 –

回答

0

嘗試簡化您的問題一點。看看

map(self.classify_word(body) ,re.sub("[^\w]", " ", body).split()) 

因爲self.classify_word(body)Float值替換這條線將無法工作,所以行變成像

map(5.0 ,re.sub("[^\w]", " ", body).split()) # wrong! 

你需要調用作爲第一個參數,所以包它在一個匿名函數中如下:

map(lambda x: self.classify_word(x) ,re.sub("[^\w]", " ", body).split()) 
+0

感謝它的工作 – jack

+0

如果我想代替self.classify_word(x)在另一個函數中計算的self.example在同一個類中,我怎麼能在那裏調用它? – jack

+0

我不關注 - 爲什麼不能用其他函數替換'self.classify_word(x)'? –

0

這是正確的代碼:

spamicities = sorted(
       map(lambda body: self.classify_word(body) ,re.sub("[^\w]", " ", body).split()), 
       key=lambda x: abs(x-0.5), 
       reverse=True 
       )[:38] 
+0

感謝它的工作 – jack

+0

@alex如果這有助於獎勵best-anwser。 Thankyou –

相關問題