【发布时间】:2021-08-07 15:13:59
【问题描述】:
尝试在我的 MultinomialNB 数据集上执行 train_test_split 数据格式如图_1:
其中 duration_label 是目标,其他都是特征
由于某些特征是字符串,我需要使用 CountVector 将它们转换为浮点数,以便 MultinomialNB 工作
这就是我遇到这个问题的地方
X = df_train.iloc[:,0:5]
y = df_train.duration_label
vectorizer = CountVectorizer(stop_words = 'english')
vectorizer.fit(X)
X = vectorizer.transform(X)
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.8, random_state = 0)
引发了这个错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-29-37ab36fb46be> in <module>
----> 1 X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.8, random_state = 0)
/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_split.py in train_test_split(*arrays, **options)
2125 raise TypeError("Invalid parameters passed: %s" % str(options))
2126
-> 2127 arrays = indexable(*arrays)
2128
2129 n_samples = _num_samples(arrays[0])
/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py in indexable(*iterables)
290 """
291 result = [_make_indexable(X) for X in iterables]
--> 292 check_consistent_length(*result)
293 return result
294
/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
253 uniques = np.unique(lengths)
254 if len(uniques) > 1:
--> 255 raise ValueError("Found input variables with inconsistent numbers of"
256 " samples: %r" % [int(l) for l in lengths])
257
ValueError: Found input variables with inconsistent numbers of samples: [5, 40000]
难道我根本不应该使用 CountVector 吗?
【问题讨论】:
标签: python pandas dataframe machine-learning scikit-learn