Python 如何获得一个;计分;训练模型(预测)

Python 如何获得一个;计分;训练模型(预测),python,scikit-learn,grid-search,Python,Scikit Learn,Grid Search,函数GridSearchCV中的搜索和训练都基于数据(X,y)。 培训在自定义标准T_记分员上进行。 在T_scorer函数中是否可以获得一个经过训练的模型来使用? 我需要“T_记分员”预测数据“X1”。 也就是说,该模型在每次迭代时都根据数据(X,y)进行训练,并在(X1,y1)上进行预测 同样(X1,y1)根本不参加培训,“GridSearchCV”这些数据看不到 理想情况下,我们应该在数据(X,y)上进行训练,在“评分”中,应传输基于预测(X1,y1)的结果 make_scorer()仅当

函数GridSearchCV中的搜索和训练都基于数据(X,y)。 培训在自定义标准T_记分员上进行。 在T_scorer函数中是否可以获得一个经过训练的模型来使用? 我需要“T_记分员”预测数据“X1”。 也就是说,该模型在每次迭代时都根据数据(X,y)进行训练,并在(X1,y1)上进行预测 同样(X1,y1)根本不参加培训,“GridSearchCV”这些数据看不到

理想情况下,我们应该在数据(X,y)上进行训练,在“评分”中,应传输基于预测(X1,y1)的结果

make_scorer()
仅当您具有签名功能时才应使用
(y_true,y_pred)
。在函数上使用
make_scorer()
时,返回的签名是:

func(估计量,X,y)

然后在GridSearchCV中使用。因此,您可以将函数指定为:

# I am assuming this is the data you want to use
X1 = X[:1000]
y1 = y[:1000]

def T_scorer(clf, X, y):
    # Here X and y passed on to the function from GridSearchCV will not be used
    y_pred1 = clf.predict(X1)
    r = np.sum((y_pred1 == 0) & (y1 == y_pred1))
    confmat = confusion_matrix(y1, y_pred1)
    print(confmat)
    return r

# Now dont use make_scorer, pass directly
grid_searcher = GridSearchCV(clf,..., verbose=20, scoring=T_scorer)

我想计算这个函数中的参数。并将其发送至“返回”。这是理想的。但是,如果您只是在每次迭代时以“print”的形式输出,那么它是合适的。为什么函数是“T_scorer(cf,X,y)”而不是“T_scorer(cf,X1,y1)”?我事先会问@user287629是否理解,因此经验不足),函数中的参数将从GridSearchCV传递。你可以给他们起任何名字。除此之外,是否有可能只在“打印”中输出(X,y)结果?@user287629是的。用X和y,就像我用X1和y1一样
# I am assuming this is the data you want to use
X1 = X[:1000]
y1 = y[:1000]

def T_scorer(clf, X, y):
    # Here X and y passed on to the function from GridSearchCV will not be used
    y_pred1 = clf.predict(X1)
    r = np.sum((y_pred1 == 0) & (y1 == y_pred1))
    confmat = confusion_matrix(y1, y_pred1)
    print(confmat)
    return r

# Now dont use make_scorer, pass directly
grid_searcher = GridSearchCV(clf,..., verbose=20, scoring=T_scorer)