基于足球运动员数据集使用Lasso回归和Ridge回归进行身价预测
时间: 2025-01-01 19:31:39 浏览: 18
### 使用Lasso回归和Ridge回归实现足球运动员身价预测
#### 数据准备
为了构建有效的线性模型,数据预处理至关重要。这包括清洗缺失值、标准化特征以及可能的特征工程工作。对于球员数据集来说,通常会涉及年龄、位置、进球数等多个属性。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 假设df是已经加载好的DataFrame对象
data = df.dropna() # 清洗掉含有NaN值的数据行
X = data[['age', 'position', 'goals']] # 特征列
y = data['value'] # 目标变量即球员市场价值
# 将类别型特征转换成数值形式, 如'position'
X = pd.get_dummies(X)
# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
```
#### 构建并评估Lasso回归模型
通过引入正则化参数alpha来控制惩罚力度,在防止过拟合的同时尽可能保留重要特征的影响程度。
```python
from sklearn.linear_model import LassoCV
lasso_cv = LassoCV(cv=5).fit(X_train_scaled, y_train)
print(f"Lasso最佳alpha={lasso_cv.alpha_:.3f}")
print("Lasso系数:", lasso_cv.coef_)
```
#### 构建并评估Ridge回归模型
同样采用交叉验证方法寻找最优超参alpha,并观察其对各特征权重分配情况的影响[^1].
```python
from sklearn.linear_model import RidgeCV
ridge_cv = RidgeCV(alphas=[0.1, 1.0, 10.0], cv=5).fit(X_train_scaled, y_train)
print(f"Ridge最佳alpha={ridge_cv.alpha_:.3f}")
print("Ridge系数:", ridge_cv.coef_)
```
#### 性能比较
最后可以通过多种指标对比两个模型的表现效果,比如均方误差(MSE),决定系数(R^2)等。
```python
from sklearn.metrics import mean_squared_error, r2_score
for name, model in [('LASSO', lasso_cv), ('RIDGE', ridge_cv)]:
pred = model.predict(X_test_scaled)
mse = mean_squared_error(y_test, pred)
r2 = r2_score(y_test, pred)
print(f"{name} MSE:{mse:.2e}, R² Score:{r2:.3f}")
```
阅读全文