Я пытаюсь написать объектно-ориентированный класс в 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))```