python-2.7 – TypeError:预期序列或类似数组,得到估算器
我正在开发一个对产品进行用户评论的项目.我使用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(最近一次调用最后一次): 当我改变增加max_features大小时,我不确定究竟发生了什么变化. 如果您需要更多数据或者我错过了什么,请告诉我 解决方法
我知道这是旧的,但我有同样的问题,虽然@shahins的答案有效,但我想要保留数据帧对象的东西,以便我可以在train / test splits中进行索引.
解: 将数据框列重命名为适合的东西(其他): df = df.rename(columns = {'fit': 'fit_feature'}) 为什么会这样: 实际上并不是问题的特征数量,特别是导致问题的一个特征.我猜你正在将“fit”这个词作为你的一个文本特征(并且它没有显示出较低的max_features阈值). 查看sklearn源代码,它会检查以确保您没有通过测试查看任何对象是否具有“适合”属性来传递sklearn估算器.代码正在检查sklearn估计器的拟合方法,但是当你有一个数据框的拟合列时也会引发异常(记住df.fit和df [‘fit’]都选择“fit”列). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |