我是scikit learn的新手,我刚刚看到了文档和其他一些堆栈溢出帖子来构建决策树。我有一个包含 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
列是带有是/否标签的目标列。
问题是TfidfVectorizer
无法直接对数据帧进行操作。它只能对字符串序列进行操作。由于您传递的是数据帧,因此它会将其视为列序列,并尝试分别对每个列进行矢量化。
请尝试使用:
X = vect.fit_transform(data['my_column_name'])
您可能希望在调用 vect.fit_transform
之前预处理数据帧以连接不同的列。