Python 在jupyter笔记本中运行时出错 错误

Python 在jupyter笔记本中运行时出错 错误,python,scikit-learn,jupyter,Python,Scikit Learn,Jupyter,估计量的无效参数C DecisionTreeClassifierclass_weight=None,Criteria='gini', 最大深度=无, 最大特征=无,最大叶节点=无, 最小杂质减少=0.0,最小杂质分割=无, 最小样本叶=1,最小样本叶=2, 最小重量分数叶=0.0,预排序=False,随机状态=None, splitter='best'。使用estimator.get_params.keys检查可用参数列表 密码 看起来您正在将参数设置为一个数组,其中包含一个字典。param需要

估计量的无效参数C DecisionTreeClassifierclass_weight=None,Criteria='gini', 最大深度=无, 最大特征=无,最大叶节点=无, 最小杂质减少=0.0,最小杂质分割=无, 最小样本叶=1,最小样本叶=2, 最小重量分数叶=0.0,预排序=False,随机状态=None, splitter='best'。使用estimator.get_params.keys检查可用参数列表

密码 看起来您正在将参数设置为一个数组,其中包含一个字典。param需要只是一个字典:

编辑: 进一步研究,正如@DzDev所提到的,传递包含单个字典的数组也是传递参数的有效方法

看来你的问题在于你混合了两种不同类型的估计量的概念。您正在为传递参数,但正在发送估计器。因此,结果表明错误与它所说的完全一样,'C'不是一个有效的参数。您应该使用svm.SVC估计器更新到,或者更新参数以使DecisionTreeClassifier正确。

但在文档中提到,param_grid可以下注:dict或字典列表:/。。。
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