我是CHEMIST,还在学习ML ...
我已经使用不同类型的分子指纹作为特征来预测特性,使用角膜训练了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)来找到最佳权重,以获取最大准确性,但是我认为这种准确性偏向于测试数据... / p>
我还重复了相同的过程以进行5倍交叉验证,并确定了平均准确度。 可以接受... 如果没有,那么请告诉我我能做什么
谢谢