如何使用NaivebayesClassifier获取给定数据集的每个分类准确度

时间:2017-11-30 04:37:05

标签: python machine-learning scikit-learn nltk sklearn-pandas

我非常擅长机器学习。我使用有监督的机器学习来解决问题;

问题:从培训数据中学习并了解标签(我在.csv formet中获得了培训数据,其中column1是数据,column2是相应的标签,我的数据也是用户的电子邮件和标签是我想要分类的类别)以及稍后给定新数据进行测试时将它们分类为您在训练时使用的标签之一;我们想知道每个分类的权重,以便我们确信所做的分类是准确的。

这是我正在尝试的代码:

import random
import pandas as pd
import nltk

def clean_data(data):
    data = str(data).replace('\n', '').replace('\r', '').replace('\r\n', '').replace('\'', '').replace('\\', '')
    return data


def data_features(word):
    return {'test_data': word}


def clean_data_feature(word):
    return data_features(clean_data(word))


def classifydata(filename, datacolumn, labelcolumn):
    df = pd.read_csv(filename, encoding='latin1', index_col=None, dtype={datacolumn: str})
    subset = df[[datacolumn, labelcolumn]]
    labeled_names = [tuple(x) for x in subset.values]
    random.shuffle(labeled_names)
    featuresets = [(clean_data_feature(n), label) for (n, label) in labeled_names]
    train_set, test_set = featuresets, featuresets
    classifier = nltk.NaiveBayesClassifier.train(train_set)
    df = pd.read_csv('D:/ML/Event_Data_601-700.csv', encoding='latin1', index_col=None, dtype={'mMsgContent': str})
    for data in df['mMsgContent']:
        print(classifier.classify(clean_data_feature(data)))

classifydata('D:/ML/Event_Data_Training_600.csv', 'mMsgContent', 'call related to')

这打印了基于学习完成的分类,但是我们想知道“分类器对每个记录的分类有多大的确信(按%表示)是准确的百分之几。

任何帮助/建议/改变然后编写此代码的方式表示赞赏;如果我应该添加更多详细信息,也请告诉我。

1 个答案:

答案 0 :(得分:0)

您想要衡量模型的准确性。这样做:

print(nltk.classify.accuracy(classifier, test_set))

这给出了0到1之间的分数。(1表示100%)

请查看this了解详情。