今、ツイッターAPIからとってきた情報を使って、機械学習の勉強をしています。
こちらの記事を参考にさせて頂き行っております。
estimator.fit(data_train_s, label_train_s) File "/Library/Python/2.7/site-packages/sklearn/ensemble/forest.py", line 247, in fit X = check_array(X, accept_sparse="csc", dtype=DTYPE) File "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", line 433, in check_array array = np.array(array, dtype=dtype, order=order, copy=copy) ValueError: setting an array element with a sequence.
機械学習させるところでエラーが発生して前に進めません。
調べたら、配列の要素数が違うということで、確認したら
data_train_s:35
label_train_s:35
と出力されました。
半日以上悩んでいます。誰か助けてください。よろしくお願いします。
該当箇所も載せておきます。
python
1def mecab(db,estimator): 2 dates =[] 3 labels = [] 4 for age in range(1,7): 5 docs = [] 6 descriptions = (data['description'].encode('utf-8') for data in db.profile.find({"age": age*10})) 7 tagger = MeCab.Tagger('-Ochasen') 8 counter = Counter() 9 a = list(descriptions) 10 print a[0],age 11 for description in a: 12 nodes = tagger.parseToNode(description) 13 while nodes: 14 if nodes.feature.split(',')[0] == '名詞': 15 word = nodes.surface.decode('utf-8') 16 counter[word] += 1 17 nodes = nodes.next 18 for word, cnt in counter.most_common(): 19 docs.append(json.dumps(word, ensure_ascii=False)) 20 labels.append(age) 21 data_train = dictionary(docs,age,estimator) 22 dates.append(data_train) 23 data_train_s, data_test_s, label_train_s, label_test_s = train_test_split(dates, labels, test_size=0.5) 24 print len(data_train_s) 25 print len(label_train_s) 26 estimator.fit(data_train_s, label_train_s) 27 print(estimator.score(data_test_s, label_test_s)) 28 29def dictionary(docs,age,estimator): 30 dictionary = gensim.corpora.Dictionary([docs]) 31 data_train=[] 32 for doc in docs: 33 tmp=dictionary.doc2bow([doc]) 34 dense = list(gensim.matutils.corpus2dense([tmp], num_terms=len(dictionary)).T[0]) 35 age_arr=[age] 36 data_train.append(dense) 37 return data_train
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/26 04:32
2017/12/26 08:35