Я пытаюсь получить оценку точности дерева решений. Почему я получаю ошибку TypeError? - PullRequest
0 голосов
/ 18 февраля 2020
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
from sklearn.metrics import accuracy_score

## training data (20%)
data = pd.read_csv("train.csv", usecols=[1,2,9])
X_train = pd.read_csv("train.csv", usecols=[2,9])
y_train = pd.read_csv("train.csv", usecols=[1])

dt = DecisionTreeClassifier(max_depth=6)
dt.fit(X_train, y_train)

y_predict = dt.predict(X_test)

accuracy = dt(y_test, y_predict)

я получаю «TypeError: объект DecisionTreeClassifier не вызывается», хотя я (в основном следовал учебнику по датакампе).

1 Ответ

2 голосов
/ 18 февраля 2020

dt(...) пытается "вызвать" dt, что вы не можете сделать, потому что dt не является функцией. Вам нужна функция, которая вычисляет точность на основе истинных и предсказанных меток.

Попробуйте что-то вроде этого

def calculate_accuracy(y_true, y_predicted):
    num_correct = sum(map(lambda t, p: t==p, y_true, y_predicted))
    return num_correct / len(y_true)
accuracy = calculate_accuracy(y_test, y_predict)

РЕДАКТИРОВАТЬ:
Чем удобнее для начинающих версия моего calculate_accuracy() будет выглядеть как

def calculate_accuracy(y_true, y_predicted):
    num_correct = 0
    for i in range(len(y_true)):
        if (y_true[i] == y_predicted[i]):
            num_correct = num_correct + 1
    return num_correct / len(y_true)
...