我试图用cvxpy实现python中最近邻分类器的整数编程.

简短介绍

给定一个包含n个 colored颜色 (红色或蓝色)的点的数据集,我们希望 Select 最少数量的候选点,s.t对于每个不是候选点的点,其最近的候选点具有相同的 colored颜色 .

我的流动

给定一组n个点(带 colored颜色 ),定义一个指示向量I(|I| = n),

I_i = 1 if and only if vertex i is chosen as a candidate

此外,我还定义了另外两个向量,分别命名为AB(|A| = |B| = n),如下所示:

A_i = the distance between v_i to it's closest candidate with the **same** color
B_i = the distance between v_i to it's closest candidate with a **different** color

因此,我有n个约束条件:

我的目标是最小化向量I之和(代表候选数量)

我的问题

向量AB似乎在变化,因为它们受到I的影响,因为当 Select 一个候选者时,它会影响其在I中的条目,而这会影响AB,约束取决于这些向量..

有什么建议吗?

谢谢

推荐答案

总而言之:您希望找到属于给定训练集的最小示例集,以便生成的最近邻分类器在该训练集上达到完美的精度.

我建议你把这个表述如下. for each 示例e创建一个0–1变量x(e),指示是否 Select 了e.对于具有不同标签的每对有序示例e和e′,编写一个约束

x(e′)≤∑e′C(e,e′)x(e′)

其中C(e,e′)是一组示例e′,具有与e相同的标签,使得e′比e′更接近e(包括e′=e).这意味着,如果 Select 了e',那么它不是距离e最近的例子.

我们还需要

ex(e)≥ 1.

不允许空集合.最后,目标是

最小化∑ex(e).

Python相关问答推荐

使用类型提示进行类型转换

启动线程时,Python键盘模块冻结/不工作

将Pandas DataFrame中的列名的长文本打断/换行为_STRING输出?

pyspark where子句可以在不存在的列上工作

Sknowled线性回归()不需要迭代和学习率作为参数

3.我无法找到制作这种三角形图案的方法

如何计算二十面体每条三角形边的中点

Pandas 身上的负数造型

提取子数组,然后在Python中将它们连接起来

用考克斯回归的生存分析系列的真值是模棱两可的.

有没有更python的方法来复制python中列表的第n个元素?例如,使用列表理解

Django LoginView中的一个大问题

如何在层之间添加任意函数?

每像素级图像处理的毕达式优化

JAX效率问题中的多元导数

如何动态修改气流任务decorator 属性?

从html获取元素时出现问题

Lxml xPASS在XML中的第一个标记下面找不到标记

带公差的比率的唯一标识符

子类中的__epr__没有显示所有参数,这是正常的做法吗?