基于回归分析的波士顿房价分析

这篇具有很好参考价值的文章主要介绍了基于回归分析的波士顿房价分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于回归分析的波士顿房价分析

项目实现步骤:
1.项目结构
2.处理数据
3.处理绘图
4.对数据进行分析
5.结果展示
一.项目结构
基于回归分析的波士顿房价分析
二.处理数据

from sklearn import datasets
import pandas as pd

"""
sklearn1.2版本后不在保留load_boston数据集,
可用
"""
def get_data():
    # 获取波士顿数据
    # data_url = "http://lib.stat.cmu.edu/datasets/boston"
    # raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
    # print(raw_df)
    # # 输入
    # boston_x = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
    # # 输出
    # boston_y= raw_df.values[1::2, 2]
    # # 自作数据集
    # boston=pd.DataFrame(boston_x)
    # print(boston)
    boston=datasets.load_boston()
    # 输入
    boston_x=boston.data
    # 输出
    boston_y=boston.target
    # 自制数据集
    boston_new=pd.DataFrame(boston_x)
    boston_new.columns=boston["feature_names"]
    boston_new['PRICE']=boston_y
    # 保存数据
    # boston_new.to_csv('./models/Data/boston.csv')
    return boston_new

使用sklearn的datasets时,对应的波士顿房价数据已经被“移除”,在获取数据时,会出现
基于回归分析的波士顿房价分析
,此时,在该提示的下方会有相关的解决方法
基于回归分析的波士顿房价分析
不建议使用提供的方法,对应方法的数据与具体实现项目的数据有误差
三.处理绘图
1.绘图前准备

import numpy as np
def get_request(request,data):
    # 要处理的数据
    # 设置初始值
    control={
        'CRIM':'城镇人均犯罪率',
        'ZN':'占地面接超过5万平方米英尺的住宅用地面积',
        'INDUS':'城镇非零售业务的比例',
        'CHAS':'查尔斯河虚拟变量',
        'NOX':'一氧化碳浓度',
        'RM':'平均每个居民拥有的房数',
        'AGE':'在1940年前建成的所有者占用单位的比例',
        'DIS':'与五个波士顿就业中心的加权距离',
        'TAX':'每10000美元的全额物业说率',
        'PTRATIO':'城镇师生比',
        'B':'城镇黑人比例',
        'LSTAT':'低收入人口所占比例',
        'PRICE':'房价'
    }
    if request in control.keys():
        # 获取价格的最大值和最小值
        max=np.max(data['PRICE'])
        min=np.min(data['PRICE'])
        # 存储最大值和最小值,对应的x轴标签,y轴的标签
        request_data=list((max,min,control[request],control['PRICE']))
        return request_data
    else:
        print('你输入的数据不存在,请查看相关的文档,查看你想要的数据类型')

用于处理绘图前的准备工作,获取对应的数据和标签
绘图

import matplotlib
import matplotlib.pyplot as plt
from models.chart.beforedraw import beforedraw
from models.CleanData.resolvedata import resolve_data
# 画图类
class draw:
    def __init__(self,request):
        self.data=resolve_data.get_data()
        matplotlib.rc('font',family='SimHei')
        plt.rcParams['axes.unicode_minus']=False
        before_draw=beforedraw.get_request(request,self.data)
        self.x_ticks_max=before_draw[0]
        self.x_ticks_min=before_draw[1]
        self.x_label=before_draw[2]
        self.y_label=before_draw[3]
        self.request=request
    def draw_sactter(self):
        plt.scatter(self.data['PRICE'],self.data[self.request])
        plt.title(f'{self.x_label}与{self.y_label}的散点图')
        plt.xlabel(self.x_label)
        plt.ylabel(self.y_label)
        plt.xticks((range(int(self.x_ticks_min),int(self.x_ticks_max),10)))
        plt.grid()
        plt.show()
    def draw_polt(self,title,x_data,y_data,x_label=None,y_label=None):
        plt.plot(x_data,y_data)
        plt.title(title)
        plt.xlabel(x_label)
        plt.ylabel(y_label)
        plt.show()
    def draw_bar(self,title,x_data,y_data,x_label=None,y_label=None):
        plt.bar(x_data,y_data)
        plt.title(title)
        plt.xlabel(x_label)
        plt.ylabel(y_label)
        plt.show()

将绘图封装成类,便于后期的绘图
四.对数据进行分析
分别实现房价与各参数的线性回归分析,绘制出房价的预测值;蚕蛹逻辑回归分析,对是否居住在河边进行逻辑回归分析

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from models.CleanData.resolvedata import resolve_data
from models.chart.draw import draw

from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LinearRegression

# 回归/分类模型的评价方法
from sklearn.metrics import mean_squared_error  #MSE
from sklearn.metrics import mean_absolute_error #MAE

# 分类
from sklearn.linear_model import LogisticRegression
class Learning():
    def __init__(self):
        self.data=resolve_data.get_data()
        self.values=self.data.values
        self.columns=self.data.columns
        self.x_train = ''
        self.x_test = ''
        self.y_train = ''
        self.y_test = ''
        self.train_test_split_linear()
        self.draw=draw.draw("ZN")
        self.fill_nan()
        self.log()
    # 切分数据集
    def train_test_split_linear(self):
        self.x_train,self.x_test,self.y_train,self.y_test=train_test_split(self.values[:,0:-1],self.values[:,-1],test_size=0.2)
    # 弥补缺失值
    def fill_nan(self,):
        if sum(self.data.isnull().sum())!=0:
            simple_imp=SimpleImputer(missing_values=np.nan,strategy='mean')
            self.data=simple_imp.fit(self.data)
        self.standard_scaler()
    # 归一化
    def standard_scaler(self):
        scaler=StandardScaler()
        # fit_transform()一般用于训练集,transform一般用于测试集
        self.x_train=scaler.fit_transform(self.x_train)
        self.x_test=scaler.transform(self.x_test)
        self.linear()
    # 线性回归
    def linear(self):
        linear=LinearRegression()
        self.models_1=linear.fit(self.x_train,self.y_train)
        # 对模型进行打分
        # print(self.models.score(self.x_test,self.y_test))
        self.linear_metrics()

    def linear_metrics(self):
        # MSE均方误差
        linear_MSE=mean_squared_error(self.y_train,self.models_1.predict(self.x_train))
        # RMSE均方根误差  MSE的开方
        linear_RMSE=mean_squared_error(self.y_train,self.models_1.predict(self.x_train))**0.5
        # MAE平均绝对误差
        linear_MAE=mean_absolute_error(self.y_train,self.models_1.predict(self.x_train))
        # 误差
        print(f'MSE均方误差:{linear_MSE},RMSE均方根误差{linear_RMSE},MAE平均绝对误差{linear_MAE}')
        # 房价预测值
        self.draw.draw_polt("房价预测值",np.linspace(0,100,102),self.models_1.predict(self.x_test))

    # 分类
    def log(self):
        # 测试集
        x_log_l=self.values[:,0:1]
        x_log_r=self.values[:,4:]
        y_log=self.values[:,3]
        x_log=np.hstack((x_log_l,x_log_r))
        log=LogisticRegression()
        x_train,x_test,y_train,y_test=train_test_split(x_log,y_log,test_size=0.3)
        models_2=log.fit(x_train,y_train)
        # 预测值
        print(x_test,models_2.predict(x_test))
        # 评分
        print(models_2.score(x_test,y_test))
        # 权重
        print(models_2.coef_)
        self.draw.draw_polt("权重图",np.linspace(0.1,0.9,11),models_2.coef_[0],'','')
        one_array=[]
        zero_array=[]
        for item in models_2.predict(x_test):
            if item==0:
                zero_array.append(item)
            else:
                one_array.append(item)
        self.draw.draw_bar("预测值计较",['0','1'],[len(zero_array),len(one_array)])

五.结构展示
线性回归的误差分析结果
基于回归分析的波士顿房价分析
线性回归的房价预测
基于回归分析的波士顿房价分析
逻辑回归的权重图
基于回归分析的波士顿房价分析
逻辑回归的预测图
基于回归分析的波士顿房价分析
在逻辑回归中,各阐述对于是否居住于河边的影响大,对应的评分在80%以上

项目完成!!!文章来源地址https://www.toymoban.com/news/detail-487916.html

到了这里,关于基于回归分析的波士顿房价分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

    数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信 线性回归是利用最小二乘函数对一个或多个因变量之间关系进行建模的一种回归分析,这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个变量的称为一元回归,大于一个变量的情况叫做多元回归。

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

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

    2024年02月06日
    浏览(46)
  • 使用线性回归构建波士顿房价预测模型

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

    2023年04月14日
    浏览(65)
  • 实验 09 线性回归与波士顿房价预测

    掌握机器学习的基本概念 掌握线性回归的实现过程 应用LinearRegression实现回归预测 知道回归算法的评估标准及其公式 知道过拟合与欠拟合的原因以及解决方法 Jupter Notebook 人们在生活中经常遇到分类与预测的问题,目标变量可能受多个因素影响,根据相关系数可以判断影响因

    2024年02月11日
    浏览(35)
  • 机器学习(线性回归实训)------波士顿房价

    1.机器学习 机器学习是人工智能 (AI) 和计算机科学的分支,专注于使用数据和算法来模仿人类学习的方式,逐渐提高其准确性。机器学习是不断成长的数据科学领域的重要组成部分。 通过使用统计方法,对算法进行训练,以进行分类或预测,揭示数据挖掘项目中的关键洞察

    2024年02月06日
    浏览(52)
  • 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测

    随机梯度下降(SGD)也称为增量梯度下降,是一种迭代方法,用于优化可微分目标函数。该方法通过在小批量数据上计算损失函数的梯度而迭代地更新权重与偏置项。SGD在高度非凸的损失表面上远远超越了朴素梯度下降法,这种简单的爬山法技术已经主导了现代的非凸优化。

    2024年02月03日
    浏览(54)
  • python 波士顿房价预测

    数据集地址:Index of /ml/machine-learning-databases/housing (uci.edu) 数据集中共有506条样本数据,每条样本包含了13个影响房价的特征。 数据集格式 np.fromfile()  读取数据没有数据类型和数据的形状。所以这里使用了data.reshape()重新变换成原始的形状。 (7084,) (506, 14) (14,) [6.320e-03 1.800e+

    2023年04月08日
    浏览(38)
  • paddle实现波士顿房价预测任务

    要点: 参考官方案例 飞桨PaddlePaddle-源于产业实践的开源深度学习平台 1 加载飞桨框架的相关类库 飞桨支持两种深度学习建模编写方式,更方便调试的动态图模式和性能更好并便于部署的静态图模式。 动态图模式(命令式编程范式,类比Python):解析式的执行方式。用户无

    2023年04月14日
    浏览(40)
  • 波士顿房价数据集怎么不见了?

     做线性回归的同学大概率会用到一个数据集,即波士顿房价数据集,然而当你从sklearn下载该数据集时,你会惊讶地发现居然下载不了了!!!起初我以为是什么别的原因导致数据集可能被收回了,结果当我看到一篇文章就感觉,算了不做评价,参见这篇文章 消失的波士顿

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

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

    2024年02月03日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包