我正在实现一个非线性支持向量机 (SVM),并且想要在一个简单的、非线性可分的数据集上测试我的实现。但在谷歌上搜索无果,无法找到我想要的数据集。您能建议我在哪里可以找到这样的数据吗?或者至少,我应该如何手动生成这样的数据?
谢谢!
回答:
嗯,SVM 是一种二分类器,也就是说,这些分类器将数据放置在单个决策边界的任一侧。
因此,我建议使用一个仅由两个类组成的数据集(虽然严格来说不是必须的,因为 SVM 可以通过多次(串联)对数据进行分类来分离两个以上的类,但在初始测试期间这样做会很麻烦)。
例如,您可以使用 @Scott 的答案中链接的鸢尾花 (iris) 数据集。它由三个类组成:I 类可以与 II 类和 III 类线性分离;II 类和 III 类则不是线性可分的。 如果您想使用这个数据集,为了方便起见,您可能更喜欢移除 I 类(大约前 50 行数据),这样剩下的就是一个二分类系统,其中剩下的两个类不是线性可分的。
鸢尾花数据集非常小(150 x 4,或者 50 行/类 x 4 个特征)。根据您 SVM 原型测试的进度,这可能正是您想要的,或者您可能需要一个更大的数据集。
一类有趣的数据集只包含两个类,并且绝对是非线性可分的,它们是由大型婚恋网站 eHarmony (没有任何隶属关系) 提供的匿名化数据集。除了鸢尾花数据之外,我喜欢使用这些数据集进行 SVM 原型评估,因为它们是大型数据集,具有相当多的特征,但仍然只包含两个非线性可分的类。
我知道有两个地方可以检索到这些数据。 第一个网站有一个单独的数据集 (PCI Code downloads, chapter9, matchmaker.csv),由 500 个数据点(行)和 6 个特征(列)组成。 虽然这组数据更容易处理,但数据或多或少处于“原始”形式,在使用前需要进行一些处理。
第二个来源包含了两个 eHarmony 数据集,其中一个包含超过 50 万行和 59 个特征。 此外,这两个数据集都经过了大量的处理,因此将它们输入到您的 SVM 之前唯一需要的任务就是对特征进行常规的缩放。