我们可以使用未标记的数据测试朴素贝叶斯算法吗?

时间:2018-09-24 11:01:38

标签: python machine-learning scikit-learn

我已经使用朴素贝叶斯算法的标记数据训练了模型。并用另一组标记数据测试了相同的模型。而且我已经使用以下代码计算了准确性,准确性和召回力得分。

我的代码:

from sklearn.metrics import confusion_matrix
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from io import open

def load_data(filename):
    reviews = list()
    labels = list()
    with open(filename, encoding='utf-8') as file:
        file.readline()
        for line in file:
            line = line.strip().split(' ',1)
            labels.append(line[0])
            reviews.append(line[1])

    return reviews, labels


X_train, y_train = load_data('./train_data.txt')
X_test, y_test = load_data('./test_data.txt')

vec = CountVectorizer() 

X_train_transformed =  vec.fit_transform(X_train) 

X_test_transformed = vec.transform(X_test)

clf= MultinomialNB()
clf.fit(X_train_transformed, y_train)

score = clf.score(X_test_transformed, y_test)
print("score of Naive Bayes algo is :" , score)

y_pred = clf.predict(X_test_transformed)
print(confusion_matrix(y_test,y_pred))

print("Precision Score : ",precision_score(y_test, y_pred,average='micro'))
print("Recall Score : ",recall_score(y_test, y_pred,average='micro'))

但是,现在我有另一个包含未标记数据的测试集。现在,我可以使用上面的代码使用未标记的数据测试模型吗?

2 个答案:

答案 0 :(得分:0)

这就是我从您的问题中得到的解释。

您已经使用训练数据训练了Naive Bayes模型,并使用测试数据对其进行了测试,并且您已经使用confusion matrix & accuracy作为衡量模型性能的指标。

现在您的问题可能是

  

使用此模型,可以预测没有标签的看不见数据的标签吗?

如果这是您的问题,那么可以。此外,这就是您训练模型(即预测未见数据上的标签)的原因。

由于看不见的数据没有标签,您怎么知道预测的标签是正确的?因此,只有您使用test data测试了模型并测量了模型的性能。如果模型的准确性为70%,则模型正确预测的概率为70%。

我强烈建议您在开始使用why are you doing what are you doing之前先考虑一下!

答案 1 :(得分:0)

如果要使用看不见的数据自动计算模型的准确性,则答案为“否”。

要创建混淆矩阵并找出这些矩阵,您需要传递Y标签变量。好的做法是将您的训练数据分为训练和测试数据。