У меня есть набор данных, как показано ниже (здесь показано только 6 строк).У меня около 700 строк, и я хочу классифицировать их по категориям, таким как 9887, 8413 и т. Д. Проблема в том, что модель также классифицирует абсолютно не связанные данные, такие как «Рождественская елка», «Новый год», «Nike - хороший спорт».бренд ", в одну из указанных категорий 9887 или 8413 и т. д. Я хочу, чтобы ввод был абсолютно не связан или пуст" ", он должен классифицировать их в категорию 0000.
personInfo personID
alicia is from unitedStates 9887
alicia likes to do Yoga 9887
cooking is one of the hobby of alicia 9887
sam is from Brazil 8413
sam father is a doctor 8413
In free time, sam prefers hiking 8413
Мой код:
X_train, X_test, y_train, y_test = train_test_split(df['personInfo'], df['personId'], random_state = 0)
count_vect = CountVectorizer().fit(X_train)
X_train_counts = count_vect.transform(X_train)
tfidf_transformer = TfidfTransformer().fit(X_train_counts)
X_train_tfidf = tfidf_transformer.transform(X_train_counts)
classificationModel = LinearSVC().fit(X_train_tfidf, y_train)
filename = 'finalized_model.sav'
pickle.dump(classificationModel, open(filename, 'wb'))
#data_to_be_predicted="alicia has a sister in texas"
filename = 'finalized_model.sav'
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.predict(count_vect.transform([data_to_be_predicted]))
print(result)
Вот один вход-выход:
input: "alicia has a sister in texas"
output: 9887
Теперь для приведенного ниже ввода я хочу, чтобы модель классифицировала как 0000, потому что она не связана, но классифицирует ее как 9887 или8413 или какой-либо другой данной категории
input: "christmas tree"
expected output: 0000
input: " "
expected output: 0000