2017-11-30 3 views
0

Ich bin sehr viel neues Lernen Maschine mit NaivebayesClassifier eingestellt. Ich habe ein Problem zu lösen, das überwachtes maschinelles Lernen verwendet;Wie pro Klassifikationsgenauigkeit für ein bestimmten Daten erhalten

Problem: Lernen Sie von den Trainingsdaten und versteht die Etiketten (ich habe Trainingsdaten im CSV-formet bekam wo column1 Daten und column2 Etikett entspricht, auch meine Daten E-Mail von Benutzern und Label ist die Kategorie in was ich klassifizieren möchte) und später wenn neue Daten zum Test gegeben werden, klassifiziere sie zu einem der Label, die du beim Training benutzt hast; und wir wollten die Pro-Klassen-Gewichtung wissen, so dass wir sicher sein sollten, dass die vorgenommene Klassifizierung korrekt ist. Hier

ist der Code, ich versuche:

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') 

Diese die Klassifizierung erfolgt druckt basierend auf Lernen, aber wir wollten wissen, dass „Wie zuversichtlich, dass der Klassifikator (in Bezug auf%) ist, dass die Einstufung i hat hier pro Datensatz ist um einige Prozent genau

Jede Hilfe/Anregung/ändern dann Weg, um diesen Code zu schreiben geschätzt;.. lassen Sie mich auch wissen, wenn ich mehr Details sollten

+0

Werfen Sie einen Blick auf https://stackoverflow.com/questions/21107075/classification-using-movie-review-corpus-in-nltk-python – alvas

Antwort

0

Sie wollen die Genauigkeit messen von dein Modell, tu dies:

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

Daraus ergibt sich eine Punktzahl in-zwischen 0 und 1 (1 bedeutet 100%)

Bitte überprüfen this für weitere Details.

Verwandte Themen