Как использовать регрессию Лассо от склеарна - PullRequest
0 голосов
/ 29 апреля 2020

Это те функции, которые я использую. Линейная и хребтовая регрессия хорошо работают с этим (когда я звоню check_model(LinearRegression())), но с помощью регрессии Лассо я получаю оценки как 0 или отрицательные. Я что-то упускаю?

def avgscores(mdl, iterations = 100, print_scores = False, print_avgs = True, retval = False):
    s1, s2 = 0, 0
    for i in range(iterations):
        X_train, X_test, y_train, y_test = train_test_split(X_scaled, Y_scaled, test_size=0.5)
        s1 += mdl.score(X_train, y_train)
        s2 += mdl.score(X_test, y_test)
        if print_scores: print(i, s1, s2)

    if print_avgs:
        print("S1 avg score = ", s1/iterations)
        print("S2 avg score = ", s2/iterations)

    if retval: return (s1 + s2)/2 * iterations


def check_model(model, print_scores=True, retpreds = False, retmdl = False):
    mdl = model
    mdl.fit(X=X_train, y=y_train)

    if print_scores:
        print("Training score = ", mdl.score(X_train, y_train))
        print("Test score = ", mdl.score(X_train, y_train))
    avgscores(mdl, print_avgs=print_scores)

    if retpreds and retmdl: return (mdl.predict(X_train), mdl)
    elif retmdl: return mdl
    elif retpreds: return (mdl.predict(X_train))


from sklearn.linear_model import Lasso
preds, las = check_model(model=Lasso(copy_X=True), retmdl=True, retpreds=True)

Вывод: Изображение выход

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...