如何使用矢量作为scikit中的特征学习

时间:2017-03-30 10:57:29

标签: python vector scikit-learn svm

我正在尝试使用单词的矢量表示作为scikit学习分类器的功能。我试过SVC。这是代码

 <input type="text" ng-model="itemToAdd.regno" />
 <input type="text" ng-model="itemToAdd.section" />

函数模型[X]返回一个向量。

我收到错误:ValueError:设置一个带序列的数组元素。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

似乎有几个问题。标签和功能的表示形式。

据我从您的代码中看到的,labels似乎是一个包含字符串(可能看起来像[['0'], ['1'], ...])的列表列表,但是fit()函数期望整数的numpy数组。构建标签列表时,请尝试使用labels.append(int(row[1]))(如果int已经是整数,则忽略对row[1]的强制转换)。如果您的标签是类别名称(例如sportspolitics或其他名称),则需要先使用LabelEncoder。调用fit()之前,您可能还希望将标签列表转换为numpy数组:y = np.array(labels)

您的features列表似乎有类似的问题,但看起来好像是三层嵌套列表。 fit()函数期望数据矩阵为n_samples x n_features矩阵。如果您正在使用词向量,则n_features是词向量的维数,n_samples是csv文件中的文档数。

要从单词向量中获取文档表示,您需要以某种方式进行组合。通常,仅将文档中的所有向量相加或求平均值是一个很强的基准。请注意,很难从您的示例中看出int(row[2])line = [int(row[2]),np.array(model[row[0]])]的含义。

如果您仍在努力使csv文件起作用,我建议您发布更多有关csv文件中单行外观的信息。