NaiveBayes和LogistcRegression之间令人困惑的结果

摩根·艾伦

我浏览了有关使用Scikit学习的快速教程,并对NaiveBayes与Logistc回归有疑问

是笔录的链接-

您应该能够复制/粘贴下面的代码并运行它。如果您得到不同的答案,请告诉我!

import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn import metrics

from sklearn.naive_bayes import MultinomialNB
from sklearn.linear_model import LogisticRegression

vect = CountVectorizer()

url = 'https://raw.githubusercontent.com/justmarkham/pydata-dc-2016-tutorial/master/sms.tsv'
sms = pd.read_table(url, header=None, names=['label', 'message'])
sms['label_num'] = sms.label.map({'ham': 0, 'spam': 1})
X = sms.message
y = sms.label_num

X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=1)

vect.fit(X_train)
X_train_dtm = vect.transform(X_train)

## NaiveBayes
nb = MultinomialNB()
nb.fit(X_train_dtm, y_train)

# LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train_dtm, y_train)

# testing data
simple_text = ["this is a spam message spam spam spam"]
simple_test_dtm = vect.transform(simple_text)

# ***NaiveBayes***     
nb.predict(simple_test_dtm)
# array([1]) says this is spam

nb.predict_proba(simple_test_dtm)[:, 1]
# array([0.98743019]) 

# ****Logistic Regression***    
logreg.predict(simple_test_dtm)
# array([0]) says this is NOT spam

logreg.predict_proba(simple_test_dtm)[:, 1]
# array([0.05628297])

nb_pred_class = nb.predict(X_test_dtm)
metrics.accuracy_score(y_test, nb_pred_class)
# 0.9885139985642498

lg_pred_class = logreg.predict(X_test_dtm)
metrics.accuracy_score(y_test, lg_pred_class)
# 0.9877961234745154

两个问题:

1.)为什么Spam当LogisticRegression声明是NaiveBayes时返回它是Ham

两个分类器均返回较高的准确度得分,但给出不同的答案?那使我感到困惑。难道我做错了什么?

2.).predict_probab分数是什么意思?以为我理解这是分类器响应的准确性。即NB表示它相信其答案(1)的准确度为98%,但这意味着LogReg表示其答案(0)的准确度为6%。

这没有意义。

任何帮助将不胜感激。

哈什鲁

spam是您在中的第二类(即在索引处1sms.label.map({'ham': 0, 'spam': 1})因此,您打印的概率是消息为的概率,而spam不是模型的预测类别的概率。logreg给出0.05628297消息存在的概率,spam这意味着它给了0.9437概率ham您的两个模型都非常准确,但这并不意味着他们将在每个测试示例上都达成一致。朴素的贝叶斯(Bayes)正确地做到了这一点,但逻辑回归却错了,应该有其他相反的例子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章