1. 数据预处理

#导入所需的库
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge, LinearRegression ,Lasso
from sklearn.model_selection import train_test_split as TTS
from sklearn.datasets import fetch_california_housing as fch
import matplotlib.pyplot as plt
#数据预处理
housevalue = fch()
X = pd.DataFrame(housevalue.data)
y = housevalue.target
X.columns = ["住户收入中位数","房屋使用年代中位数","平均房间数目"
,"平均卧室数目","街区人口","平均入住率","街区的纬度","街区的经度"]
X.head()
Xtrain,Xtest,Ytrain,Ytest = TTS(X,y,test_size=0.3,random_state=420)
#恢复索引
for i in [Xtrain,Xtest]:i.index = range(i.shape[0])

1.1 使用线性回归训练数据集

from sklearn.metrics import mean_squared_error as MSE
reg = LinearRegression().fit(Xtrain,Ytrain)
yhat = reg.predict(Xtest)
print('训练集的均方误差:{}'.format( MSE(yhat,Ytest)))
print('训练集的拟合优度:{}'.format(reg.score(Xtrain,Ytrain)))
print('测试集的拟合优度:{}'.format(reg.score(Xtest,Ytest)))

训练集的均方误差:0.5309012639324571
训练集的拟合优度:0.6067440341875014
测试集的拟合优度:0.6043668160178817

1.2 使用岭回归训练数据集

from sklearn.linear_model import RidgeCV
alphas = np.arange(1,100,1)
Ridge_ = RidgeCV(alphas= alphas,cv = 5).fit(Xtrain, Ytrain)
print('训练集的拟合优度:{}'.format(Ridge_.score(Xtrain,Ytrain)))
print('测试集的拟合优度:{}'.format(Ridge_.score(Xtest,Ytest)))
print('岭回归的最佳参数取值:{}'.format(Ridge_.alpha_))

训练集的拟合优度:0.6065484332609066
测试集的拟合优度:0.6038138173821119
岭回归的最佳参数取值:71

1.3 使用Lasso回归训练数据集

from sklearn.linear_model import LassoCV
alpharange = np.logspace(-10,-2,200,base = 10)
Lasso_ = LassoCV(alphas = alpharange , cv = 5 ).fit(Xtrain,Ytrain)
print('训练集的拟合优度:{}'.format(Lasso_.score(Xtrain,Ytrain)))
print('测试集的拟合优度:{}'.format(Lasso_.score(Xtest,Ytest)))
print('Lasso的最佳参数取值:{}'.format(Lasso_.alpha_))

训练集的拟合优度:0.606583409665469
测试集的拟合优度:0.6038982670571436
Lasso的最佳参数取值:0.0020729217795953697

2. 线性优化 尝试对标签Y进行平滑处理

y_log=np.log(y)
x_train,x_test,y_train_log,y_test_log = TTS(X,y_log,test_size = 0.3,random_state = 420)
for i in [x_train,x_test]:i.index = range(i.shape[0])

2.1 使用线性回归训练数据集

reg = LinearRegression().fit(x_train,y_train_log)
print('训练集的拟合优度:{}'.format(reg.score(x_train,y_train_log)))
print('测试集的拟合优度:{}'.format(reg.score(x_test,y_test_log)))

训练集的拟合优度:0.6125701741509962
测试集的拟合优度:0.617943317073625

2.2 使用岭回归训练数据集

from sklearn.linear_model import RidgeCV
alphas = np.arange(1,100,1)
Ridge_ = RidgeCV(alphas= alphas,cv = 5).fit(x_train, y_train_log)
print('训练集的拟合优度:{}'.format(Ridge_.score(x_train,y_train_log)))
print('测试集的拟合优度:{}'.format(Ridge_.score(x_test,y_test_log)))
print('岭回归的最佳参数取值:{}'.format(Ridge_.alpha_))

训练集的拟合优度:0.6123854582097952
测试集的拟合优度:0.6174800899951471
岭回归的最佳参数取值:86

2.3 使用Lasso回归训练数据集

from sklearn.linear_model import LassoCV
alpharange = np.logspace(-10,-2,200,base = 10)
Lasso_ = LassoCV(alphas = alpharange , cv = 5 ).fit(x_train,y_train_log)
print('训练集的拟合优度:{}'.format(Lasso_.score(x_train,y_train_log)))
print('测试集的拟合优度:{}'.format(Lasso_.score(x_test,y_test_log)))
print('Lasso的最佳参数取值:{}'.format(Lasso_.alpha_))

训练集的拟合优度:0.6123911271099716
测试集的拟合优度:0.6176512725565488
Lasso的最佳参数取值:0.0010843659686896108

3.尝试其他回归模型进行预测

from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from xgboost import XGBRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import AdaBoostRegressormodels=[KNeighborsRegressor(),SVR(),DecisionTreeRegressor(),XGBRegressor(objective ='reg:squarederror'),RandomForestRegressor(),AdaBoostRegressor()]
models_str=[ 'KNNRegressor','SVR','DecisionTree','XGBoost','RandomForest','AdaBoost']for name,model in zip(models_str,models):print('开始训练模型:'+name)model=model   #建立模型model.fit(Xtrain,Ytrain)Ypred=model.predict(Xtest)  score=model.score(Xtest,Ytest)print(name +' 得分:'+str(score))

开始训练模型:KNNRegressor
KNNRegressor 得分:0.1546025334615646
开始训练模型:SVR
SVR 得分:0.09407556998797517
开始训练模型:DecisionTree
DecisionTree 得分:0.5929621533188016
开始训练模型:XGBoost
XGBoost 得分:0.7835016279408904
开始训练模型:RandomForest
RandomForest 得分:0.7816564717222622
开始训练模型:AdaBoost
AdaBoost 得分:0.3711725603283339

结论:线性回归的拟合优度R^2 的最佳取值为0.6179,岭回归和lasso只是处理回归问题上的多重共线性的缺陷而成立,在加州房价回归预测数据中并没得到较好优化;相对的,在其他的预测模型比较中(未调参情况下),XGBoost的回归拟合程度最好,拟合优度R^2取值达到0.7835.

线性回归——加州房价预测相关推荐

  1. 02-06 普通线性回归(波斯顿房价预测)+特征选择

    文章目录 普通线性回归(波士顿房价预测) 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 普通线性回归(波士顿房价预测) 导入模块 import pandas as p ...

  2. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

  3. 基于多元线性回归的房价预测

    基于多元线性回归的房价预测 摘要 市场房价的走向受到多种因素的影响,通过对影响市场房价的多种因素进行分析,有助于对未来房价的走势进行较为准确的评估. 多元线性回归适用于对受到多因素影响的数据进行分析的 ...

  4. python使用线性回归实现房价预测

    一.单变量房价预测 采用一元线性回归实现单变量房价预测.通过房屋面积与房价建立线性关系,通过梯度下降进行训练,拟合权重和偏置参数,使用训练到的参数进行房价预测. 1.房屋面积与房价数据 32.5023 ...

  5. 线性回归 波士顿房价预测

    目录 线性回归对波士顿房价进行预测 一.基础概念: 1. 线性回归 2. 平均绝对误差,均方误差的理解 3. 决定系数 二.实验步骤与分析 1. 数据背景 2. 数据读入 3. 定义特征值.目标值 4 ...

  6. 完整的机器学习_加州房价预测

    机器学习的主要步骤 将问题框架化并且关注重点. 获取并探索数据以洞悉数据. 准备数据以更好地将基础数据模式暴露给机器学习算法. 探索多种不同的模型并列出最好的那些. 微调模型并将它们组合成一个很好的解 ...

  7. 机器学习入门实例-加州房价预测-1(数据准备与可视化)

    问题描述 数据来源:California Housing Prices dataset from the StatLib repository,1990年加州的统计数据. 要求:预测任意一个街区的房价 ...

  8. 基于线性回归的房价预测分析

    一.分析问题 尝试使用线性回归模型分析波士顿房价数据集,达到可通过房子属性(X)预测房价(y)的效果. 二.获取数据 sklearn.datasets中自带的load_boston数据集. 三.数据探 ...

  9. educoder 数据挖掘算法原理与实践:线性回归(房价预测)

    第1关:线性回归算法思想 1 BC 第2关:动手实现线性回归 #encoding=utf8 import numpy as np#mse def mse_score(y_predict,y_test) ...

  10. 线性回归波士顿房价预测

    线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式. 线性回归当中主要有两种模型,一种是线性关系,另一种是 ...

最新文章

  1. xml方式整合SpringMVC 4整合 Hibernate4
  2. 复杂性理论研究的核心问题是什么
  3. idea修改java和jsp不起作用_使用IDEA编写jsp时EL表达式不起作用的问题及解决方法...
  4. 实用ISA Server 2006之一: 简介
  5. 顺序表中有效元素的长度_408数据结构之顺序表进阶(1)
  6. 【Javascript】深入理解this作用域问题以及new/let/var/const对this作用域的影响
  7. Flutter基础(十三)Flutter与Android的相互通信
  8. 什么是C++标准库?
  9. 190204每日一句
  10. 单克隆抗体WuT9/甘草次酸-氟尿嘧啶偶联顺铂/RGD肽修饰聚谷氨酸-顺铂复合物的制备
  11. 讯飞配音使用记录:Excel VBA 编程处理多段短文字配音切分及 Hedit、GoldWave 后期处理、编程合成 WAV 文件
  12. 深度揭密SSD中的原片-白片-黑片:莫贪小便宜
  13. 医疗ChatGPT、金融GPT都来啦!“潘多拉的魔盒”已经打开?
  14. C语言思维基础的导图
  15. 学计算机学不会怎么办,怎样学习计算机编程
  16. JUC高并发编程从入门到精通(全)
  17. idea万能快捷键(alt enter),你不知道的17个实用技巧!!!
  18. 关于11代cpuU盘重装系统时无法识别硬盘这件事
  19. Linux TC基于CBQ队列的流量管理范例
  20. 【揭秘TCP/IP协议簇】——TCP/IP的三次握手建立连接

热门文章

  1. python 回溯法 01背包问题_01背包问题(回溯法)python实现
  2. 组件分享之后端组件——超轻量级的工作流引擎go-workflow
  3. 修改DNS服务器的作用,请问修改DNS服务器会有什么后果
  4. php正则表达式工具,正则表达式语法教程(含在线测试工具)
  5. Python爬虫之正则表达式
  6. 京东充值系统现漏洞 被恶意盗刷
  7. 目录-中文版Excel 2016宝典(第9版)
  8. 金丹期前期:1.10、python语言进阶-文件操作
  9. 1867最短路径问题(SPFA)
  10. 安卓pdf阅读器_推荐一款手机PDF阅读器、编辑器xodo docs安卓版