我正在实现一个非线性 SVM,我想在一个简单的非线性可分数据上测试我的实现。谷歌没有帮我找到我想要的。你能告诉我在哪里可以找到这样的数据吗?或者至少,我怎样才能手动生成这样的数据?
谢谢,
我正在实现一个非线性 SVM,我想在一个简单的非线性可分数据上测试我的实现。谷歌没有帮我找到我想要的。你能告诉我在哪里可以找到这样的数据吗?或者至少,我怎样才能手动生成这样的数据?
谢谢,
好吧,SVM 是两类分类器——即,这些分类器将数据放置在单个决策边界的任一侧。
因此,我建议一个仅包含两个类的数据集(这不是绝对必要的,因为 SVM 可以通过在数据上多次(串行)传递分类器来分离两个以上的类,在初始阶段这样做很麻烦测试)。
因此,例如,您可以使用 iris 数据集,链接到 Scott 的答案;它由三个类组成,I类与II类和III类线性可分;II 类和 III 类不是线性可分的。如果你想使用这个数据集,为了方便起见,你可能更喜欢删除 I 类(大约前 50 个数据行),所以剩下的是一个二分类系统,其中剩余的两个类不是线性可分的.
iris 数据集非常小(150 x 4,或 50 行/类 x 四个特征)——取决于您在哪里进行 SVM 原型测试,这可能正是您想要的,或者您可能想要更大的数据集。
由大型约会网站eHarmony提供的匿名数据集(没有任何形式的隶属关系)提供了一个有趣的数据集系列,它们仅由两个类组成,并且绝对是非线性可分的。除了 iris 数据,我喜欢使用这些数据集进行 SVM 原型评估,因为它们是具有相当多特征的大型数据集,但仍然仅包含两个非线性可分类。
我知道您可以从两个地方检索此数据。第一个站点有一个数据集(PCI 代码下载、第 9 章、matchmaker.csv),由 500 个数据点(行)和六个特征(列)组成。尽管此集合更易于使用,但数据或多或少处于“原始”形式,需要进行一些处理才能使用它。
该数据的第二个来源包含两个 eHarmony 数据集,其中一个包含超过 50 万行和 59 个特征。此外,这两个数据集已经过大量处理,因此在将它们提供给 SVM 之前唯一需要完成的任务就是对特征进行例行重新缩放。
您需要的特定数据集在很大程度上取决于您选择的核函数,因此似乎最简单的方法就是自己创建一个玩具数据集。
一些有用的想法:
如果您只想要一个不可线性分离的随机数据集,我可以建议Iris 数据集吗?它是一个多元数据集,其中至少有几个有问题的类不是线性可分的。
希望这可以帮助!
您可以从简单的数据集开始,例如 Iris 或双月,它们都是线性不可分的。一旦您感到满意,您就可以从UCI ML 存储库(分类数据集)转移到更大的数据集。
请务必与标准 SVM 求解器(如 libSVM 和 SVM-light)进行比较和基准测试。