File size: 1,832 Bytes
8031b06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import click
import joblib
import numpy as np
import pandas as pd


@click.command()
@click.argument("input_data_path", type=click.Path(exists=True))
@click.argument("input_model_path", type=click.Path(exists=True))
@click.argument("output_predictions_path", type=click.Path())
def make_predictions(
    input_data_path: str, input_model_path: str, output_predictions_path: str
) -> None:
    """
    Предсказывает значения меток в входных данных, используя подаваемую на вход модель.
    Предсказания записываются в csv-файл с тремя столбцами. В первые два столбца записываются вероятности
    отнесения объекта к классу 0 и 1 соответственно, в третий - предсказываемая метка объекта на основе
    выбранного порога вероятности.
    :param input_data_path: путь к данным
    :param input_model_path: путь к обученной модели
    :param output_predictions_path: путь к файлу с получаемыми предсказаниями
    """
    df = pd.read_csv(input_data_path)
    X = df.drop(["BAD_CLIENT"], axis=1, errors="ignore")

    model = joblib.load(input_model_path)
    probas = model.predict_proba(X)
    labels = (probas[:, 1] > 0.01).astype(int)
    predictions = pd.DataFrame(
        data=np.column_stack([probas, labels]), columns=["proba_0", "proba_1", "label"]
    )

    predictions.to_csv(output_predictions_path, index=False)


if __name__ == "__main__":
    make_predictions()

"""
python -m src.models.make_predictions processed/processed/test_dataset.csv models/final_model.pkl reports/predictions.csv
"""