質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Python 3.x

    5278questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Python 2.7

    1202questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Twitter

    616questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

  • Mecab

    142questions

    Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

gensimとMecabを使った機械学習のエラーがなかなか修正できません。助けてください。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 225

benkyouchuu

score 16

今、ツイッターAPIからとってきた情報を使って、機械学習の勉強をしています。

参考URL

こちらの記事を参考にさせて頂き行っております。

    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
と出力されました。

半日以上悩んでいます。誰か助けてください。よろしくお願いします。

該当箇所も載せておきます。

def mecab(db,estimator):
    dates =[]
    labels = []
    for age in range(1,7):
        docs = []
        descriptions = (data['description'].encode('utf-8') for data in db.profile.find({"age": age*10}))
        tagger = MeCab.Tagger('-Ochasen')
        counter = Counter()
        a = list(descriptions)
        print a[0],age
        for description in a:
            nodes = tagger.parseToNode(description)
            while nodes:
                if nodes.feature.split(',')[0] == '名詞':
                    word = nodes.surface.decode('utf-8')
                    counter[word] += 1
                nodes = nodes.next
            for word, cnt in counter.most_common():
                docs.append(json.dumps(word, ensure_ascii=False))
            labels.append(age)
            data_train = dictionary(docs,age,estimator)
            dates.append(data_train)
    data_train_s, data_test_s, label_train_s, label_test_s = train_test_split(dates, labels, test_size=0.5)
    print len(data_train_s)
    print len(label_train_s)
    estimator.fit(data_train_s, label_train_s)
    print(estimator.score(data_test_s, label_test_s))

def dictionary(docs,age,estimator):
    dictionary = gensim.corpora.Dictionary([docs])
    data_train=[]
    for doc in docs:
        tmp=dictionary.doc2bow([doc])
        dense = list(gensim.matutils.corpus2dense([tmp], num_terms=len(dictionary)).T[0])
        age_arr=[age]
        data_train.append(dense)
    return data_train
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

http://www.tcom242242.site/entry/2017/02/11/133630

data_train = dictionary(docs,age,estimator)
の次元は全要素で同じになっていますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/26 13:32

    ご連絡ありがとうございます。

    numpy.ndim(data_train)
    にしたら、全て同じ次元でした。

    他に考えられることはありますか?
    もしあったら教えて欲しいです。

    キャンセル

  • 2017/12/26 17:35

    data_train_s[0], data_train_s[1], ...がすべて同じ長さだということですか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    mecab-asyncによる文字化け

    mecab-asyncの例にあった var MeCab = new require('mecab-async') , mecab = new MeCab() ; var

  • 受付中

    MeCab.jarの生成について

    前提・実現したいこと MeCabを使って形態素解析をしようとしています。 発生している問題・エラーメッセージ javaバインディングの際にmakeするあたりが分からずに困

  • 解決済

    MeCabの出力結果にタグを追加したい

    実現したいこと 機械学習を用いた固有表現抽出を行うためのデータセットを作成しています。 タグ一切なしの状態では形態素解析の結果が多すぎるため、作業に一番多くつけるタグをつけ後ほど修

  • 解決済

    mecab 品詞 選択

    やりたいこと 選択したテキストファイル内の文章をmecabを用いて形態素解析し、 品詞(名詞、動詞など)を絞り込みたいと考えています。 現在、テキストファイルの文章を形態素解析する

  • 解決済

    複数のテキストファイルをLDAモデルに

    やりたいこと 複数のテキストファイルを入力とし、指定したトピック数に分類するプログラムを作成したいと考えています。 現在、一つのテキストファイルをLDAモデルに投入するプログラムは

  • 解決済

    指定した言葉を排除したい

    やりたいこと テキストファイルからトピックモデルを作成するプログラムを実装中なのですが、コーパスを生成するのに用いる辞書に指示語(あれ、ここ、そちら)や、それ自体に重要な意味を持た

  • 解決済

    テキストに番号を付けて管理したい

    困っていること 入力したファイルのトピックを抽出するための前段階として 指定したディレクトリ内の.txtファイルを用いてLDAモデルを作成するプログラムを実装したのですが、 現在の

  • 受付中

    1つのファイルのトピックを調べたい(LDAモデル)

    質問 LDAモデルに詳しい方に質問です。 また、以下に記すプログラムで 複数の小説のテキストファイルからLDAモデルを作成したとき、その中に含まれる 1つの文書のトピックを参照

同じタグがついた質問を見る

  • Python 3.x

    5278questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Python 2.7

    1202questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Twitter

    616questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

  • Mecab

    142questions

    Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。