sklearn cross_validation ValueError:无法将字符串转换为float

时间:2018-04-10 20:34:58

标签: python numpy scikit-learn cross-validation

我正在学习sklearn并尝试理解交叉验证方法。我已经加载了我的数据集,该数据集是与每个类别相关的子目录,包含相应的文件。

category_data = load_files('Datasets/Data/reviews_6_cat',
    shuffle=True, random_state=1, load_content = True,
    encoding='latin1', decode_error='strict')

我现在正在尝试检索此分类器的交叉验证分数:

clf = svm.SVC(kernel='linear', C=100)
scores = cross_validation.cross_val_score(clf, category_data.data, category_data.target, cv=5)

但我收到错误" ValueError:无法将字符串转换为浮动..."

我认为我的数据集加载方式可能存在问题,因为我无法检索数据的形状:

category_data.data.shape

给我错误:"' list'对象没有属性'形状'"

我尝试使用numpy.array转换它,但它只是给我一个一维数组,考虑到有6个类别,我认为不对。

如何加载我的数据以便它可以在cross_validation方法中使用?

1 个答案:

答案 0 :(得分:0)

忘记在传入方法之前使用TfidfVectorizer转换数据:

tfidf = TfidfVectorizer()

vect_data = tfidf.fit_transform(category_data.data)

clf = svm.SVC(kernel='linear', C=100) 
scores = cross_validation.cross_val_score(clf, vect_data, category_data.target, cv=10)

print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2))