Ошибка при запуске в ноутбуке Jupyter - PullRequest
0 голосов
/ 18 февраля 2020

ОШИБКА

Недопустимый параметр C для оценщика DecisionTreeClassifier (class_weight = Нет, критерий = 'gini', max_depth = Нет, max_features = Нет, max_leaf_nodes = Нет, min_impurity_decrease = 0.0, min_impurity_decrease = 0.0, min_impurity_decrease = 0.0, min Нет, min_samples_leaf = 1, min_samples_split = 2, min_weight_fraction_leaf = 0.0, presort = False, random_state = Нет, splitter = 'best'). Проверьте список доступных параметров с помощью estimator.get_params().keys().

КОД

def train(X_train,y_train,X_test):
    # Scaling features
    X_train=preprocessing.scale(X_train)
    X_test=preprocessing.scale(X_test)

    Cs = 10.0 ** np.arange(-2,3,.5)
    gammas = 10.0 ** np.arange(-2,3,.5)
    param = [{'gamma': gammas, 'C': Cs}]
    skf = StratifiedKFold(n_splits=5)
    skf.get_n_splits(X_train, y_train)
    cvk = skf
    classifier = DecisionTreeClassifier()
    clf = GridSearchCV(classifier,param_grid=param,cv=cvk)
    clf.fit(X_train,y_train)
    print("The best classifier is: ",clf.best_estimator_)
    clf.best_estimator_.fit(X_train,y_train)
    # Estimate score
    scores = model_selection.cross_val_score(clf.best_estimator_, X_train,y_train, cv=5)
    print (scores)
    print('Estimated score: %0.5f (+/- %0.5f)' % (scores.mean(), scores.std() / 2))
    title = 'Learning Curves (SVM, rbf kernel, $\gamma=%.6f$)' %clf.best_estimator_.gamma
    plot_learning_curve(clf.best_estimator_, title, X_train, y_train, cv=5)
    plt.show()
    # Predict class
    y_pred = clf.best_estimator_.predict(X_test)
    return y_test,y_pred

1 Ответ

1 голос
/ 25 февраля 2020

Похоже, вы создаете массив param с одним словарем внутри. param должен быть просто словарем:

РЕДАКТИРОВАТЬ : Рассматривая это далее, как упомянуто @DzDev, передача массива, содержащего один словарь, также является допустимым способом передать параметры.

Похоже, ваша проблема в том, что вы смешиваете понятия двух разных типов оценок. Вы передаете параметры для svm.SV C, но отправляете оценку DecisionTreeClassifier . Таким образом, оказывается, что ошибка именно так, как он говорит, 'C' не является допустимым параметром. Вы должны обновить либо с использованием svm.SVC оценщика, либо обновить ваши параметры, чтобы они были правильными для DecisionTreeClassifier.

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