0
$\begingroup$

I run a classification by means of a neural network, thus my y-values are converted to a one-hot matrix:

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(categories='auto')
y = encoder.fit_transform(y.reshape(-1,1), ).toarray()

When I do a single model run (like in the following), I get my predictions in the format of a (samples, classes) matrix containing class probabilities.

fit = model.fit(
    train,
    train_label,
    epochs = 250,
    batch_size = 128)
pred = model.predict(test)
pred.shape
Out[285]: (1420, 67)

When I do a grid search (like in the following), then do a prediction based on grid_result.best_estimator_, however, I get my predictions in the format of a single-dimensional array with numbers:

grid = GridSearchCV(estimator = model, 
                    param_grid = param_grid,
                    cv = 10)
grid_result = grid.fit(train, train_label,
                       shuffle = True)
pred = grid_result.best_estimator_.predict(test)
pred.shape
Out[289]: (1420,)

Why does GridSearchCV output a single-dimensional array instead of a (samples, classes) matrix, which is the format of the "observed" y-values? Is there a possibility to let GridSearchCV output a (sample, classes) matrix, thus circumvent the procedure to use e.g. label_binarizer() to transform the output to the desired format?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.