def test_fillna_numerical(): df_test = InsolverDataFrame(pd.DataFrame(data={'col1': [1, 2, np.nan]})) df_transformed = InsolverTransform(df_test, [ AutoFillNATransforms(), ]) df_transformed.ins_transform() assert df_transformed['col1'][2] == 1.5
def predict(): # Request logging current_datatime = strftime('[%Y-%b-%d %H:%M:%S]') ip_address = request.headers.get("X-Forwarded-For", request.remote_addr) logger.info(f'{current_datatime} request from {ip_address}: {request.json}') start_prediction = time() json_input = request.json json_str = json.dumps(json_input['df']) df = pd.read_json(json_str) InsDataFrame = InsolverDataFrame(df) # Apply transformations InsTransforms = InsolverTransform(InsDataFrame, tranforms) InsTransforms.ins_transform() # Prediction predicted = model.predict(InsTransforms) result = { 'predicted': predicted.tolist() } # Response logging end_prediction = time() duration = round(end_prediction - start_prediction, 6) current_datatime = strftime('[%Y-%b-%d %H:%M:%S]') logger.info(f'{current_datatime} predicted for {duration} msec: {result}\n') return jsonify(result)
def test_fillna_categorical(): df_test = InsolverDataFrame( pd.DataFrame(data={'col1': ['A', 'B', 'C', 'A', None]})) df_transformed = InsolverTransform(df_test, [ AutoFillNATransforms(), ]) df_transformed.ins_transform() assert df_transformed['col1'][4] == 'A'
def test_fillna_categorical_all_na(): df_test = InsolverDataFrame( pd.DataFrame(data={'col1': [None, None, None]})) df_transformed = InsolverTransform(df_test, [ AutoFillNATransforms(), ]) df_transformed.ins_transform() assert df_transformed['col1'][0] == 1 assert df_transformed['col1'][1] == 1 assert df_transformed['col1'][2] == 1
def test_EncoderTransforms(): df_test = InsolverDataFrame( pd.DataFrame(data={'col1': ['A', 'B', 'C', 'A']})) df_transformed = InsolverTransform(df_test, [ EncoderTransforms(['col1']), ]) df_transformed.ins_transform() assert df_transformed['col1'][0] == 0 assert df_transformed['col1'][1] == 1 assert df_transformed['col1'][2] == 2 assert df_transformed['col1'][3] == 0
def test_OneHotEncoderTransforms(): df_test = InsolverDataFrame( pd.DataFrame(data={'col1': ['A', 'B', 'C', 'A']})) df_transformed = InsolverTransform(df_test, [ OneHotEncoderTransforms(['col1']), ]) df_transformed.ins_transform() assert 'col1_A' in df_transformed.columns assert 'col1_B' in df_transformed.columns assert 'col1_C' in df_transformed.columns assert df_transformed['col1_A'][0] == 1 assert df_transformed['col1_B'][1] == 1 assert df_transformed['col1_C'][2] == 1 assert df_transformed['col1_A'][3] == 1
async def predict(data: Data): # Extract data in correct order data_dict = data.dict() df = pd.DataFrame(data_dict['df']) InsDataFrame = InsolverDataFrame(df) # Apply transformations InsTransforms = InsolverTransform(InsDataFrame, tranforms) InsTransforms.ins_transform() # Prediction predicted = model.predict(InsTransforms) result = {'predicted': predicted.tolist()} return result
df.dropna(how='all', axis=1, inplace=True) df = df[df.ClaimAmount > 0] InsDataFrame = InsolverDataFrame(df) InsTransforms = InsolverTransform(InsDataFrame, [ TransformAge('DrivAge', 18, 75), TransformExp('LicAge', 57), TransformMapValues('Gender', { 'Male': 0, 'Female': 1 }), TransformMapValues('MariStat', { 'Other': 0, 'Alone': 1 }), TransformAgeGender('DrivAge', 'Gender', 'Age_m', 'Age_f', age_default=18, gender_male=0, gender_female=1), TransformPolynomizer('Age_m'), TransformPolynomizer('Age_f'), ]) InsTransforms.ins_transform() InsTransforms.save('transforms.pkl') train, valid, test = InsTransforms.split_frame(val_size=0.15,
import pickle import pandas as pd from insolver import InsolverDataFrame from insolver.transforms import InsolverTransform, init_transforms from insolver.wrappers import InsolverGLMWrapper # load data df = pd.read_json('request_example.json') InsDataFrame = InsolverDataFrame(df) # load and init transformations with open('transforms.pkl', 'rb') as file: transforms = pickle.load(file) transforms = init_transforms(transforms, inference=True) # Apply transformations InsTransforms = InsolverTransform(InsDataFrame, transforms) InsTransforms.ins_transform() # Load saved model new_iglm = InsolverGLMWrapper(backend='h2o', load_path='./insolver_glm_h2o_1605026853331') predict_glm = new_iglm.predict(df) print(predict_glm)