модель обучения машинного обучения, чтобы не классифицировать неправильные входные данные или пустые входные данные - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть набор данных, как показано ниже (здесь показано только 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
...