LASSO回归,python代码
时间: 2023-10-17 17:05:49 浏览: 82
下面是使用Python进行LASSO回归的示例代码:
```python
from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 载入数据集
boston = load_boston()
X = boston.data
y = boston.target
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建Lasso模型
lasso = Lasso(alpha=0.1)
# 拟合模型
lasso.fit(X_train, y_train)
# 预测
y_pred = lasso.predict(X_test)
# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print("Lasso MSE:", mse)
```
在这个示例中,我们使用波士顿房价数据集进行LASSO回归。首先我们载入数据集并对数据集进行分割,然后创建了一个Lasso对象,并使用fit方法拟合模型。最后我们使用predict方法进行预测,并计算了均方误差作为评估指标。
相关问题
lasso回归python代码
以下是使用Python实现Lasso回归的示例代码:
```python
from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载波士顿房价数据集
boston = load_boston()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3, random_state=42)
# 创建Lasso回归模型
lasso = Lasso(alpha=0.1)
# 在训练集上拟合模型
lasso.fit(X_train, y_train)
# 在测试集上评估模型
y_pred = lasso.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("MSE: %.2f" % mse)
```
在这个示例中,我们使用波士顿房价数据集来训练和测试Lasso回归模型。我们首先将数据集划分为训练集和测试集,然后创建一个Lasso回归对象,设置L1正则化参数alpha为0.1。接着,我们在训练集上拟合模型,并在测试集上评估模型性能,使用均方误差(MSE)作为性能指标。
用随机梯度下降算法实现Lasso回归python代码
以下是使用随机梯度下降算法实现Lasso回归的Python代码:
```python
import numpy as np
class LassoRegression:
def __init__(self, alpha=0.1, max_iter=1000, tol=1e-4):
self.alpha = alpha
self.max_iter = max_iter
self.tol = tol
def fit(self, X, y):
n_samples, n_features = X.shape
self.w = np.zeros(n_features)
self.b = 0
for i in range(self.max_iter):
rand_idx = np.random.randint(n_samples)
X_i = X[rand_idx, :].reshape(1, -1)
y_i = y[rand_idx].reshape(1, -1)
y_pred = X_i.dot(self.w) + self.b
error = y_i - y_pred
l1_grad = -np.abs(self.w) / self.w
l1_grad[np.isinf(l1_grad)] = 0
w_grad = X_i.T.dot(error) + self.alpha * l1_grad.reshape(-1, 1)
if np.abs(w_grad).all() < self.tol:
break
self.w -= self.alpha * w_grad.reshape(-1)
self.b -= self.alpha * error
def predict(self, X):
return X.dot(self.w) + self.b
```
其中,`alpha` 是正则化参数,`max_iter` 是最大迭代次数,`tol` 是算法收敛的阈值。`fit` 方法使用随机梯度下降算法来拟合模型,`predict` 方法用于预测。
阅读全文