ОНТИ Большие Данные и Машинное Обучение 2 Этап задача 3 командная

Финиш 8.01.2021

Задача о пропавших подписях.

Петька и Василий Иванович летят летят самолете, и вдруг Василий Иванович, сидящий за штурвалом пилота, вскрикивает: «Петька, приборы!» Следует ответ: «Тридцать восемь». «Что тридцать восемь?» — «А что приборы?»

В самолете пропали все подписи к приборам, и наши герои не могут определить в облаках летят они в верх или вниз. У героев есть накопленный массив данных, пока был виден горизонт, массив данных представляет из себя значения приборных панелей и целевая переменная бинарная (1 или 0)- летит самолет вниз или вверх. Необходимо спрогнозировать вероятность того, что значение целевой переменной равно 1 (число от 0 до 1) для нового массива значений.

Массив показателей приборов

https://drive.google.com/file/d/17h5dVvTspX92SgVK6hVFe8uPZg0F-Qi_/view?usp=sharing

Массив значений

https://drive.google.com/file/d/1Nysa9JXfcUD0ubp296pud1Y9zxky4dYx/view?usp=sharing

Необходимо загрузить массив формата zip, где содержится файл submission.py на языке Python, в котором есть функция eval, принимающая на вход массив значений приборов (в томже формате, что файл с показателями) и выгружающая массив вероятностей. Возможно в массив выгрузить модель.

Пример решения.

Обучение

import math
import random
import numpy as np
import pandas as pd
import sklearn
from sklearn import datasets
from sklearn import model_selection
from sklearn import metrics
from sklearn import linear_model
import pickle
import lightgbm
import ast
with open('x_train.txt',"r") as f:
    x_train_1  =  np.array(ast.literal_eval(f.read()))
with open('y_train.txt',"r") as f:
    y_train_1  =  np.array(ast.literal_eval(f.read()))
lr = linear_model.LogisticRegression()
lr.fit(x_train_1,y_train_1)
with open("model.pkl","wb") as f:
    pickle.dump(lr,f)

Файл submission.py выглядит в этом случае

import random
import numpy as np
import sklearn
import math
import pickle
from sklearn import linear_model
import sys
np.set_printoptions(threshold=sys.maxsize)

def eval(data):

    with open("model.pkl","rb") as f:
        model = pickle.load(f)



    res = model.predict_proba(np.array(data))[:,1]
    return np.array2string(np.array(res),separator=",",precision=20 ).replace("\\n", "\n").replace("\n", " ")

Необходимо сделать архив zip submission.py и model.pkl и загрузить его в качестве решения

Максимально количество очков - 2000. Основная оцениваемая метрика ROC AUC (решения с ROC AUC меньше 0.5 дают 0 очков).



Очки Участник Дата Команда Город Учебное заведение