如果想要alpha任取0.001-1之间的任意值,可以使用numpy库中的linspace函数生成一个从0.001到1之间的等差数列,并将这些值作为正则化参数alpha进行Lasso回归。具体代码如下:
```python
import numpy as np
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
# 生成数据集
num = 1000
X = np.linspace(0, 1, num)
y = X + 0.2 * np.random.randn(num)
# 定义正则化参数范围
alphas = np.linspace(0.001, 1, 100)
# 计算不同正则化参数下的MSE
mse_list = []
for alpha in alphas:
model = Lasso(alpha=alpha)
model.fit(X.reshape(-1, 1), y)
y_pred = model.predict(X.reshape(-1, 1))
mse = mean_squared_error(y, y_pred)
mse_list.append(mse)
# 绘制MSE随着正则化参数变化的曲线
import matplotlib.pyplot as plt
plt.plot(alphas, mse_list)
plt.xlabel('alpha')
plt.ylabel('MSE')
plt.show()
```
在上面的代码中,我们使用了numpy库中的linspace函数生成了一个从0.001到1之间的等差数列,共有100个数据点,这些数据点被作为正则化参数alpha进行Lasso回归,并计算对应的MSE。最后,我们绘制了MSE随着正则化参数变化的曲线,横坐标为正则化参数alpha,纵坐标为MSE。