差分进化算法优化集成参数

匿名 (未验证) 提交于 2019-12-02 23:43:01

一、差分进化的思想

  

二、差分进化优化集成参数

def fitness(w):      #计算适应度值函数     trainX, Y_train, testX, Y_test = classifier.feature_sec()     predict = []     m = classifier.Y_test.shape[0]     #for Xi in model.testX:     clf1 = classifier.clfLR(trainX, Y_train, testX, Y_test)     clf2 = classifier.clfLDA(trainX, Y_train, testX, Y_test)     clf3 = classifier.clfNB(trainX, Y_train, testX, Y_test)     clf4 = classifier.clfSVM(trainX, Y_train, testX, Y_test)     clf5 = classifier.clfPLA(trainX, Y_train, testX, Y_test)     f1 = np.array(clf1.predict_proba(testX))     f2 = np.array(clf2.predict_proba(testX))     f3 = np.array(clf3.predict_proba(testX))     f4 = np.array(clf4.predict_proba(testX))     f5 = np.array(clf5._predict_proba_lr(testX))     fit = w[0]*f1 + w[1]*f2 + w[2]*f3 + w[3]*f4 + w[4]*f5     # print("f1",f1)     # print("fit:",fit)     # s = 0.5 * sum(w)     print("w,s:",w)     # for i in range(m):     #     fit = w[0]*f1[i] + w[1]*f2[i] + w[2]*f3[i] + w[3]*f4[i]     #     if fit >= s:     #         predict.append(1)     #     else:     #         predict.append(0)     for fitprob in fit:         if fitprob[0]>fitprob[1]:             predict.append(0)         else:             predict.append(1)     #print("predict:",predict)      #print("Ytest shape:",classifier.Y_test.shape)     # TP=TN=FP=FN = 0      # print(m)     # for k in range(m):     #     if Y_test[k]==1 and predict[k]==1:TP += 1     #     elif Y_test[k]==0 and predict[k]==0: TN += 1     #     elif Y_test[k]==0 and predict[k]==1:FP += 1     #     elif Y_test[k]==1 and predict[k]==0:FN += 1      # TP = sum(classifier.Y_test == predict == 1)       #将正类预测为正类的样本数     # TN = sum(classifier.Y_test == predict == 0)       #将负类预测为负类的样本数     # FP = sum(classifier.Y_test == 0 and predict == 1)       #将负类预测为正类的样本数     # FN = sum(classifier.Y_test == 1 and predict == 0)       #将正类预测为负类的样本数     # F1 = 2*TP/(2*TP+FN+FP)       #F值越大,说明实验效果越好     #Gmean = math.sqrt((TP/(TP+FN))*(TN/(TN+FP)))        #用G-mean评价分类器性能     count = sum(predict==Y_test)     print("Accuracy,F1 is:",count/m)     return count/m
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!