我正在尝试使用单词的矢量表示作为scikit学习分类器的功能。我试过SVC。这是代码
<input type="text" ng-model="itemToAdd.regno" />
<input type="text" ng-model="itemToAdd.section" />
函数模型[X]返回一个向量。
我收到错误:ValueError:设置一个带序列的数组元素。
我该怎么做?
答案 0 :(得分:0)
似乎有几个问题。标签和功能的表示形式。
据我从您的代码中看到的,labels
似乎是一个包含字符串(可能看起来像[['0'], ['1'], ...]
)的列表列表,但是fit()
函数期望整数的numpy数组。构建标签列表时,请尝试使用labels.append(int(row[1]))
(如果int
已经是整数,则忽略对row[1]
的强制转换)。如果您的标签是类别名称(例如sports
,politics
或其他名称),则需要先使用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文件中单行外观的信息。