Exemplo n.º 1
0
def main(path: str,
         use_input: bool,
         separator: str = ',',
         file_with_params: Optional[str] = "params.json",
         verbose: bool = False) -> None:
    gd = GradientDescent(verbose=verbose)
    if file_with_params is None:
        if verbose:
            print(
                "Файл с коэффициентами не был передан, поэтому все коэффициенты приравниваются к нулю"
            )
        print(
            f'Предсказанные целевые переменные машин для датасета по пути "{path or ""}": 0.0'
        )
        return
    dct: NormalizationParams = get_normalization_params_from_file(
        file_with_params)
    if use_input:
        while True:
            values: List[float] = []
            for column in dct.columns:
                try:
                    values.append(
                        float(
                            input(
                                f"Введите значение фичи '{column}' машины: ")))
                except ValueError as ex:
                    raise ValueError(
                        f"Было введено некорректное значение пробега машины ({ex})"
                    )
            result = gd.predict([values], file_with_params=file_with_params)[0]
            print(f"Предсказанная {dct.target_column} машины: {result}")
            not_to_continue = input(
                "Если хотите продолжить, нажмите `Enter`: ")
            if not_to_continue:
                break
    else:
        feature_arrays: List[List[float]] = read_dataset(path,
                                                         dct.columns,
                                                         separator=separator,
                                                         verbose=verbose)
        result = gd.predict(feature_arrays, file_with_params=file_with_params)
        print(
            f'Предсказанные {dct.target_column} машин для датасета по пути "{path}": {result}'
        )