Python Класс по Логистике c Регрессия - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь написать объектно-ориентированный класс в python, который может вписаться в обучающие данные - self.fit (X, y), для прогнозирования меток классов на новых данных: self.predict (X), для прогнозирования вероятности каждой метки: self.predict_proba (X), чтобы получить значение LogLoss: self.evaluate (X, y). Все этапы предварительной обработки должны быть включены в класс. Также юнит тест. Мои данные связаны с кредитной информацией, и класс пытается предсказать дефолт по кредиту. Данные имеют несколько категориальных столбцов, и я перенес их в переменные-пустышки. Переменная y - is_bad (0 - для плохого кредита, 1 - для плохого кредита).

В моем коде я сначала определяю родительский класс Df, который имеет x_train, x_test, y_train, y_test. Затем я создал дочерний мод класса, который имеет логистическую модель. Однако я не уверен, правильно ли я понимаю объектно-ориентированный класс. Как написать этот класс? Кроме того, мне интересно, что такое юнит-тест? Как написать модульный тест для логистики c регрессия?

class Df():
    data = pd.read_csv("Lending_Club_DropNA.csv")
    lb_make = LabelEncoder()
    data['NU_home_ownership']=lb_make.fit_transform(data['home_ownership'])
    data['NU_verification_status']=lb_make.fit_transform(data['verification_status'])
    data['NU_purpose_cat'] = lb_make.fit_transform(data['purpose_cat'])
    data['NU_pymnt_plan'] = lb_make.fit_transform(data['pymnt_plan'])
    data['policy_code'] = lb_make.fit_transform(data['policy_code'])
    dat = data.drop(['home_ownership','verification_status','purpose_cat','pymnt_plan','policy_code','zip_code','addr_state','initial_list_status'],axis = 1)
    X,Y = dat.loc[:,dat.columns !="is_bad"],pd.DataFrame(dat.iloc[:,1])
    x_train, x_test, y_train, y_test = train_test_split(X,Y, test_size=0.3,random_state=123)
    sc = StandardScaler()
    x_train = sc.transform(x_train)
    x_test = sc.transform(x_test)
    class Mod(Df):
    L = LogisticRegression(random_state=0)
    def _init_(self, x_train, y_train,x_test,y_test):
        self.fit=L.fit(x_train,y_train)
        self.predit=L.predict(x_train)
        self.predict_proba=L.predict_proba(x_train)
        self.evaluate=log_loss(y_test,self.predict_proba(x_train))```

...