Как вернуть исходный ярлык в текстовой классификации с XGBoost? - PullRequest
0 голосов
/ 08 января 2020

Мне известен вопрос Как получить исходное значение для двоичного кодирования с использованием пакета category_encoder , но ответа нет, поэтому мы здесь.

У меня есть два процесса, которые выполняют классификацию текста на введенные пользователем комментарии. Процесс один создает модель. Процесс два делает прогнозы на новые данные. Исходный код приведен ниже.

Мне кажется, моя проблема в том, чтобы понять, где хранятся оригинальные ярлыки. Я бы предположил в файле joblib, но я могу ошибаться. Когда я делаю NewComments.head(), я получаю номера вместо текста. Я предполагаю, что эти цифры являются кодировкой. Я попытался запустить inverse_encoding во втором процессе, но получил сообщение о ярлыках, которых раньше не видел.

Как мне вернуть мои исходные ярлыки?

#Create Model
#Data prep code goes before here
train_x, valid_x, train_y, valid_y = model_selection.train_test_split(trainDF['UserComments'], trainDF['Label'])

encoder = preprocessing.LabelEncoder()
train_y = encoder.fit_transform(train_y)
valid_y = encoder.fit_transform(valid_y)

count_vect = CountVectorizer(analyzer='word', token_pattern=r'\w{1,}')
count_vect.fit(trainDF['Label'])

xtrain_count =  count_vect.transform(train_x)
xvalid_count =  count_vect.transform(valid_x)

tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
tfidf_vect.fit(trainDF['Label'])
xtrain_tfidf =  tfidf_vect.transform(train_x)
xvalid_tfidf =  tfidf_vect.transform(valid_x)

def create_model(classifier, feature_vector_train, label, feature_vector_valid, is_neural_net=False):
    # fit the training dataset on the classifier
    return classifier.fit(feature_vector_train, label)

#create the model
model = create_model(xgboost.XGBClassifier(), xtrain_tfidf.tocsc(), train_y, xvalid_tfidf.tocsc())
filename = 'LabelPrediction.joblib'
joblib.dump(model, filename)

########################################################
#Second process
#Create predictions on new data


#Data cleansing goes before here
# word level tf-idf
tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
tfidf_vect.fit_transform(NewComments['UserComments'])

model = jl.load('LabelPrediction.joblib')
NewComments['NewLabel'] = model.predict(tfidf_comments.tocsc())

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