在二进制粒子群优化中,有没有办法选择选择多少特征?

2024-10-03 09:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PySarms库实现了BPSO作为一种功能选择方法I followed this tutorial.

有没有办法限制功能的最大数量?如果没有,是否还有其他粒子群(或遗传/模拟退火)python实现具有此功能


Tags: 方法功能数量粒子thistutorial模拟退火办法
1条回答
网友
1楼 · 发布于 2024-10-03 09:20:10

一个简单的方法是对使用任意数量的功能引入惩罚。在下面的代码中,我定义了一个目标

    # Perform classification and store performance in P
    classifier.fit(X_subset, y)
    P = (classifier.predict(X_subset) == y).mean()
    # Compute for the objective function
    j = (alpha * (1.0 - P)
        + (1.0 - alpha) * (1 - (X_subset.shape[1] / total_features)))

    return j

您可以做的是,如果功能的数量大约为max_num_features,则添加一个惩罚,例如

features_count = np.count_nonzero(m)
features_overflow = np.clip( max_num_features - features_count, 0, 10)

feature_overflow_penalty = (features_overflow / 10)

并定义一个新的目标,包括:

j = (alpha * (1.0 - P)
        + (1.0 - alpha) * (1 - (X_subset.shape[1] / total_features))) - feature_overflow_penalty

这是没有测试,有工作要做,以找到正确的惩罚。另一种方法是永远不要建议/尝试高于特定阈值的功能

相关问题 更多 >