Как проверить данные с помощью оригинальных данных, взятых у пользователя

Мне очень нужна ваша помощь, ребята. Я работаю над проектом и очень запутался. Использование Python, Jupyter Notebook

Хотим дать модели входные данные от пользователя, чтобы проверить, что модель будет предсказывать (давая им исходные значения[Текстовый формат + Числовой ]), но для обучения я изменил тестовые данные следующим образом:

Я обучил модель, предварительно обработав ее с помощью Удаление выбросов-> Factorize (Преобразование в числовые значения) -> Normalize

При факторизации я использовал этот код



def factorize_fun(df):
    obj_cols = df.loc[:, df.dtypes == object].columns
    for col in obj_cols:
        df[col] = pd.factorize(df[col])[0] +1

    return df

df6=factorize_fun(df6)

При факторизации данные выглядят как 1,2,3,4 для любых различных значений, найденных в столбце.

Knn Imputer для заполнения недостающих значений

import numpy as np
from sklearn.impute import KNNImputer
        
def knn_null(df):
    imputer = KNNImputer(n_neighbors=2)
    df1 = imputer.fit_transform(df)
    df2 = pd.DataFrame(df1, columns = df.columns)
    return df2

df6=knn_null(df6)

Изменил дату с этой enter image description here

это enter image description here

Я обучил свою модель на числовых значениях и получил хорошие результаты.

X_train, X_test, y_train, y_test = train_test_split(normalize(df6), y, test_size=0.2, random_state=0)

rfc=RandomForestClassifier()
rfc1=RandomForestClassifier( random_state=42, max_features='auto', n_estimators= 90, max_depth=8, criterion='gini' )
rfc1.fit(X_train, y_train)

y_pred=rfc1.predict(X_test)

print("Accuracy for Random Forest on CV data: ",accuracy_score(y_test,y_pred))
print(metrics.classification_report(y_test,y_pred))
df_cm = pd.DataFrame(confusion_matrix(y_test,y_pred), index = [i for i in ['Avg Marks','Good Marks','Bad Marks']],
                  columns = [i for i in ['Avg Marks','Good Marks','Bad Marks']])
plt.figure(figsize = (4,2))
sn.heatmap(df_cm, annot=True, fmt='g')

Мои результаты

Accuracy for Random Forest on CV data:  0.8503937007874016

                            precision    recall  f1-score   support

             Average Marks       0.82      0.86      0.84        59
 High Chances of Bad Marks       0.87      0.72      0.79        18
High Chances of Good Marks       0.88      0.88      0.88        50

                  accuracy                           0.85       127
                 macro avg       0.86      0.82      0.84       127
              weighted avg       0.85      0.85      0.85       127

Введенные пользователем данные

19  | Other |4.0    |5 Semester |2.60   |Full-time  |3  |Before Quiz, |Before Exam Day, |Saturday   |No |Less   |Sometimes  |Between |2 to 3 hours  |Good   |Always |Never  |Moderate   |Moderate |Moderately |important    |Always |Often

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

Также если я хочу сделать это на Django если я беру данные из html формы и принимаю ввод, как я могу управлять всем этим.

Вернуться на верх