でトレーニングデータとscikit学習グリッド検索を行うことができ、私はこのようになりますパイプラインを使用して、テキスト分類問題に取り組んでいます:は、どのように私はイテレータ
self.full_classifier = Pipeline([
('vectorize', CountVectorizer()),
('tf-idf', TfidfTransformer()),
('classifier', SVC(kernel='linear', class_weight='balanced'))
])
完全なコーパスが大きすぎますメモリに収めるには十分ですが、ベクトル化ステップの後ではメモリの問題はありません。私は正常にself._all_dataは(self.datasetだけの文書IDのとターゲットを含みながら)学習事例ごとに文書を生成するイテレータである
self.full_classifier.fit(
self._all_data (max_samples=train_data_length),
self.dataset.head(train_data_length)['target'].values
)
を使用して分類器を収めることができます。ここで、max_samplesはオプションです。トレーニング/テストデータで分割を行うために使用しています。私は今、そのために私はこのコードを使用しています、パラメータを最適化するためにgridsearchを使用したい:
parameters = {
'vectorize__stop_words': (None, 'english'),
'tfidf__use_idf': (True, False),
'classifier__class_weight': (None, 'balanced')
}
gridsearch_classifier = GridSearchCV(self.full_classifier, parameters, n_jobs=-1)
gridsearch_classifier.fit(self._all_data(), self.dataset['target'].values)
私の問題は、これが次のエラーが発生していることである:gridsearch_classifierでトレースバックポインティングと
TypeError: Expected sequence or array-like, got <type 'generator'>
。 (そしてscikitのコードに、_num_samples(x)で発生したエラー)。入力としてジェネレータに合わせることが可能なので、グリッド検索でこれを行う方法があるかどうか、私は現在不足しています。 何か助けていただければ幸いです!
ありがとうございます。私は、データベースにヒットする__getitem__を実装して、リストを偽装する方法を検討します – Leo