sklearn: передача обучения из одного DataFrame для прогнозирования другого DataFrame с помощью GridsearchCV - PullRequest
1 голос
/ 27 мая 2020

У меня есть два pd.Dataframe. Один огромный, другой маленький.

Оба фрейма данных имеют два столбца, один из которых содержит текст, а другой - метку 0 или 1. Имена столбцов:

X,Y для огромного фрейма данных

и text, label для маленького.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import metrics
from sklearn.pipeline import Pipeline    
pipeline = Pipeline([
        ('vect', TfidfVectorizer(max_features =  10000, min_df = 25)), 
        ('clf',  RandomForestClassifier(n_estimators = 2000, random_state=0, verbose = True, n_jobs=-1))
    ])
    parameters = {'clf__max_depth': [200, None], 'vect__max_df': [500, 5000]} 
    clf = GridSearchCV(pipeline, parameters, scoring='average_precision').fit(X, Y) 
    predicted_label = clf.predict(text)

Результат для

metrics.classification_report(label, predicted_label, target_names=["0","1"])

выглядит так:

Metrics:                precision    recall  f1-score   support

           0       0.86      1.00      0.92      3000
           1       0.00      0.00      0.00       500

    accuracy                           0.86      3500
   macro avg       0.43      0.50      0.46      3500
weighted avg       0.74      0.86      0.79      3500

Мои вопросы:

  • Какие изменения я могу внести, чтобы в подходе передачи-обучения он не предсказывал каждый текст должен быть 0?

  • Каковы возможные причины, по которым предполагается, что все тексты равны 0?

  • Почему GridsearchCV (scoring = '') Параметр, кажется, не влияет на обучение передачи?

    Я хотел бы продолжать использовать RandomForestClassifier, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...