Python 多次培训一名分级员,以便在Scikit学习中取得平均成绩

Python 多次培训一名分级员,以便在Scikit学习中取得平均成绩,python,scikit-learn,classification,Python,Scikit Learn,Classification,每次训练分类器时,我都会得到不同的假阳性率和假阴性率值。所以我想做的是训练分类器100次,这样我就可以得到假阳性率和假阴性率的平均值 print('\nExecuting Logistic Regression') all_fpr = [] all_tpr = [] all_roc_auc = [] all_acc = [] all_recall = [] for i in range(0, 100): lr_values = lr

每次训练分类器时,我都会得到不同的假阳性率和假阴性率值。所以我想做的是训练分类器100次,这样我就可以得到假阳性率和假阴性率的平均值

print('\nExecuting Logistic Regression')
    all_fpr = []
    all_tpr = []
    all_roc_auc = []
    all_acc = []
    all_recall = []
    for i in range(0, 100):
        lr_values = lrRocAucTest.execute(X_train, y_train, X_test, y_test)
        all_fpr.append(lr_values['fpr'])
        all_tpr.append(lr_values['tpr'])
        all_roc_auc.append(lr_values['roc_auc'])
        all_acc.append(lr_values['accuracy'])
        all_recall.append(lr_values['recall'])
这是lRocauctTest的代码

def execute(X_train, y_train, X_test, y_test):
    clf = Pipeline([
        # ('feature_selection', SelectKBest(f_classif, k=9)),
        ('classifier', LogisticRegression(C=0.1))
    ])
    clf.fit(X_train, y_train)
    predictions = clf.predict(X_test)

    try:
        accuracy = accuracy_score(y_test.values.ravel(), predictions)
    except AttributeError:
        accuracy = accuracy_score(y_test, predictions)

    cnf_matrix = confusion_matrix(y_test, predictions)
    recall = (cnf_matrix[1, 1] / (cnf_matrix[1, 0] + cnf_matrix[1, 1]))


    y_prediction = clf.decision_function(X_test)

    try:
        fpr, tpr, _ = roc_curve(y_test.values.ravel(), y_prediction)
    except AttributeError:
        fpr, tpr, _ = roc_curve(y_test, y_prediction)
    roc_auc = auc(fpr, tpr)

    values = {'fpr': fpr, 'tpr': tpr, 'roc_auc': roc_auc,
              'accuracy': accuracy, 'cnf_mtx': cnf_matrix, 'recall': recall}
    return values
上面的代码执行逻辑回归分类器并返回一些值。我对fpr和tpr感兴趣。这些是
[1,2,3,…,n]
形式的数组,fpr和tpr的长度相同

我要做的是得到
all\u fpr
,这是一个数组列表,以及所有数组的平均值,以便生成一个数组。我将举一个例子来说明问题。假设我们有3个数组[1.0,2.0,3.0],[8.0,9.0,10.0],[14.0,15.0,16.0]。得到的单个数组将是[7.7,8.7,9.7]


是否有一种方法可以在scikit learn中多次运行分类器?或者我必须自己写逻辑吗?

不要说“运行分类器”,这可能意味着“训练”或“预测”。你是说“火车”。另外,您还没有显示实例化
lrocauctest
的代码,它可能包装了采用随机种子
random\u状态的LR分类器。为了确定性和再现性,您可能希望在每次运行时将该种子设置为一组已知值中的一个