gpt4 book ai didi

python-2.7 - 类型错误 : Expected sequence or array-like, 得到了估算器

转载 作者:行者123 更新时间:2023-12-03 13:15:40 26 4
gpt4 key购买 nike

我正在从事一个对产品有用户评论的项目。除了我手动提取的一些其他特征之外,我正在使用 TfidfVectorizer 从我的数据集中提取特征。

df = pd.read_csv('reviews.csv', header=0)

FEATURES = ['feature1', 'feature2']
reviews = df['review']
reviews = reviews.values.flatten()

vectorizer = TfidfVectorizer(min_df=1, decode_error='ignore', ngram_range=(1, 3), stop_words='english', max_features=45)

X = vectorizer.fit_transform(reviews)
idf = vectorizer.idf_
features = vectorizer.get_feature_names()
FEATURES += features
inverse = vectorizer.inverse_transform(X)

for i, row in df.iterrows():
for f in features:
df.set_value(i, f, False)
for inv in inverse[i]:
df.set_value(i, inv, True)

train_df, test_df = train_test_split(df, test_size = 0.2, random_state=700)
上面的代码工作正常。但是当我更改 max_features 时从 45 到更高,我在 tran_test_split 上收到错误消息线。
回溯如下:
Traceback (most recent call last):
File "analysis.py", line 120, in <module>
train_df, test_df = train_test_split(df, test_size = 0.2, random_state=700)
File "/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/cross_validation.py", line 1906, in train_test_split
arrays = indexable(*arrays)
File "/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", line 201, in indexable
check_consistent_length(*result)
File "/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", line 173, in check_consistent_length
uniques = np.unique([_num_samples(X) for X in arrays if X is not None])
File "/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", line 112, in _num_samples
'estimator %s' % x)
TypeError: Expected sequence or array-like, got estimator
我不确定当我更改增加 max_features 时到底发生了什么变化尺寸。
如果您需要更多数据或我遗漏了什么,请告诉我

最佳答案

我知道这很旧,但我遇到了同样的问题,虽然@shahins 的答案有效,但我想要一些可以保留数据帧对象的东西,这样我就可以在训练/测试拆分中建立索引。

解决方案:

将数据框列重命名为其他内容(任何内容):

df = df.rename(columns = {'fit': 'fit_feature'})

为什么有效:

实际上,问题并不是功能的数量,而是导致问题的特定功能。我猜你把“适合”这个词作为你的文本特征之一(它没有出现在较低的 max_features 阈值下)。

查看 sklearn 源代码,它通过测试来检查您的任何对象是否具有“适合”属性,以确保您没有通过 sklearn 估计器。代码正在检查 fit sklearn 估计器的方法,但当您有 fit 时也会引发异常数据框的列(请记住 df.fitdf['fit'] 都选择“适合”列)。

关于python-2.7 - 类型错误 : Expected sequence or array-like, 得到了估算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39745807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com