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

showswoller showswoller     2023-03-31     419

关键词:

数据集和源码请点赞关注收藏后评论区留下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)))

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

 

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

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

可视化结果如下 

 

 

 

 可视化部分代码如下

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邮箱或者私信

机器学习梯度下降法应用波士顿房价预测(代码片段)

目录1线性回归api介绍小结2波士顿房价预测2.1案例背景介绍2.2案例分析2.3回归性能评估2.4代码实现2.4.1正规方程2.4.2梯度下降法2.5小结1线性回归api介绍机器学习梯度下降算法:https://blog.csdn.net/ZGL_cyy/article/details/127037949sklearn.lin... 查看详情

机器学习实战二:波士顿房价预测bostonhousing(代码片段)

波士顿房价预测Bostonhousing这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一个连续值,当然这也是... 查看详情

机器学习算法:波士顿房价预测|黑马程序员(代码片段)

学习目标:通过案例掌握正规方程和梯度下降法api的使用1案例背景介绍数据介绍   给定的这些特征,是专家们得出的影响房价的结果属性。我们此阶段不需要自己去探究特征是否有用,只需要使用这些特征。到后... 查看详情

02-06普通线性回归(波斯顿房价预测)+特征选择(代码片段)

目录普通线性回归(波士顿房价预测)一、导入模块二、获取数据2.1打印数据三、特征选择3.1散点图矩阵3.2关联矩阵四、训练模型五、可视化更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智... 查看详情

线性回归案例:波士顿房价预测(代码片段)

波士顿房价预测1.背景介绍2.案例分析3.回归性能评估4.代码实现4.1正规方程4.2梯度下降法5.小结1.背景介绍数据介绍给定的这些特征,是专家们得出的影响房价的结果属性。我们此阶段不需要自己去探究特征是否有用,只... 查看详情

线性回归预测波士顿房价(代码片段)

 预测波士顿的房价,上次已经通过房间数目预测了房价,这次用多元线性回归预测。根据之前推导的多元线性回归的参数 接下来是多元线性回归的代码实现defLinearRegression_(x,y):np.array(x)np.array(y)a=(np.linalg.inv(x.T.dot(x))).dot(x.... 查看详情

深度学习(波士顿房价预测)(代码片段)

...反向传播2.2.4优化算法3测试结果4完整源程序 1实验背景波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“HelloWorld”。和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的。该数据集统... 查看详情

hcia-ai_机器学习_波士顿房价预测(代码片段)

机器学习实验-波士顿房价预测1波士顿房价预测1.2实验代码1.2.1引入依赖包1.2.2加载数据集,查看数据属性,可视化1.2.3分割数据集,并对数据集进行预处理1.2.4利用各类回归模型,对数据集进行建模1.2.5利用网格搜... 查看详情

机器学习正则化线性模型和模型保存(代码片段)

...g1.5小结2线性回归的改进-岭回归2.1API2.2正则化程度变化2.3波士顿房价预测2.4小结3模型的保存和加载3.1sklearn模型的保存和加载API3.2线性回归的模型保存加载案例3.3tips3.4小结1正则化线性模型1.1岭回归岭回归(RidgeRegression,又名Ti 查看详情

机器学习-线性回归算法(房价预测项目)(代码片段)

文章目录简介损失函数优化算法正规方程梯度下降项目实战前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介线性回归(LinearRegression)是回归... 查看详情

基于线性回归分析——boston房价预测(代码片段)

...joblibimportpandasaspdimportnumpyasnpclassHousePredict():"""波士顿房子数据集价格预测"""def__init__(self):#1.获取数据lb=load_boston()#2.分割数据集到训练集和测试集x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size 查看详情

机器学习1-概述(代码片段)

机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习分为分类和回归两大类。分类:例如经过大量水果图片训练,识别新水果图片中是否含有苹果回归:例如经过大量面积-房价的数据的训练,预测某个面积... 查看详情

机器学习线性回归简介

目录1线性回归应用场景2什么是线性回归2.1定义与公式2.2线性回归模型介绍3小结1线性回归应用场景房价预测销售额度预测贷款额度预测举例:2什么是线性回归2.1定义与公式线性回归(Linearregression)是利用回归方程(函数)对一个... 查看详情

正规方程,梯度下降,岭回归——机器学习(代码片段)

...;mini-batch)2.4随机平均梯度下降算法(SAG)三.波士顿房价预测——正规方程( 查看详情

机器学习算法:线性回归简介

学习目标了解线性回归的应用场景知道线性回归的定义1线性回归应用场景房价预测销售额度预测贷款额度预测举例: 2什么是线性回归2.1定义与公式线性回归(Linearregression)是利用回归方程(函数)对一个或多个自变量(特征值)... 查看详情

回归模型与房价预测

...?#1.导入boston房价数据集fromsklearn.datasetsimportload_boston#导入波士顿 查看详情

ml之shap:基于boston波士顿房价回归预测数据集利用shap值对lir线性回归模型实现可解释性案例

ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例目录基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例高性能云服务器精品线路独享带宽,毫秒延迟,... 查看详情

掌握spark机器学习库-07.6-线性回归实现房价预测(代码片段)

数据集house.csv数据概览代码packageorg.apache.spark.examples.examplesformlimportorg.apache.spark.ml.feature.VectorAssemblerimportorg.apache.spark.ml.regression.LinearRegressionimportorg.apache.spark.sql.SparkSe 查看详情