2017-12-10 26 views
0

私はNLTKで新しく、レビューのための分類子の作成に問題があります。 enter image description here  CountVectorizer変換後の予期しない疎行列

私は、入力として渡されたデータは、形状(10000,1)であったとき、変換されたデータの形状は1 * 1スパース行列であるかを理解することができません 私は、元のレビューデータを処理しています少し。ストップワードの削除、句読点のステミングと削除など。

私はどこが間違っているのかについて助けが必要であり、問​​題を見つけるためにさらに詳細が必要な場合は教えてください。

+0

'X_train1'から数行を表示してください。 –

+0

私は質問を編集し、X_train1 @andrew_reeceのサンプルを追加しました – Chhitij

+0

'X_train1'は列' Description'を持つPandasデータフレームのようです。あれは正しいですか? –

答えて

0

X_train1は実際にはスクリーンショットのフォーマットに基づいて、パンダのデータフレームです。問題は、Descriptionが単語リスト(おそらく長さが等しくない)の列であることです。このような何か:

X = np.array([['alpha','beta'],['theta','theta','gamma'],['delta','delta']]) 
X_train1 = pd.DataFrame(X, columns=["Description"]) 

X_train1 
      Description 
0   [alpha, beta] 
1 [theta, theta, gamma] 
2   [delta, delta] 

X_train1.shape # (3,1) 

ですから、(形状(nrow, 1)付き)単語のリストの10,000行を持っています。
CountVectorizersklearnクラスを使用していると仮定します)は、一連のドキュメントを取ります。 CountVectorizer

documentationからトークンの行列にテキスト文書のコレクションを変換し、

具体的

をカウントfit()に引数の定義を考えてみます。

raw_documentsを:str、unicode、またはファイルオブジェクトを生成するiterable。

X_train1を試してみると、予想される入力が得られません。文字列のリストオブジェクトを含む列を含むデータフレームを渡しています。あなたはそれを行う奇妙な出力を期待する必要があります。

X_train1の各行は、文書を表すと仮定すると、次にCountVectorizerに渡し、各行の単語リストに参加してみてください:

X = X_train1.Description.apply(lambda row: ' '.join(row)) 
ctvec = CountVectorizer() 
ctvec.fit_transform(X) # combine fit(X) and transform(X) 

出力:

<3x5 sparse matrix of type '<class 'numpy.int64'>' 
    with 5 stored elements in Compressed Sparse Row format> 

この出力は、に沿って複数あります意図された入力。

関連する問題