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 += featuresinverse = 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(最近一次调用最后一次):
文件“analysis.py”,第120行,< module>
train_df,random_state = 700)
在train_test_split中输入文件“/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/cross_valIDation.py”,第1906行
arrays = indexable(* arrays)
文件“/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/valIDation.py”,第201行,可转位
check_consistent_length(*结果)
在check_consistent_length中输入文件“/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/valIDation.py”,第173行
uniques = np.unique(如果X不是None,则数组中X为[_ num_samples(X)])
在_num_samples中输入文件“/Users/user/Tools/anaconda/lib/python2.7/site-packages/sklearn/utils/valIDation.py”,第112行
‘estimator%s’%x)
TypeError:预期序列或类似数组,得到估计量
当我改变增加max_features大小时,我不确定究竟发生了什么变化.
如果您需要更多数据或者我错过了什么,请告诉我
解决方法 我知道这是旧的,但我有同样的问题,虽然@shahins的答案有效,但我想要保留数据帧对象的东西,以便我可以在train / test splits中进行索引.解:
将数据框列重命名为适合的东西(其他):
df = df.rename(columns = {'fit': 'fit_feature'})
为什么会这样:
实际上并不是问题的特征数量,特别是导致问题的一个特征.我猜你正在将“fit”这个词作为你的一个文本特征(并且它没有显示出较低的max_features阈值).
查看sklearn源代码,它会检查以确保您没有通过测试查看任何对象是否具有“适合”属性来传递sklearn估算器.代码正在检查sklearn估计器的拟合方法,但是当你有一个数据框的拟合列时也会引发异常(记住df.fit和df [‘fit’]都选择“fit”列).
总结以上是内存溢出为你收集整理的python-2.7 – TypeError:预期序列或类似数组,得到估算器全部内容,希望文章能够帮你解决python-2.7 – TypeError:预期序列或类似数组,得到估算器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)