8

我正在实现一个非线性 SVM,我想在一个简单的非线性可分数据上测试我的实现。谷歌没有帮我找到我想要的。你能告诉我在哪里可以找到这样的数据吗?或者至少,我怎样才能手动生成这样的数据?

谢谢,

4

4 回答 4

5

好吧,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 之前唯一需要完成的任务就是对特征进行例行重新缩放。

于 2011-05-09T05:24:21.780 回答
2

您需要的特定数据集在很大程度上取决于您选择的核函数,因此似乎最简单的方法就是自己创建一个玩具数据集。

一些有用的想法:

  • 同心圆
  • 螺旋形类
  • 嵌套香蕉形类

如果您只想要一个不可线性分离的随机数据集,我可以建议Iris 数据集吗?它是一个多元数据集,其中至少有几个有问题的类不是线性可分的。

希望这可以帮助!

于 2011-05-07T19:37:08.733 回答
1

您可以从简单的数据集开始,例如 Iris 或双月,它们都是线性不可分的。一旦您感到满意,您就可以从UCI ML 存储库(分类数据集)转移到更大的数据集

请务必与标准 SVM 求解器(如 libSVM 和 SVM-light)进行比较和基准测试。

于 2011-05-16T04:48:15.020 回答
0

如果你用 Python 编程,你可以使用 sklearn.datasets.samples_generator 包中的一些函数来手动生成嵌套的月亮形状数据集、同心圆数据集等。是这些数据集的绘图页面。

如果您不想手动生成数据集,可以参考这个网站,在“形状集”部分,您可以下载这些数据集并直接对其进行测试。

于 2015-04-13T12:30:01.980 回答