Невозможно рассчитать производительность модели для регрессора дерева решений - PullRequest
0 голосов
/ 30 мая 2020

Хотя мой код отлично работает на repl и дает мне результаты, но он терпит неудачу в тестовой среде Katacoda.

Я также прилагаю файл repl для вашего обзора, который также содержит вопрос, который комментируется непосредственно над кодом, который я написал.

Пожалуйста, просмотрите и сообщите мне, какие ошибки я здесь делаю.

Repl Link https://repl.it/repls/WarmRobustOolanguage

Также общий код ниже

Комментарий к вопросу Инструкции

#Import two modules sklearn.datasets, and #sklearn.model_selection.
#Import numpy and set random seed to 100.

#Load popular Boston dataset from sklearn.datasets module #and assign it to variable boston.

#Split boston.data into two sets names X_train and X_test. #Also, split boston.target into two sets Y_train and Y_test.

#Hint: Use train_test_split method from #sklearn.model_selection; set random_state to 30.
#Print the shape of X_train dataset.

#Print the shape of X_test dataset.

import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import RandomizedSearchCV
from sklearn.model_selection import cross_val_score
import numpy as np
np.random.seed(100)
max_depth = range(2, 6)

boston = datasets.load_boston()

X_train, X_test, Y_train, Y_test = train_test_split(boston.data, boston.target, random_state=30)

print(X_train.shape)
print(X_test.shape)

#Import required module from sklearn.tree.

#Build a Decision tree Regressor model from X_train set and #Y_train labels, with default parameters. Name the model as #dt_reg.

#Evaluate the model accuracy on training data set and print #it's score.

#Evaluate the model accuracy on testing data set and print it's score.

#Predict the housing price for first two samples of X_test #set and print them.(Hint : Use predict() function)

dt_reg = DecisionTreeRegressor(random_state=1)
dt_reg = dt_reg.fit(X_train, Y_train)

print('Accuracy of Train Data :', cross_val_score(dt_reg, X_train,Y_train, cv=10 ))
print('Accuracy of Test Data :', cross_val_score(dt_reg, X_test,Y_test, cv=10 ))
predicted = dt_reg.predict(X_test[:2])
print(predicted)

#Fit multiple Decision tree regressors on X_train data and #Y_train labels with max_depth parameter value changing from #2 to 5.

#Evaluate each model accuracy on testing data set.

#Hint: Make use of for loop
#Print the max_depth value of the model with highest accuracy.

dt_reg = DecisionTreeRegressor()
random_grid = {'max_depth': max_depth}
dt_random = RandomizedSearchCV(estimator = dt_reg, param_distributions = random_grid, 
n_iter = 90, cv = 3, verbose=2, random_state=42, n_jobs = -1)

dt_random.fit(X_train, Y_train)
dt_random.best_params_

def evaluate(model, test_features, test_labels):
    predictions = model.predict(test_features)
    errors = abs(predictions - test_labels)
    mape = 100 * np.mean(errors / test_labels)
    accuracy = 100 - mape
    print('Model Performance')
    print('Average Error: {:0.4f} degrees.'.format(np.mean(errors)))
    print('Accuracy = {:0.2f}%.'.format(accuracy))

    return accuracy

best_random = dt_random.best_estimator_
random_accuracy = evaluate(best_random, X_test,Y_test)

print("Accuracy Scores of the Model ",random_accuracy)
best_parameters = (dt_random.best_params_['max_depth']);
print(best_parameters)

1 Ответ

0 голосов
/ 08 июня 2020

Вопрос касается значений по умолчанию. Попробуйте удалить random_state = 1

Текущая строка:

dt_reg = DecisionTreeRegressor(random_state=1)

Обновить строку:

dt_reg = DecisionTreeRegressor()

Думаю, это должно работать !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...