Проверьте правильность классификатора дерева решений с помощью Python - PullRequest
0 голосов
/ 26 февраля 2019

Я написал функцию, которая принимает набор данных (excel / pandas) и некоторые значения, а затем прогнозирует результат с помощью классификатора дерева решений.Я сделал это с помощью sklearn.Можете ли вы помочь мне с этим, я просмотрел сеть и этот сайт, но не смог найти ответ, который работает.Я пытался сделать это, но это не работает:

from sklearn.metrics import accuracy_score
score = accuracy_score(variable_list, result_list)

Это ошибка, которую я получаю:

ValueError: Classification metrics can't handle a mix of continuous-multioutput and multiclass targets

Это код (я удалил код для точности)

import pandas as pd
import math
import xlrd
from sklearn.model_selection import train_test_split
from sklearn import tree

def predict_concrete_class(input_data, cement, blast_fur_slug,fly_ash,
                            water, superpl, coarse_aggr, fine_aggr, days):

    data_for_tree = concrete_strenght_class(input_data)

    variable_list = []
    result_list = []

    for index, row in data_for_tree.iterrows():
        variable = row.tolist()
        variable = variable[0:8]

        variable_list.append(variable)

        result_list.append(row[-1])

    decision_tree = tree.DecisionTreeClassifier()
    decision_tree = decision_tree.fit(variable_list,result_list)

    input_values = [cement, blast_fur_slug, fly_ash, water, superpl, coarse_aggr, fine_aggr, days]

    prediction = decision_tree.predict([input_values])

    info = "Prediction of future concrete class after "+ str(days)+" days: "+ str(prediction[0])

    return info

print(predict_concrete_class(data, 500, 0, 0, 200, 0, 1125, 613, 3))

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019
  1. Разделите ваши данные на поезд и проверьте:

    var_train, var_test, res_train, res_test = train_test_split(variable_list, result_list, test_size = 0.3)
    
  2. Изучите дерево решений на наборе поездов:

    decision_tree = tree.DecisionTreeClassifier()
    decision_tree = decision_tree.fit(var_train, res_train)
    
  3. Проверка работоспособности модели путем расчета точности на наборе испытаний:

    res_pred = decision_tree.predict(var_test)
    score = accuracy_score(res_test, res_pred)
    

    Или вы можете напрямую использовать decision_tree.score:

    score = decision_tree.score(var_test, res_test)
    

Ошибкавы получаете это потому, что вы пытаетесь передать variable_list (это ваш список входных функций) в качестве параметра в accuracy_score.Предполагается, что вы передадите свой список истинных и прогнозируемых этикеток.

0 голосов
/ 26 февраля 2019

Вы должны выполнить перекрестную проверку, если хотите проверить точность своей системы.

Вы должны разделить ваш набор данных на две части.Первый используется для изучения вашей системы.Затем вы выполняете процесс прогнозирования для второй части набора данных и сравниваете прогнозируемые результаты с хорошими.С помощью этого метода вы проверяете свою систему на необученном наборе данных.

Чтобы разделить ваш сет, вы должны использовать train_test_split из sklearn.model_selection.

Вот хорошая лекция: https://machinelearningmastery.com/k-fold-cross-validation/

...