我有两个函数,分别是训练函数和逻辑回归函数,主函数是训练函数,它在内部运行逻辑回归函数。
当我执行训练函数时,它会报错,
NameError: name 'clf_hyper' is not defined
我认为这是因为我没有获取到逻辑回归函数中生成的clf_hyper
变量,
逻辑回归函数,
from sklearn import model_selectiondef logreg(clf,xtrain, ytrain): # 定义参数网格 # 这可以是一个字典或字典列表 param_grid = { #"solver": ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'], #"penalty": ['none', 'l1', 'l2', 'elasticnet'], "C": [100, 10] } # 初始化网格搜索 model = model_selection.GridSearchCV( estimator = clf, param_grid = param_grid, scoring = "accuracy", verbose = 10, n_jobs = 1 ) # 拟合模型并提取最佳得分 model.fit(xtrain, ytrain) best_parameters = model.best_estimator_.get_params() for param_name in sorted(param_grid.keys()): print(f"\t{param_name}: {best_parameters[param_name]}") # 使用最佳估计器初始化模型 clf_hyper = model.best_estimator_
训练函数,
那么,如果我不使用类,如何在训练函数中使用逻辑回归函数中的clf_hyper
变量呢?谢谢
回答:
我会尝试(如果可能的话?)直接从Logreg()函数返回clf_hyper
变量。你可以通过调用函数来获取clf_hyper
的值。
def logreg(clf, xtrain, ytrain): ... return clf_hyperdef run(fold, model, vectorizer): ... #返回clf_hyper并执行函数 return hyperparameter.logreg(clf,xtrain,ytrain)