Как получить точность для всех предсказанных меток классов - PullRequest
0 голосов
/ 08 мая 2018

Как узнать общую точность результатов, которые мы получили, запустив алгоритм дерева решений. Я могу получить пять лучших меток классов для активного пользовательского ввода, но я получаю точность для набора данных X_train и Y_train используя precision_score (). Предположим, я получаю пять лучших рекомендаций. Я хочу получить точность для каждого класса меток и с помощью них, общую точность для вывода. Пожалуйста, предложите некоторую идею.

Мой скрипт на Python находится здесь: здесь событие отличается метками классов

DTC= DecisionTreeClassifier()

DTC.fit(X_train_one_hot,y_train)
print("output from DTC:")
res=DTC.predict_proba(X_test_one_hot)
new=list(chain.from_iterable(res))
#Here I got the index value of top five probabilities
index=sorted(range(len(new)), key=lambda i: new[i], reverse=True)[:5]
for i in index:
    print(event[i])

Here is the sample code which i tried to get the accuracy for the predicted class labels: 
here index is the index for the top five probability of class label and event is the different class label. 
for i in index: 
    DTC.fit(X_train_one_hot,y_train) 
    y_pred=event[i]  
    AC=accuracy_score((event,y_pred)*100) 
    print(AC) 

1 Ответ

0 голосов
/ 08 мая 2018

Поскольку у вас есть проблема классификации с несколькими классами, вы можете рассчитать точность классификатора, используя функцию confusion_matrix в Python.

Чтобы получить общую точность, сложите значения в диагонали и разделите сумму на общее количество выборок.

Рассмотрим следующую простую мультиклассовую классификацию пример с использованием набора данных IRIS:

import itertools
import numpy as np
import matplotlib.pyplot as plt

from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix

# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
classifier = svm.SVC(kernel='linear', C=0.01)
y_pred = classifier.fit(X_train, y_train).predict(X_test)

Теперь, чтобы вычислить общую точность, используйте матрицу путаницы:

conf_mat = confusion_matrix(y_pred, y_test)
acc = np.sum(conf_mat.diagonal()) / np.sum(conf_mat)
print('Overall accuracy: {} %'.format(acc*100))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...