geatpy icon indicating copy to clipboard operation
geatpy copied to clipboard

您好,我想做的是一个特征选择的问题,需要对选择出来的特征子集进行评价,我把评价函数放在了aimFunc函数中,但是显示目标函数不合法,请问该怎么解决这个问题呀

Open Perxixixi opened this issue 2 years ago • 4 comments

def aimFunc(self, pop):  # aimFunc里面你可以用任何方式给ObjV赋值,所以最后只要给Objv赋值,并且符合Geatpy数据结构格式就可以
    '''
    功能:计算种群的目标函数
    输入:实例,种群  mask是种群中的一个解
    输出:种群的目标函数值
    '''
    Vars = pop.Phen  # 得到决策变量矩阵,种群的表现型矩阵

    all_mask_F = []
    for solution in Vars:
        mask_F = []
        for i in range(len(solution)):
            if solution[i].all() == 1.0:
                mask_F.append(i)
        all_mask_F.append(mask_F)

    result = []
    for mask_F in all_mask_F:
        # print(mask_F)
        dataMat_Fe = self.x_train[:, mask_F]
        # print(dataMat_Fe.shape)
        svm = SVC(C=0.3, gamma=0.03, kernel='poly', coef0=4, degree=3).fit(dataMat_Fe, self.y_train)
        #     svm = svm.fit(dataMat_Fe, y_train)
        new_x_test = self.x_test[:, mask_F]
        # print(new_x_test.shape)
        y_predict = svm.predict(new_x_test)  # 利用训练好的分类器  #测试标签 predict(测试集真实数据)
        TN, FP, FN, TP = confusion_matrix(self.y_test, y_predict).ravel()  # confusion_matrix(测试集真实数据,测试集标签数据)
        m = len(mask_F)
        accuracy = (TP + TN) / (TP + TN + FP + FN)
        recall = TP / (TP + FN)
        res = np.hstack([m, accuracy, recall])
        result.append(res)
        result_arr = np.array(result)
    pop.Objv=result_arr

Perxixixi avatar Apr 03 '22 13:04 Perxixixi

请单步调试解决。

geatpy-dev avatar Apr 03 '22 23:04 geatpy-dev

好的谢谢,请问有群么,我可以加一下吗

Perxixixi avatar Apr 05 '22 04:04 Perxixixi

好的谢谢,请问有群么,我可以加一下吗

有: https://gitter.im/geatpy2/community

geatpy-dev avatar Apr 07 '22 02:04 geatpy-dev

好的,非常感谢!!!

Perxixixi avatar Apr 07 '22 04:04 Perxixixi