импортировать маринованный огурец
импортировать панды как pd
из datetime import datetime
из потокового импорта Thread
из flask import Flask, request, jsonify
import numpy as np # Предполагается, что это необходимо для кода
app = Flask(name)
Загрузите кодировщик и модель (при необходимости измените пути к файлам)
попробуйте:
Код: Выделить всё
with open(r'C:\Users\8017510pay\Downloads\lgb_fail.pkl', 'rb') as f:
encoder = pickle.load(f)
with open(r'C:\Users\8017510pay\Downloads\encoder_fail_dummy.pkl', 'rb') as f:
model = pickle.load(f)
Код: Выделить всё
print("Error: Could not find pickle files. Please check the file paths.")
exit(1)
def Predict():
Код: Выделить всё
data = {'input': ['22-08-1995','19-12-2022','Female','Graduated','Married',2,'700036','O9S','kerala','Kochi','APR-NOV','NORTH','Relationship Manager - Bancassurance','Yes','Onrole','other','SM','No','fresher','0-4',2,'Vishakapatnam - Signature Towers','1039153']}
if not isinstance(data, dict):
return jsonify({'error': 'Input data should be a JSON object'})
input_df = pd.DataFrame([data],columns=['Date of birth','Date of joining','Gender','Education_qualification','Marital status','number_of_children','Pin code','Joining Grade_x','state2','city','Joining_month','Zone','Joining designation','insurancce experience or not','Type of Employment','Reason for Leaving','last_designation','Q11','Previous Employer','experience_in_years_bucket','avg_tenure','emp_location','emp_reporting_manager_id'])
try:
# Ensure all required columns are present (if applicable)
# for col in required_columns:
# if col not in input_df.columns:
# return jsonify({'error': f'Missing required column: {col}'})
input_df['Date of birth'] = pd.to_datetime("Date of birth", errors='coerce')
input_df['Date of joining'] = pd.to_datetime("Date of joining", errors='coerce')
# Handle potential missing values in pin_mapping
if 'pin_mapping' not in globals():
print("Warning: 'pin_mapping' not found. Skipping related operations.")
else:
pin_mapping.drop(columns=['Current Pin code.1'], inplace=True)
pin_mapping['Current Pin code'] = pin_mapping['Current Pin code'].astype('str')
pin_mapping['Current Pin code'] = pin_mapping['Current Pin code'].str.split('.', expand=True)[0]
pin_mapping.rename(columns={'Current Pin code': 'Pin code'}, inplace=True)
pin_mapping['Pin code'] = pin_mapping['Pin code'].astype('str')
input_df['Pin code'] = input_df['Pin code'].astype('str')
data = input_df.merge(pin_mapping, on='Pin code', how='left')
input_df['joining_age'] = ((input_df['Date of joining']-input_df['Date of birth']).dt.days)/365
input_df['join_age_bucket'] = np.where(input_df['joining_age']25)&(input_df['joining_age']32)&(input_df['joining_age']39),">39",input_df['join_age_bucket'])
# Select only the required columns for encoding (if applicable)
# data = data[required_columns_two]
# Apply
x__enc=encoder_fail.transform(data)
x__enc['Gender']=x_enc['Gender'].map({'Male':0,'Female':1})
x__enc['Education_qualification']=x_enc['Education_qualification'].map({'Graduated':0,'Post-Graduated':1})
x__enc.drop(columns=['Date of birth','Date of joining','Pin code'],inplace=True)
data_info = {
'columns': x__enc.columns.tolist(),
'dtypes': x__enc.dtypes.astype(str).tolist(),
'data': x__enc.to_dict(orient='records')
}
print('Data after encoding:', data_info)
# Return the transformed data and its info as a JSON response
return jsonify(data_info)
Это информация, которую мы получаем. Вот данные.
Подробнее здесь: https://stackoverflow.com/questions/777 ... ame-to-csv