Как использовать вывод из сохраненной прогностической модели в пользовательской функции в Python - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть датафрейм, который состоит из текста.Столбец 1 - это описание, а столбец 2 - это категория / класс.

Я предварительно обработан с использованием Vectorizer и разложен на множители для извлечения признаков, а также преобразовал их в целые числа / числа.Я запустил многоклассовый классификатор случайных лесов.

Теперь мне нужно создать поток диалога, в котором на основе прогнозируемого класса у меня есть ответ, который необходимо отобразить.

Исходный кадр данных:

Description                 Actual Category
Need to rejoin the domain   Network
mail backup                 Software
laptop crashed              Hardware

После счетчика и коэффициента по столбцам

Код:

 ############### Feature extraction ##############
 countvec = CountVectorizer()
 counts = countvec.fit_transform(read_data['Description'])
 df = pd.DataFrame(counts.toarray())
 df.columns = countvec.get_feature_names()
 print(df)

 ########## Join with original data ##############
 df = read_data.join(df)


 ########## Creating the dependent variable class for "Category" variable 
 factor = pd.factorize(df['Category'])
 df.Category = factor[0]
 definitions = factor[1]
 print(df.Category.head())
 print(definitions)

 ########## Creating the dependent variable class for "Description" variable 
 factor = pd.factorize(df['Description'])
 df.Description = factor[0]
 definitions_1 = factor[1]
 print(df.Description.head())
 print(definitions_1)

 Result

 Description    Actual Category  Need   Mail   laptop
 0              0                1      0      0        
 1              0                0      1      0        
 1              0                0      0      1        
 2              1                1      0      0

Классификатор Randomeforest

 ############# Random forest classification model #########################
 classifier = RandomForestClassifier(n_estimators = 10, criterion = 
 'entropy', random_state = 42)
 classifier.fit(X_train, y_train)

 ######### Predicting the Test set results ##############
 y_pred = classifier.predict(X_test)

 #####Reverse factorize (converting y_pred from 0s,1s and 2s to original 
 class for "Category" ###############
 reversefactor = dict(zip(range(3),definitions))
 y_test = np.vectorize(reversefactor.get)(y_test)
 y_pred = np.vectorize(reversefactor.get)(y_pred)

 #####Reverse factorize (converting y_pred from 0s,1s and 2s to original 
 class for "Description" ###############
 reversefactor = dict(zip(range(53),definitions_1))
 X_test = np.vectorize(reversefactor.get)(X_test)

Результат:

 Description                    Actual Category    Predicted Category
 Need to rejoin the domain      Network            Network            
 mail backup                    Software           Software
 laptop crashed                 Hardware           Hardware 

Теперь мне нужен поток разговоров, в котором:

Если прогнозируемый класс - Сеть, я должен отображать определенный ответ, если его аппаратное обеспечение, мне нужно отображать некоторый ответ и т. Д.

Код:

 def get_status(model_pkl):
    if df_Final['Predicted Category'] == 'Software':
       return 'Its a Software issue, let me raise a ticket for you'
    elif df_Final['Predicted Category'] == 'Hardware':
       return 'Seems like a Hardware issue, let me raise a ticket for you'
    elif df_Final['Predicted Category'] == 'Network':
       return 'Seems like a Network issue, let me raise a ticket for you'
    else:
       return 'Sorry Im unable to get you'

Желаемый вывод:

> Input a new sentence say : 
>  1. "Wifi not working",
>  2. predict the class say Network 
>  3. And display the response which is 'Seems like a Hardware issue, let me raise a ticket for you'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...