集成堆叠模型......在一种类型的keras模型中具有不同的输入(分子指纹)

Ensemble stacking model... with different inputs (molecular Fingerprint) in one type of keras model

我是 CHEMIST,还在学习 ML...

我已经使用 keras 训练了 7 个不同的模型,使用不同类型的分子指纹作为特征来预测 属性...但是准确度不是很好。

所以使用我在网上找到的教程

def optimized_weights(prd,y_fold):
    # define bounds on each weight
    bound_w = [(0.0, 1.0) for _ in range(n_members) ]
    # arguments to the loss function
    search_arg = (prd ,y_fold)
    # global optimization of ensemble weights

    result = differential_evolution(loss_function, bound_w,search_arg,  maxiter=2000, tol=0.0001)
    # get the chosen weights
    weights = normalize(result['x'])
    return weights



def weighted_accuracy(prd,weights,y_fold):
    summed = tensordot(prd, weights, axes=((0),(0)))

    yhat=np.round(summed)

    score = accuracy_score(y_fold,yhat )
    f1 = f1_score(y_fold,yhat)
    fpr, tpr, thresholds = roc_curve(y_fold,summed,pos_label=1)
    auc_test = auc(fpr, tpr)

    conf_matrix=confusion_matrix(y_fold,yhat)
    total=sum(sum(conf_matrix))
    sensitivity = conf_matrix[0,0]/(conf_matrix[0,0]+conf_matrix[0,1])


    specificity = conf_matrix[1,1]/(conf_matrix[1,0]+conf_matrix[1,1])

    return score,auc_test,sensitivity,specificity,f1

对于加权平均集成模型,我在 80% 的数据上训练模型,并使用 20% 的数据使用 differential_evolution(来自 scipy)找到优化权重以获得最大准确性,但我认为这准确性偏向于测试数据...

我还对 5 折交叉验证重复了相同的过程并确定了平均准确度.... 可以接受吗... 如果没有,请告诉我我能做什么

谢谢

DeepStack 提供用于堆叠和 "ensembling" Keras 模型的接口。它还提供基于开箱即用的验证数据的性能测试