繁体   English   中英

如何使用python训练SVM?

[英]How to train SVM using python?

我正在尝试仅使用两列在数据集上训练SVM:

  • 1 4.5456436
  • 0 2.4353453
  • 1 3.5435636
  • 1 5.4235354
  • 0 1.4235345

我努力了:

x = np.array([[1],[0],[1],[1]])
y = np.array([[4.5456436],[2.4353453],[3.5435636],[5.4235354]])

clf = svm.SVC()
clf.fit(y,x)

对于这些行,它可以正常工作,但是当我从数据集文件导入数组时出现问题,我得到了一个错误:

ValueError: The number of classes has to be greater than one; got 1

尽管两种情况下的输出和类型相同。

从数据集代码导入的数据是:

def read(dir):
    x = []
    y = []
    with open(dir) as f:
        lines = f.readlines()
    for i in range(len(lines)):
        x.append(lines[i][0]);y.append(lines[i][1:])
    x = np.array([[int(i)] for i in x])
    y = np.array([[float(i)] for i in y])

任何建议,谢谢。

发表评论作为答案以结束问题。

错误是目标中只有一种类型的类(标签)。 请参阅在您上面发布的示例中(x = np.array([[1],[0],[1],[1]])),有两个类别可以分类(0和1)。

但是,当您从文件导入数据集时,目标对于所有可用样本仅具有类别类型。 请检查从文件加载的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM