Как проверить данные с помощью оригинальных данных, взятых у пользователя
Мне очень нужна ваша помощь, ребята. Я работаю над проектом и очень запутался. Использование 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)
Я обучил свою модель на числовых значениях и получил хорошие результаты.
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 формы и принимаю ввод, как я могу управлять всем этим.