【问题标题】:String Kernel SVM with Scikit-learn带有 Scikit-learn 的字符串内核 SVM
【发布时间】:2016-01-24 07:22:13
【问题描述】:

我是 scikit-learn 的新手,我在 Stackoverflow 上的 scikitearn 中的字符串内核的其他问题之一中看到了一个示例解决方案。所以我试了一下,但我收到了这个错误消息:

>>> X = np.arange(len(data)).reshape(-1, 1)
>>> X
   array([[0],
   [1],
   [2]])

    def string_kernel(X, Y):
    ... R = np.zeros((len(x), len(y)))
    ... for x in X:
    ...     for y in Y:
    ...         i = int(x[0])
    ...         j = int(y[0])
    ...         R[i, j] = data[i][0] == data[j][0]
    ... return R

>>> clf = SVC(kernel=string_kernel)
>>> clf.fit(X, ['no', 'yes', 'yes'])

这是我收到的错误消息:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/sklearn/svm/base.py", line 178, in   fit
  fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
  File "/Library/Python/2.7/site-packages/sklearn/svm/base.py", line 217, in    _dense_fit
   X = self._compute_kernel(X)
  File "/Library/Python/2.7/site-packages/sklearn/svm/base.py", line 345, in _compute_kernel
  kernel = self.kernel(X, self.__Xfit)
  File "<stdin>", line 2, in string_kernel
  UnboundLocalError: local variable 'x' referenced before assignment

【问题讨论】:

标签: python numpy machine-learning scikit-learn svm


【解决方案1】:

您看到的具体错误实际上与 SVM 无关。在您的 string_kernel 函数中的这一行:

R = np.zeros((len(x), len(y)))

小写x(和y)当前未定义,因此UnboundLocalError larsmans可能意味着len(X)len(Y)

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 2015-10-14
    • 2012-09-18
    • 2020-09-17
    • 1970-01-01
    • 2014-12-11
    • 2015-09-29
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多