geatpy
geatpy copied to clipboard
您好,我想做的是一个特征选择的问题,需要对选择出来的特征子集进行评价,我把评价函数放在了aimFunc函数中,但是显示目标函数不合法,请问该怎么解决这个问题呀
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
请单步调试解决。
好的谢谢,请问有群么,我可以加一下吗
好的谢谢,请问有群么,我可以加一下吗
有: https://gitter.im/geatpy2/community
好的,非常感谢!!!