使用sklearn和pandas作为决策树的ValueError?

时间:2016-01-28 23:01:41

标签: python scikit-learn decision-tree sklearn-pandas

我是scikit的新手,我刚看到文档和其他一些stackoverflow帖子来构建决策树。 我有一个包含16个属性和1个目标标签的CSV数据集。我应该如何将其传递给决策树分类器? 我目前的代码如下:

import pandas
import sklearn
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import tree

data = pandas.read_csv("yelp_atlanta_data_labelled.csv", sep=',')
vect = TfidfVectorizer()
X = vect.fit_transform(data) 
Y = data['go']

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

当我运行代码时,它给出了以下错误:

ValueError: Number of labels=501 does not match number of samples=17

为了给出一些上下文,我的数据集有501个数据点和17个总列。 go列是具有是/否标签的目标列。

1 个答案:

答案 0 :(得分:1)

问题是TfidfVectorizer无法直接在数据框上运行。它只能在一系列字符串上运行。因为您传递的是数据帧,所以它将其视为一系列列,并尝试单独对每个列进行矢量化。

请尝试使用:

X = vect.fit_transform(data['my_column_name']) 

在调用vect.fit_transform之前,您可能希望预处理数据框以连接不同的列。