集成堆叠模型......在一种类型的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 模型的接口。它还提供基于开箱即用的验证数据的性能测试
我是 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 模型的接口。它还提供基于开箱即用的验证数据的性能测试