【问题标题】:How to get per classification accuracy for a given data set using NaivebayesClassifier如何使用 NaivebayesClassifier 获得给定数据集的每个分类精度
【发布时间】:2018-05-13 22:33:39
【问题描述】:

我对机器学习非常陌生。我有一个问题需要使用监督机器学习来解决;

问题:从训练数据中学习并理解标签(我有.csv格式的训练数据,其中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')

这会打印基于学习完成的分类,但我们想知道“分类器对我在此处对每条记录所做的分类的准确度有多少信心(以百分比表示)。

感谢任何帮助/建议/更改编写此代码的方式;如果我应该添加更多详细信息,请告诉我。

【问题讨论】:

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


【解决方案1】:

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

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

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

详情请查看this

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2016-07-06
    • 2019-10-22
    • 2020-04-15
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多