Это те функции, которые я использую. Линейная и хребтовая регрессия хорошо работают с этим (когда я звоню 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)
Вывод: Изображение выход