【发布时间】:2018-06-24 14:59:43
【问题描述】:
目标:我正在尝试对字符串列表 X, y 运行 kfold 交叉验证,并使用以下代码获取交叉验证分数:
import numpy as np
from sklearn import svm
from sklearn import cross_validation
from sklearn.model_selection import StratifiedKFold
X = ["hey", "join now", "hello", "join today"]
y = ["n", "y", "n", "y"]
skf = StratifiedKFold(n_splits=2)
for train, test in skf.split(X,y):
print("%s %s" % (train,test))
clf = svm.SVC(kernel='linear', C=1)
scores = cross_validation.cross_val_score(clf, X, y, cv=2)
但我得到一个错误:
ValueError: could not convert string to float
问题:是否可以在字符串列表上运行 kfold 交叉验证和 svm?还是我需要不同的程序?
我是 sklearn 的新手,我已经阅读了很多教程,包括这个 http://ogrisel.github.io/scikit-learn.org/sklearn-tutorial/modules/cross_validation.html,但我仍然不确定我是否正确地做到了这一点。
【问题讨论】:
-
没有。
y(标签或目标)可以是字符串,但不能是 X(样本特征)。您需要以某种方式将它们转换为浮动。也许得到单词的 tfidf 或频率。见text processing
标签: python machine-learning scikit-learn svm cross-validation