【问题标题】:Scikitlearn LinearSVC Bad input shapeScikit Learn LinearSVC 输入形状错误
【发布时间】:2018-04-30 06:55:32
【问题描述】:

我正在尝试对我的数据使用 LinearSVC!我的代码如下:

from sklearn import svm

clf2 = svm.LinearSVC()
clf2.fit(X_train, y_train)

导致以下错误:

ValueError: bad input shape (2190, 9)

在拆分为 y_test 和 y_train 之前,我对我的 y 值使用了 one-hot 编码,并认为这是问题所在。我尝试过实施类似的修复 (sklearn (Bad Input Shape) ValueError),但在尝试重新塑造时仍然会出错。

经过一次热编码后,我有一个目标变量 (y),它有 9 个类,并且我正在运行总共 2190 个样本。看来我需要将这 9 个类减少到 1 个类以适应 SVM。

任何建议将不胜感激!

【问题讨论】:

  • 我们没有您的数据,无法运行此程序或从此 sn-p 推断所有形状。但是,如果这个错误的输入形状与 y_train 相关联,请阅读文档以查看这不是有效的输入!
  • 感谢您的回复!我编辑了我的帖子以使其更清晰
  • 比较形状为(2,3)(如[[0,0,1], [1,0,0]])的目标向量与形状为(2,) 的目标向量如[2,0]。这与阅读文档一起应该可以解决您的问题!
  • @Ben 尝试重塑 X_train 和 y_train,使它们看起来像 X_train = [100,10] 和 y_train = [100,]。在使用 clf2.fit 之前,您可以打印这两个数组的形状并发布结果吗?
  • @Ben,你能添加数据吗?还是一个例子?

标签: scikit-learn svm


【解决方案1】:

您需要重塑数组。这是一个使用随机数据的示例,目标变量是一个包含 5 个类的变量:

import numpy as np
from sklearn import svm

# 100 samples and 10 features
x = np.random.rand(100, 10) 

#5 classes
y = [1,2,3,4,5] * 20

x = np.asarray(x)
y = np.asarray(y)

print(x.shape)
print(y.shape)

clf2 = svm.LinearSVC()
clf2.fit(x, y)

结果:

(100, 10)

(100,)

LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
     intercept_scaling=1, loss='squared_hinge', max_iter=1000,
     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
     verbose=0)

【讨论】:

    【解决方案2】:

    linearsvc不接受y的2-D值。作为documented

    参数:

    y : array-like, shape = [n_samples]
    
        Target vector relative to X
    

    所以您不需要转换为单热编码矩阵。只要提供它们,即使它的字符串也是如此。它们将在内部处理正确。

    【讨论】:

      【解决方案3】:

      对应document, 您可以尝试 sklearn.multiclass.OneVsRestClassifier 如下:

      from sklearn.multiclass import OneVsRestClassifier
      from sklearn.svm import LinearSVC
      
      clf = OneVsRestClassifier(LinearSVC())
      clf.fit(X_train, y_train)
      

      【讨论】:

        猜你喜欢
        • 2016-02-15
        • 2016-03-04
        • 2015-08-12
        • 2017-11-23
        • 2020-09-25
        • 2018-02-12
        • 2019-05-11
        • 2013-04-21
        • 2013-12-18
        相关资源
        最近更新 更多