짧은 문서 세트에 분류자를 훈련시키고 이진 분류 작업에 적합한 f1 및 정확도 점수를 얻은 후에 절취했습니다.데이터를 라벨링하기 위해 countVectorizer.fit_transform()과 함께 pickled 분류기를 사용하는 방법
훈련 동안, I는 countVectorizer
CV sciki이 배우고 이용하여 기능의 수를 감소 :
cv = CountVectorizer(min_df=1, ngram_range=(1, 3), max_features = 15000)
을하고 변환 열차 테스트 세트를 획득하기 위해 상기 fit_transform()
및 transform()
방법을 사용했을
transformed_feat_train = numpy.zeros((0,0,))
transformed_feat_test = numpy.zeros((0,0,))
transformed_feat_train = cv.fit_transform(trainingTextFeat).toarray()
transformed_feat_test = cv.transform(testingTextFeat).toarray()
을
분류기를 테스트하고 테스트 할 때 모두 잘되었습니다. 그러나 fit_transform()
및 transform()
을 사용하여 눈에 보이지 않은 레이블이없는 데이터의 레이블을 예측하기 위해 피클 레이션 된 분류 된 버전을 사용하는 방법을 잘 모르겠습니다.
내가 일을 정확히 레이블이없는 데이터를 같은 방식으로 기능을 추출하고있는 동안 교육/분류 테스트 :
이## load the pickled classifier for labeling
pickledClassifier = joblib.load(pickledClassifierFile)
## transform data
cv = CountVectorizer(min_df=1, ngram_range=(1, 3), max_features = 15000)
cv.fit_transform(NOT_SURE)
transformed_Feat_unlabeled = numpy.zeros((0,0,))
transformed_Feat_unlabeled = cv.transform(unlabeled_text_feat).toarray()
## predict label on unseen, unlabeled data
l_predLabel = pickledClassifier.predict(transformed_feat_unlabeled)
오류 메시지가 :
Traceback (most recent call last):
File "../clf.py", line 615, in <module>
if __name__=="__main__": main()
File "../clf.py", line 579, in main
cv.fit_transform(pickledClassifierFile)
File "../sklearn/feature_extraction/text.py", line 780, in fit_transform
vocabulary, X = self._count_vocab(raw_documents, self.fixed_vocabulary)
File "../sklearn/feature_extraction/text.py", line 727, in _count_vocab
raise ValueError("empty vocabulary; perhaps the documents only"
ValueError: empty vocabulary; perhaps the documents only contain stop words
감사합니다, Olivier (@ogrisel). 귀하의 솔루션은 깔끔하게 보입니다. 나는 그것을 시도 할 것이다. 그러나 나는 순수한 접근 방식을 사용하여 해결책을 찾았습니다 : 1) 훈련 데이터와 별도로 트레이닝 기능, 트레이닝 레이블 및 분류기를 절편 처리했습니다. 2) 'pickled training- 4) "pickeled-classifier"를 변형 된 training-features 및 'pickled labels'에 맞추고, 5) 변형 된 unlabeledData- 풍모. –