как построить тепловую карту и найти лучший гиперпараметр для дерева решений после gridsearch - PullRequest
1 голос
/ 25 мая 2019

Мне нужно построить тепловую карту для нахождения наилучшего гиперпараметра для дерева решений после поиска в сетке для доноров, чтобы выбрать набор данных, который доступен из kaggle.

Здесь у меня есть два гиперпараметра:

max_depth=[1, 5, 10, 50, 100, 500]
min_samples_split=[5, 10, 100, 500]

X_tr_bow = hstack((X_train_price_norm,X_train_categories_ohe,X_train_state_ohe,X_train_teacher_ohe,X_train_grade_ohe,X_train_essay__bow,X_train_clean_title__bow)).tocsr()

X_tr_bow - это данные, которые я помещаю в gridsearch.

измерение X_tr_bow - (53531, 7980) (53531,)

%%time
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
import math
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
lr_bow = DecisionTreeClassifier()
#alphas=list(map(lambda x: float(pow(10,x)),list(range(-15,16,1))))
#alphas=[0.00001, 0.00005, 0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100, 500, 1000, 2500, 5000, 10000]
max_depth=[1, 5, 10, 50, 100, 500]
min_samples_split=[5, 10, 100, 500]
parameters = {'max_depth':max_depth,'min_samples_split':min_samples_split}

clf = GridSearchCV(lr_bow, parameters, cv= 10, scoring='roc_auc')

clf.fit(X_tr_bow, y_train) 

train_auc= clf.cv_results_['mean_train_score']
train_auc_std= clf.cv_results_['std_train_score']
cv_auc = clf.cv_results_['mean_test_score'] 
cv_auc_std= clf.cv_results_['std_test_score']


print("Best cross-validation score: {:.2f}".format(clf.best_score_))
print("Best parameters: ", clf.best_params_)

import pandas as pd
pvt = pd.pivot_table(pd.DataFrame( clf.cv_results_['param_max_depth'],clf.cv_results_['param_min_samples_split'],clf.cv_results_['mean_train_score'],clf.cv_results_['mean_test_score']),
index='param_alpha', columns='param_l1_ratio')
# values='mean_test_score'
pvt
import seaborn as sns       
ax = sns.heatmap(pvt)

Ошибка, с которой я здесь сталкиваюсь

Best cross-validation score: 0.59
Best parameters:  {'max_depth': 50, 'min_samples_split': 500}
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py in create_block_manager_from_blocks(blocks, axes)
   1650                 blocks = [make_block(values=blocks[0],
-> 1651                                      placement=slice(0, len(axes[0])))]
   1652 

6 frames
ValueError: Wrong number of items passed 1, placement implies 24

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py in construction_error(tot_items, block_shape, axes, e)
   1689         raise ValueError("Empty data passed with indices specified.")
   1690     raise ValueError("Shape of passed values is {0}, indices imply {1}".format(
-> 1691         passed, implied))
   1692 
   1693 

ValueError: Shape of passed values is (24, 1), indices imply (24, 24)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...