机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)

这篇具有很好参考价值的文章主要介绍了机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信

线性回归是利用最小二乘函数对一个或多个因变量之间关系进行建模的一种回归分析,这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个变量的称为一元回归,大于一个变量的情况叫做多元回归。利用线性回归,我们可以预测一组特定数据是否在一定时期内增长或下降。

接下来以线性回归预测波士顿房价进行实战解析

线性回归代码如下

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

# 读数据
data = np.loadtxt(boston_house_price.csv', float, delimiter=",", skiprows=1)
X, y = data[:, :13], data[:, 13]
# Z-score归一化
for i in range(X.shape[1]):
    X[:, i] = (X[:, i] - np.mean(X[:, i])) / np.std(X[:, i])
# 划分训练集、测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 将训练集、测试集改为列向量的形式
y_train = y_train.reshape((-1, 1))
y_test = y_test.reshape((-1, 1))

# 初始化模型参数
def initialize_params(feature_num):
 
    w=np.random.rand(feature_num,1)
    b=0
    return w,b


def forward(X, y, w, b):
 
    num_train=X.shape[0]
    y_hat=np.dot(X,w)+b
    loss=np.sum((y_hat-y)**2)/num_train
    dw=np.dot(X.T,(y_hat-y))/num_train
    db=np.sum((y_hat-y))/num_train
    return y_hat,loss,dw,db

# 定义线性回归模型的训练过程
def my_linear_regression(X, y, learning_rate, epochs):

    loss_his=[]
    w,b=initialize_params(X.shape[1])
    for i in range(epochs):
        y_hat,loss,dw,db=forward(X,y,w,b)
        w+=-learning_rate*dw
        b+=-learning_rate*db
        loss_his.append(loss)
        if i%100==0:
            print("epochs %d loss %f"%(i,loss))
    return loss_his,w,b









# 线性回归模型训练
loss_his, w, b = my_linear_regression(X_train, y_train, 0.01, 5000)
# 打印loss曲线
plt.plot(range(len(loss_his)), loss_his, linewidth=1, linestyle="solid", label="train loss")
plt.show()
# 打印训练后得到的模型参数
print("w:", w, "\nb", b)

# 定义MSE函数
def MSE(y_test, y_pred):
    return np.sum(np.square(y_pred - y_test)) / y_pred.shape[0]

# 定义R系数函数
def r2_score(y_test, y_pred):
    # 测试集标签均值
    y_avg = np.mean(y_test)
    # 总离差平方和
    ss_tot = np.sum((y_test - y_avg) ** 2)
    # 残差平方和
    ss_res = np.sum((y_test - y_pred) ** 2)
    # R计算
    r2 = 1 - (ss_res / ss_tot)
    return r2

# 在测试集上预测
y_pred = np.dot(X_test, w) + b
# 计算测试集的MSE
print("测试集的MSE: {:.2f}".format(MSE(y_test, y_pred)))
# 计算测试集的R方系数
print("测试集的R2: {:.2f}".format(r2_score(y_test, y_pred)))

损失值随训练次数的变化图如下 可以看出符合肘部方法 

机器学习预测波士顿,机器学习,1024程序员节,python,matplotlib,机器学习,线性回归

 机器学习预测波士顿,机器学习,1024程序员节,python,matplotlib,机器学习,线性回归

 接下来可视化分析影响房价的因素

"""
各个字段的含义:
    CRIM     犯罪率
    ZN       住宅用地所占比例
    INDUS    城镇中非商业用地所占比例
    CHAS     是否处于查尔斯河边
    NOX      一氧化碳浓度
    RM       住宅房间数
    AGE      1940年以前建成的业主自住单位的占比
    DIS      距离波士顿5个商业中心的加权平均距离
    RAD      距离高速公路的便利指数
    TAX      不动产权税
    PTRATIO  学生/教师比例
    B        黑人比例
    LSTAT    低收入阶层占比
    MEDV     房价中位数
"""

可视化结果如下 

 机器学习预测波士顿,机器学习,1024程序员节,python,matplotlib,机器学习,线性回归

 机器学习预测波士顿,机器学习,1024程序员节,python,matplotlib,机器学习,线性回归

 机器学习预测波士顿,机器学习,1024程序员节,python,matplotlib,机器学习,线性回归

 可视化部分代码如下

import  pandas as pd
import  numpy as np
import  seaborn as sns
import  matplotlib.pyplot as plt
df=pd.read_csv(boston_house_price.csv',encoding='utf-8')
print(df.head())
df.describe()
df['medv'].hist()
sns.boxplot(x=df['medv'])#有点问题 要加个x传参
plt.scatter(df['rm'],df['medv'])
def box_plot_outliers(df,s):
    q1,q3=df[s].quantile(0.25),df[s].quantile(0.75)
    iqr=q3-q1
    low,up=q1-1.5*iqr,q3+1.5*iqr
    df=df[(df[s]>up)|(df[s]<low)]
    return df
df_filter=box_plot_outliers(df,'rm')
df_filter.mean()

plt.scatter(df['dis'],df['medv'])
plt.scatter(df['rad'],df['medv'])
plt.scatter(df['b'],df['medv'])
df.corr()
plt.style.use({'figure.figsize':(15,10)})
df.hist(bins=15)
sns.boxplot(data=df)
plt.figure(figsize=(12,22))
for i in range(13):
    plt.subplot(4,4,(i+1))
    plt.scatter(df.iloc[:,i],df['medv'])
    plt.title('{}-price scatter'.format(df.columns[i]))
    plt.xlabel(df.columns[i])
    plt.ylabel('boston house price')
plt.show()
plt.tight_layout()

数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信文章来源地址https://www.toymoban.com/news/detail-812623.html

到了这里,关于机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用线性回归构建波士顿房价预测模型

    波士顿房价数据集统计了波士顿地区506套房屋的特征以及它们的成交价格,这些特征包括周边犯罪率、房间数量、房屋是否靠河、交通便利性、空气质量、房产税率、社区师生比例(即教育水平)、周边低收入人口比例等 。我们的任务是根据上述数据集建立模型,能够预测房

    2023年04月14日
    浏览(71)
  • python-机器学习-波士顿房价回归分析

            以波士顿房价数据集为对象,理解数据和认识数据,掌握 梯度下降法 和 回归分析 的初步方法,掌握 模型正则化 的一般方法,对回归分析的结果解读。         波士顿房价数据集是20世纪70年代中期波士顿郊区房价的中位数,统计了当时城市的13个指标与房价

    2024年02月06日
    浏览(33)
  • 机器学习 波士顿房价预测 Boston Housing

    目录 一:前言 二:模型预测(KNN算法) 三:回归模型预测比对 波士顿房价 是机器学习中很常用的一个 解决回归问题 的数据集 数据统计于1978年,包括506个房价样本,每个样本包括波士顿不同郊区房屋的13种特征信息, 比如:住宅房间数、城镇教师和学生比例等 标签值是每栋

    2024年02月03日
    浏览(45)
  • 机器学习基础10-审查回归算法(基于波士顿房价的数据集)

    上一节介绍了如何审查分类算法,并介绍了六种不同的分类算法,还 用同一个数据集按照相同的方式对它们做了审查,本章将用相同的方式对回归算法进行审查。 在本节将学到: 如何审查机器学习的回归算法。 如何审查四种线性分类算法。 如何审查三种非线性分类算法。

    2024年02月11日
    浏览(38)
  • 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

    随机森林(Random Forest)算法 是一种 集成学习(Ensemble Learning)方法,它由多个决策树组成,是一种分类、回归和特征选择的机器学习算法。 在随机森林中,每个决策树都是独立地训练的,每棵树的建立都是基于随机选取的 特征子集 和随机选取的 训练样本集 。 在分类问题

    2024年02月01日
    浏览(54)
  • 机器学习基础08-回归算法矩阵分析(基于波士顿房价(Boston House Price)数据集)

    回归算法通常涉及到使用矩阵来表示数据和模型参数。线性回归是最常见的回归算法之一,它可以用矩阵形式来表示。 考虑一个简单的线性回归模型: y = m x + b y = mx + b y = m x + b ,其中 y y y 是因变量, x x x 是自变量, m m m 是斜率, b b b 是截距。将这个模型表示成矩阵形式

    2024年02月14日
    浏览(44)
  • 机器学习---使用 TensorFlow 构建神经网络模型预测波士顿房价和鸢尾花数据集分类

    1. 预测波士顿房价 1.1 导包 最后一行设置了TensorFlow日志的详细程度: tf.logging.DEBUG :最详细的日志级别,用于记录调试信息。 tf.logging.INFO :用于记录一般的信息性消息,比如训练过程中的指标和进度。 tf.logging.WARN :用于记录警告消息,表示可能存在潜在问题,但不会导致

    2024年02月08日
    浏览(46)
  • 多元线性回归的python代码实现(基于sklearn的波士顿房价boston数据集为例)

    基于sklearn自带数据集波士顿房价数据集进行多元线性回归算法代码实现,其数据集包括13个特征向量,共计506个样本集。 本文代码实现步骤如下: 1. 获取数据集 2. 数据集切分,老规矩,80%训练,20%测试 3. 数据预处理(本用例尝试过归一化处理,但发现效果不好,不是每一个

    2024年02月06日
    浏览(50)
  • 计算机视觉学习笔记(二)---传统神经网络之波士顿房价预测

      本文承接pytorch学习笔记(一),以波士顿房价预测为例演示利用pytorch搭建一个简单的传统神经网络   数据集为波士顿房价数据,预测目标为MEDV(标签),其余变量均为特征。由于是csv格式可以直接采用pandas包下的read_csv读取   观察到在输入的数据中,有的特征普遍

    2024年02月04日
    浏览(48)
  • 基于回归分析的波士顿房价分析

    项目实现步骤: 1.项目结构 2.处理数据 3.处理绘图 4.对数据进行分析 5.结果展示 一.项目结构 二.处理数据 使用sklearn的datasets时,对应的波士顿房价数据已经被“移除”,在获取数据时,会出现 ,此时,在该提示的下方会有相关的解决方法 不建议使用提供的方法,对应方法的

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包