李宏毅机器学习 hw2
时间: 2025-01-01 12:33:15 浏览: 10
### 李宏毅机器学习课程第二次作业解决方案
#### 数据导入与预处理
为了完成李宏毅教授的机器学习课程中的第二次作业,首先需要准备好环境并加载必要的库。通常情况下会涉及到`numpy`, `pandas`等基础的数据科学工具包[^3]。
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
```
接着读取训练数据,并将其转换成适合后续操作的形式:
```python
data = pd.read_csv('path_to_train_data.csv')
X = data.iloc[:, :-1].to_numpy() # 特征列
y = data.iloc[:, -1].to_numpy().reshape(-1, 1) # 标签列
```
对于输入特征矩阵\( X \),可能还需要执行标准化或归一化处理来改善模型性能:
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
#### 划分训练集和验证集
考虑到过拟合的风险,在正式训练之前应该预留部分样本作为验证集用于评估模型表现:
```python
X_train, X_val, y_train, y_val = train_test_split(
X_scaled, y, test_size=0.2, random_state=42)
```
#### 训练过程
采用适应性梯度算法(AdaGrad)进行参数优化可以有效提升收敛速度。这里假设已经选择了合适的损失函数以及初始化了权重向量\[ w \].
```python
def adagrad_update(w, grad_w, cache=None, lr=0.01):
if cache is None:
cache = np.zeros_like(w)
cache += grad_w ** 2
w -= lr * grad_w / (np.sqrt(cache) + 1e-8)
return w, cache
```
在每次迭代过程中更新权值直至满足停止条件为止。
#### 测试阶段
当模型训练完成后,同样需对测试集应用相同的数据变换流程以便于做出准确预测;最后利用训练好的模型来进行最终评测。
```python
test_data = pd.read_csv('path_to_test_data.csv')
X_test = test_data.values.astype(float)
X_test_prepared = scaler.transform(X_test)
predictions = model.predict(X_test_prepared)
```
阅读全文