• 机器学习(新手入门)-线性回归 #房价预测


    题目:给定数据集dataSet,每一行代表一组数据记录,每组数据记录中,第一个值为房屋面积(单位:平方英尺),第二个值为房屋中的房间数,第三个值为房价(单位:千美元),试用梯度下降法,构造损失函数,在函数gradientDescent中实现房价price关于房屋面积area和房间数rooms的线性回归,返回值为线性方程𝑝𝑟𝑖𝑐𝑒=𝜃0+𝜃1∗𝑎𝑟𝑒𝑎+𝜃2∗𝑟𝑜𝑜𝑚𝑠中系数𝜃𝑖(𝑖=0,1,2)的列表。

    1. %matplotlib inline
    2. import numpy as np
    3. import pandas as pd
    4. import matplotlib.pyplot as plt
    5. from numpy import genfromtxt
    6. dataPath = r"./Input/data1.csv"
    7. dataSet = pd.read_csv(dataPath,header=None)
    8. print(dataSet)
    9. price = []
    10. rooms = []
    11. area = []
    12. for data in range(0,len(dataSet)):
    13. area.append(dataSet[0][data])
    14. rooms.append(dataSet[1][data])
    15. price.append(dataSet[2][data])
    16. print(area)

    执行结果:

    1. def gradientDescent(rooms, price, area):
    2. epochs = 500
    3. alpha = 0.00000001
    4. theta_gradient = [0,0,0]
    5. const = [1,1,1,1,1]
    6. theta = [1,2,1]
    7. loss = []
    8. for i in range(epochs):
    9. theta0 = np.dot(theta[0],const)
    10. theta1 = np.dot(theta[1],area)
    11. theat2 = np.dot(theta[2],rooms)
    12. predict_tmp = np.add(theta0,theta1)
    13. predict = np.add(predict_tmp,theat2)
    14. loss_ = predict - price
    15. theta_gradient[0] = (theta_gradient[0] + np.dot(const,loss_.transpose()))/5
    16. theta_gradient[1] = (theta_gradient[1] + np.dot(area,loss_.transpose()))/5
    17. theta_gradient[2] = (theta_gradient[2] + np.dot(rooms,loss_.transpose()))/5
    18. loss_t = np.sum(np.divide(np.square(loss_),2))/5
    19. if i%50==0:
    20. print("loss_t:",loss_t)
    21. loss.append(loss_t)
    22. theta[0] = theta[0] - alpha * theta_gradient[0]
    23. theta[1] = theta[1] - alpha * theta_gradient[1]
    24. theta[2] = theta[2] - alpha * theta_gradient[2]
    25. plt.plot(loss,c='b')
    26. plt.show()
    27. return theta
    1. def demo_GD():
    2. theta_list = gradientDescent(rooms, price, area)
    3. demo_GD()

    j结果展示: 

  • 相关阅读:
    软件设计模式
    Jetpack Compose 介绍和快速上手
    Linux网络编程基础
    飞行动力学 - 第32节-荷兰滚飞行品质 之 基础点摘要
    Android studio 升级常见报错
    抖音seo矩阵系统源码分享-技术梳理
    JUC05-AQS、ReentrantLock原理
    vue3.2 响应式之 ref 、reactive 、toRef 、 toRefs
    在IDEA中如何新建一个web工程
    ZZULIOJ:1191-1199
  • 原文地址:https://blog.csdn.net/dwly12345/article/details/133989920