Я - ХИМИК и все еще изучаю 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% использовали для нахождения оптимизированных весов с использованием diff_evolution (из scipy). ) для максимальной точности, но я думаю, что эта точность смещена в сторону данных испытаний ...
Я также повторил тот же процесс для 5-кратной перекрестной проверки и определил среднюю точность .... Это приемлемо ... еслинет, тогда, пожалуйста, скажите мне, что я могу сделать
Спасибо