笔记3——经典机器学习,波斯顿房价问题

假设波斯顿房价问题是线性问题

loss函数和求导后函数

# define partial derivative

def partial_derivative_k(x, y, y_hat):

        n = len(y)

        gradient = 0

        for x_i, y_i, y_hat_i in zip(list(x),list(y),list(y_hat)):

        gradient += (y_i-y_hat_i) * x_i

        return -2/n * gradient

def partial_derivative_b(y, y_hat):

        n = len(y)

        gradient = 0

        for y_i, y_hat_i in zip(list(y),list(y_hat)):

                gradient += (y_i-y_hat_i)

return -2 / n * gradient


#initialized parameters

k = random.random() * 200 - 100  # -100 100 初始化k

b = random.random() * 200 - 100  # -100 100 初始化b

learning_rate = 1e-3 #初始化学习率

iteration_num = 200 # 循环学习200次

losses = []

for i in range(iteration_num):

    price_use_current_parameters = [price(r, k, b) for r in X_rm]  # \hat{y}

    current_loss = loss(y, price_use_current_parameters)

    losses.append(current_loss)

    print("Iteration {}, the loss is {}, parameters k is {} and b is {}".format(i,current_loss,k,b))

    k_gradient = partial_derivative_k(X_rm, y, price_use_current_parameters)

    b_gradient = partial_derivative_b(y, price_use_current_parameters)

    k = k + (-1 * k_gradient) * learning_rate

    b = b + (-1 * b_gradient) * learning_rate

best_k = k

best_b = b

将loss画图

plt.plot(list(range(iteration_num)),losses)

price_use_best_parameters = [price(r, best_k, best_b) for r in X_rm]

plt.scatter(X_rm,y)

plt.scatter(X_rm,price_use_current_parameters)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。