как использовать обученную модель для тестирования нового предложения на Python (sklearn)

У меня есть код для обучения модели для multi class text classification, и он работает, но я не могу использовать эту модель. это мой код для обучения

def training(df):
X = df.Text
y = df.Tags
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
lr = Pipeline([('vect', CountVectorizer()),
               ('tfidf', TfidfTransformer()),
               ('clf', LogisticRegression()),
               ])

lr.fit(X_train, y_train)
y_pred1 = lr.predict(X_test)
print(f"Accuracy is : {accuracy_score(y_pred1, y_test)}")
print(lr.predict('ماست کم چرب 900 گرمی رامک'))

когда я запустил код, получил этот результат Accuracy is : 0.9957983193277311 и эту ошибку

  • Отслеживание (последний вызов последним): файл E: \ Python \ NLP Project \ Beta_00 \ Level0 \ handleClassification.py, строка 100, в обучении (df)

    Файл E: \ Python \ NLP Project \ Beta_00 \ Level0 \ handleClassification.py, строка 85, в обучающей печати (lr.predict ('ماست کم چرب 900 رمی رامک'))

    Файл E: \ Python \ NLP Project \ Beta_00 \ venv \ lib \ site-packages \ sklearn \ utils \ metaestimators.py строка 120, in out = lambda * args, ** kwargs: self.fn (obj, * args, * * kwargs)

    Файл E: \ Python \ NLP Project \ Beta_00 \ venv \ lib \ site-packages \ sklearn \ pipeline.py, строка 418, в прогнозе Xt = transform.transform (Xt)

    Файл E: \ Python \ NLP Project \ Beta_00 \ venv \ lib \ site-
    packages \ sklearn \ feature_extraction \ text.py, строка 1248, при преобразовании вызывает ValueError (ValueError: ожидается итерация по необработанным текстовым документам, строковый объект полученный.


person miladjurablu    schedule 06.06.2021    source источник
comment
Точность должна быть accuracy_score(y_test, y_pred1)   -  person Black Raven    schedule 06.06.2021
comment
@BlackRaven Я не понимаю! что ты имел в виду?   -  person miladjurablu    schedule 06.06.2021
comment
@BlackRaven У меня проблема с print(lr.predict('ماست کم چرب 900 گرمی رامک')) этим   -  person miladjurablu    schedule 06.06.2021
comment
print(f"Accuracy is : {accuracy_score(y_pred1, y_test)}") должно быть (y_test, y_pred1)   -  person Black Raven    schedule 06.06.2021
comment
@BlackRaven Ohhhhhh Я вижу это, но это не моя проблема   -  person miladjurablu    schedule 06.06.2021
comment
Как насчет lr.predict(['ماست کم چرب 900 گرمی رامک'])?   -  person Black Raven    schedule 06.06.2021
comment
@BlackRaven да, я получил результат, но ошибка ValueError: Iterable over raw text documents expected, string object received. все еще появляется   -  person miladjurablu    schedule 06.06.2021
comment
Вход для lr.predict() должен быть массивом строк   -  person Black Raven    schedule 06.06.2021
comment
@BlackRaven, привет, я исправил это с твоей помощью   -  person miladjurablu    schedule 06.06.2021


Ответы (1)


Строки ниже нуждаются в исправлении:

lr.fit(X_train, y_train)
y_pred1 = lr.predict(X_test)
print(f"Accuracy is : {accuracy_score(y_test, y_pred1)}")   #<--- here
print(lr.predict(['ماست کم چرب 900 گرمی رامک']))   #<--- here

Строка lr.predict(input) должна принимать вход типа «массив».

person Black Raven    schedule 06.06.2021