コード例 #1
0
#%% 特征归一化 (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)
model.k, model.b = model.snapshot[best_idx]
my_size = float(input('输入你手的尺寸(以毫米为单位):'))
print("预测你的身高为: %.2f mm" % (model.predict((my_size - mu) / std)))

#%% 理解 supplementary 文件夹中关于 KNN 和 bayesian regression 两个算法
コード例 #2
0
ファイル: main.py プロジェクト: nicedi/ML_course_projects
_, _, 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
x_origin = np.linspace(X.min(), X.max(), n)
_, _, xdata = utils.expand_feature(x_origin.reshape((n, 1)), mu, std)

ydata = model.predict(xdata)
plt.figure()
plt.plot(xdata[:, 1], ydata, 'r-')
plt.scatter(trainX[:, 1], trainy)
plt.xlabel('normalized hand-size')
plt.ylabel('stature')
コード例 #3
0
 def test_evaluate(self):
     '''
     Evaluate predict value for new input after trained
     '''
     model = LinearRegression('SquaredError', 0, 1)
     self.assertEqual(5, model.evaluate(5))