В настоящее время я внедрил регрессию хребта и лассо, используя модуль sklearn.linear_model .
Однако регрессия Lasso, кажется, делает на 3 порядка хуже в одном и том же наборе данных! Вот мой код: < /p>
def ridge_regression(X_train, Y_train, X_test, Y_test, model_alpha):
clf = linear_model.Ridge(model_alpha)
clf.fit(X_train, Y_train)
predictions = clf.predict(X_test)
loss = np.sum((predictions - Y_test)**2)
return loss
def lasso_regression(X_train, Y_train, X_test, Y_test, model_alpha):
clf = linear_model.Lasso(model_alpha)
clf.fit(X_train, Y_train)
predictions = clf.predict(X_test)
loss = np.sum((predictions - Y_test)**2)
return loss
X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(X, Y, test_size=0.1, random_state=0)
for alpha in [0, 0.01, 0.1, 0.5, 1, 2, 5, 10, 100, 1000, 10000]:
print("Lasso loss for alpha=" + str(alpha) +": " + str(lasso_regression(X_train, Y_train, X_test, Y_test, alpha)))
for alpha in [1, 1.25, 1.5, 1.75, 2, 5, 10, 100, 1000, 10000, 100000, 1000000]:
print("Ridge loss for alpha=" + str(alpha) +": " + str(ridge_regression(X_train, Y_train, X_test, Y_test, alpha)))
< /code>
и вот мой выход: < /p>
Lasso loss for alpha=0: 20575.7121727
Lasso loss for alpha=0.01: 19762.8763969
Lasso loss for alpha=0.1: 17656.9926418
Lasso loss for alpha=0.5: 15699.2014387
Lasso loss for alpha=1: 15619.9772649
Lasso loss for alpha=2: 15490.0433166
Lasso loss for alpha=5: 15328.4303197
Lasso loss for alpha=10: 15328.4303197
Lasso loss for alpha=100: 15328.4303197
Lasso loss for alpha=1000: 15328.4303197
Lasso loss for alpha=10000: 15328.4303197
Ridge loss for alpha=1: 61.6235890425
Ridge loss for alpha=1.25: 61.6360790934
Ridge loss for alpha=1.5: 61.6496312133
Ridge loss for alpha=1.75: 61.6636076713
Ridge loss for alpha=2: 61.6776331539
Ridge loss for alpha=5: 61.8206621527
Ridge loss for alpha=10: 61.9883144732
Ridge loss for alpha=100: 63.9106882674
Ridge loss for alpha=1000: 69.3266510866
Ridge loss for alpha=10000: 82.0056669678
Ridge loss for alpha=100000: 88.4479064159
Ridge loss for alpha=1000000: 91.7235727543
В настоящее время я внедрил регрессию хребта и лассо, используя модуль sklearn.linear_model . Однако регрессия Lasso, кажется, делает на 3 порядка хуже в одном и том же наборе данных! Вот мой код: < /p> [code]def ridge_regression(X_train, Y_train, X_test, Y_test, model_alpha): clf = linear_model.Ridge(model_alpha) clf.fit(X_train, Y_train) predictions = clf.predict(X_test) loss = np.sum((predictions - Y_test)**2) return loss
X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(X, Y, test_size=0.1, random_state=0) for alpha in [0, 0.01, 0.1, 0.5, 1, 2, 5, 10, 100, 1000, 10000]: print("Lasso loss for alpha=" + str(alpha) +": " + str(lasso_regression(X_train, Y_train, X_test, Y_test, alpha)))
for alpha in [1, 1.25, 1.5, 1.75, 2, 5, 10, 100, 1000, 10000, 100000, 1000000]: print("Ridge loss for alpha=" + str(alpha) +": " + str(ridge_regression(X_train, Y_train, X_test, Y_test, alpha))) < /code> и вот мой выход: < /p> Lasso loss for alpha=0: 20575.7121727 Lasso loss for alpha=0.01: 19762.8763969 Lasso loss for alpha=0.1: 17656.9926418 Lasso loss for alpha=0.5: 15699.2014387 Lasso loss for alpha=1: 15619.9772649 Lasso loss for alpha=2: 15490.0433166 Lasso loss for alpha=5: 15328.4303197 Lasso loss for alpha=10: 15328.4303197 Lasso loss for alpha=100: 15328.4303197 Lasso loss for alpha=1000: 15328.4303197 Lasso loss for alpha=10000: 15328.4303197 Ridge loss for alpha=1: 61.6235890425 Ridge loss for alpha=1.25: 61.6360790934 Ridge loss for alpha=1.5: 61.6496312133 Ridge loss for alpha=1.75: 61.6636076713 Ridge loss for alpha=2: 61.6776331539 Ridge loss for alpha=5: 61.8206621527 Ridge loss for alpha=10: 61.9883144732 Ridge loss for alpha=100: 63.9106882674 Ridge loss for alpha=1000: 69.3266510866 Ridge loss for alpha=10000: 82.0056669678 Ridge loss for alpha=100000: 88.4479064159 Ridge loss for alpha=1000000: 91.7235727543 [/code] Есть идеи, почему?
Я использовал Sklearn для регрессии полиномиального хребта. Используя поиск в сетке, я доволен результатами. Теперь я хотел бы сделать его как простое полиномиальное уравнение для запуска в небольшом модуле Python. Функция Sklearn возвращает...
Я использовал Sklearn для регрессии полиномиального хребта. Используя поиск в сетке, я доволен результатами. Теперь я хотел бы сделать его как простое полиномиальное уравнение для запуска в небольшом модуле Python. Функция Sklearn возвращает...
Я использовал Sklearn для регрессии полиномиального хребта. Используя поиск в сетке, я доволен результатами. Теперь я хотел бы сделать его как простое полиномиальное уравнение для запуска в небольшом модуле Python. Функция Sklearn возвращает...