コード例 #1
0
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
コード例 #2
0
ファイル: flask_app.py プロジェクト: MindSetLib/Insolver
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)
コード例 #3
0
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'
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
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
コード例 #7
0
ファイル: fastapi_app.py プロジェクト: MindSetLib/Insolver
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
コード例 #8
0
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,
コード例 #9
0
ファイル: inference.py プロジェクト: MindSetLib/Insolver
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)