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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Twitter

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

1回答

246閲覧

Pythonにおける機械学習プログラムにおけるエラーについて

lalalabit

総合スコア7

Twitter

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2017/12/13 05:53

編集2017/12/14 02:53

###前提・実現したいこと
当方python初心者です。pythonを用いてTwitterのプロフィール文から2クラス分類をする識別機を作成したいと考えています。現在教師データとラベルをライブラリに引き渡して機械学習をさせようとしている段階なのですが、エラーが発生しており困っています。詳しい方どうかお力添えお願い致します。

###発生している問題・エラーメッセージ
ValueError: Found input variables with inconsistent numbers of samples: [12241,600]

###該当のソースコード

#TwitterIDからプロフィール文を取得、形態素解析 for num in range(2): if num == 1: sheet = sheet_2 for row in range(sheet.nrows): val = sheet.cell(row,col).value i = i+1 print (val) params = { "screen_name": val } responce = oath.get(url,params = params) tweet = json.loads(responce.text) user_description = tweet['description'] print("users_desc:",user_description) tokens = l.tokenize(user_description) #形態素解析及び名詞抽出 for token in tokens: partOfSpeech = token.part_of_speech.split(',')[0] if partOfSpeech == u'名詞': each_words.append(token.surface) words.append(each_words) each_words = [] #ラベルを記述したリストを作成 if num == 1: label.append(0) else: label.append(1) #名詞群をリスト化 for row in range(len(words)): for j in range(len(words[row])): print(words[row][j]) list.append(words[row][j]) #countvectorに変換 count_vectorizer = CountVectorizer() feature_vectors = count_vectorizer.fit_transform(list) print("word数:" + str(len(feature_vectors.toarray()[0]))) vocabrary = count_vectorizer.get_feature_names() print (count_vectorizer.get_feature_names) print(feature_vectors.toarray()) clf.fit(feature_vectors.toarray(),label)

本質に関わらない部分は除外したコードです

###試したこと
そもそもネットで拾い読みしたものを試しているようなものなのでどう対応したらいいのか分からないというのが正直なところです。
ちなみに print(feature_vectors.toarray()) の部分では
[[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]]  
のように各単語の出現頻度を表す多次元配列が見て取れます。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

clf.fit(feature_vectors.toarray(),label)でエラーが起きていますか?

print(feature_vectors.toarray().shape)

print(len(label))
の出力はどのようになっていますか?
数が合わないとエラーが出ています。

投稿2017/12/13 08:04

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lalalabit

2017/12/13 08:31

返信ありがとうございます print(feature_vectors.toarray().shape)は(12241,3790) print(len(label))は600と出ました 明らかに値が違いますよね・・・
mkgrei

2017/12/13 08:50

そうですね。 まず、問題と直結するところでは、 for token in tokens: partOfSpeech = token.part_of_speech.split(',')[0] if partOfSpeech == u'名詞': each_words.append(token.surface) words.append(each_words) each_words = [] のあたりに入れ子構造が正しくないと感じます。次の指摘にも通ずるところですが、どう正しくないのかはこの書き方からは知り得ません。 多分ラベルが600個あるのが正しくて、単語を分解する時にリストを1つ囲み忘れた結果、中身が展開されてしまったものと考えます。 次に、質問の形式についてですが、 コードをインデント付きで貼り付けないとPythonは基本的に読めないので、憶測がいろいろと入って問題が解決しにくくなってしまいます。 最後に、コーディング時の癖などについてですが、 listという名前の変数はPythonでは避けるべきです。 それに加えて、空のリストを最初のどこかに宣言している雰囲気を感じますが、バグの温床になるので避けたほうがいろいろとトラブルを回避できる気がします。
lalalabit

2017/12/14 02:47

返信遅くなり申し訳ありません。ご指摘ありがとうございます。 御推察の通り、ラベルの600個が正しいので文字列リストの中身がおかしいですね。 形態素解析の入れ子構造を見直してみようと思います。 おっしゃる通りです・・・。 すぐに修正致します。 了解しました。listは新たな変数名に変更します。 おっしゃる通り、プログラムの初期に空のリストを宣言しています。 バグの元になるとは知りませんでした。すぐに修正致します。 初心者の汚いコードに的確で親切なアドバイス本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問