scikit-learnのTfidfVectorizerによって与えられたスパース行列にTruncatedSVD.fit_transform()を適用しようとしています。
tsv = TruncatedSVD(n_components=10000,algorithm='randomized',n_iterations=5)
tfv = TfidfVectorizer(min_df=3,max_features=None,strip_accents='unicode',analyzer='word',token_pattern=r'\w{1,}',ngram_range=(1, 2), use_idf=1,smooth_idf=1,sublinear_tf=1)
tfv.fit(text)
text = tfv.transform(text)
tsv.fit(text)
Value error : array is too big
私が使用できる他のアプローチまたは次元削減は何ですか。
問題は次のとおりです。
tsv = TruncatedSVD(n_components=10000...
SVDには10000個のコンポーネントがあります。mxnデータ行列がある場合、SVDには次元がmxn_componentsおよびn_componentsxnの行列があり、データがスパースであっても、これらは密になります。それらの行列はおそらく大きすぎます。
私はあなたのコードをコピーしてKaggleハッシュタグデータ(これは私がこれから来ていると思うものです)で実行しました、そして300のコンポーネントで、pythonは最大1GBを使用していました。10000では、その約30倍を使用します。
ちなみに、ここで行っているのは潜在意味解析であり、これほど多くのコンポーネントの恩恵を受ける可能性は低いです。50〜300の範囲のどこかで、重要なすべてのものをキャプチャする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加