Exemple #1
0
trainy = y[:int(n_sample * 0.6)]
validX = X[int(n_sample * 0.6):int(n_sample * 0.8)]
validy = y[int(n_sample * 0.6):int(n_sample * 0.8)]
testX = X[int(n_sample * 0.8):]
testy = y[int(n_sample * 0.8):]

# expand feature (特征工程)
mu, std, trainX = utils.expand_feature1(trainX)
_, _, validX = utils.expand_feature1(validX, mu, std)
_, _, testX = utils.expand_feature1(testX, mu, std)

#%%  任务1:实现 LinearRegression 的 get_grad 方法,向量化梯度的计算。
# 梯度检验。如果输出值较大,请检查梯度的计算过程。
model = LinearRegression(n_feature, lr)
print('梯度数值计算结果与实际值的 Error Sum of Squares(SSE): {0}'.format(
    model.check_grad(trainX, trainy)))

#%% 训练模型
# 创建模型对象
model = LinearRegression(n_feature, lr)

# 用梯度下降方法进行迭代优化
for i in range(n_iter):
    model.update(trainX, trainy)
    model.evaluate(validX, validy)

# 通过观察 learning curve 检视学习过程
utils.plot_loss(model, n_iter)

#%% 查看训练结果
n = 100
Exemple #2
0
trainX = X[:int(n_sample * 0.8)]
trainy = y[:int(n_sample * 0.8)]
testX = X[int(n_sample * 0.8):]
testy = y[int(n_sample * 0.8):]

#%% 特征归一化 (feature normalization)
mu = trainX.mean()
std = trainX.std()
trainX = (trainX - mu) / std
testX = (testX - mu) / std

#%% 任务3. 实现 LinearRegression 的 get_grad 方法
# 通过观察下列语句的输出值检查梯度实现的正误
# 梯度检查的输出值应非常小,如果不是请检查梯度计算的代码
print(model.check_grad(trainX, trainy))

#%% 任务4. 实现 LinearRegression 的 update 方法
#%% 实现了 update 方法(梯度下降算法)后再进行以下迭代

model = LinearRegression(lr)
for i in range(n_iter):
    model.update(trainX, trainy)
    model.evaluate(testX, testy)
    # 分别解除下列语句的注释,从不同角度观察模型的优化过程
    utils.plot_loss(model, n_iter)
    #utils.show_data_model(model, trainX, trainy)
    #utils.show_contour_model(model, trainX, trainy)

#%% 任务5. 输入你手的尺寸,观察模型预测的身高值
best_idx = np.argmin(model.testloss)