理解数据

import pandas as pd
import numpy as npimport sklearn.datasets as datasets
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error,classification_report
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.externals import joblib

1.加载boston房价数据

boston=datasets.load_boston()
print(boston.DESCR)
boston.feature_names
X=boston.data
Y=boston.target

boston房价数据一共有506行。13个特征,分别是:
‘CRIM’, ‘ZN’, ‘INDUS’, ‘CHAS’, ‘NOX’, ‘RM’, ‘AGE’, ‘DIS’, ‘RAD’,
‘TAX’, ‘PTRATIO’, ‘B’, ‘LSTAT’;
各个特征的含义:
CRIM:城镇人均犯罪率。
ZN:住宅用地超过 25000 sq.ft. 的比例。
INDUS:城镇非零售商用土地的比例。
CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
NOX:一氧化氮浓度。
RM:住宅平均房间数。
AGE:1940 年之前建成的自用房屋比例。
DIS:到波士顿五个中心区域的加权距离。
RAD:辐射性公路的接近指数。
TAX:每 10000 美元的全值财产税率。
PTRATIO:城镇师生比例。
B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例。
LSTAT:人口中地位低下者的比例。
MEDV:自住房的平均房价,以千美元计

2.分割数据为训练集测试集,并可视化各个特征与目标值的关系

X=boston.data
Y=boston.target
X_train,X_test,y_train,y_test=train_test_split(X,Y,random_state=33,test_size=0.2)
#标准化
std=StandardScaler()
x_train=std.fit_transform(X_train)
x_test=std.transform(X_test)
y_train=std.fit_transform(y_train.reshape(-1,1))  #y需要转化为2维
y_test=std.transform(y_test.reshape(-1,1))

可视化

#可视化
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
titles=['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT']
plt.figure(figsize=(12,9))
for i in range(13):plt.subplot(4,4,i+1)plt.scatter(x_train[:,i],y_train,marker='.',color='g')plt.xlabel(titles[i])plt.ylabel('$1000-price')plt.title(str(i+1)+'.'+titles[i]+'-price')
plt.tight_layout()
plt.suptitle('各属性―地価との関連',x=0.5,y=1.05,fontsize=20)
plt.show()


3.分别使用LinearRegression,SGDRegressor,Ridge进行预测

LinearRegression,SGDRegressor的区别

小规模数据:LinearRegression(不能解决拟合问题)以及其它
大规模数据:SGDRegressor
Ridge岭回归解决过拟合问题。

① 正则化LinearRegression

lr=LinearRegression()
lr.fit(x_train,y_train)y_lr_pred=std.inverse_transform(lr.predict(x_test))
error_lr=mean_squared_error(std.inverse_transform(y_test),y_lr_pred)
print('斜率:',lr.coef_)
print('截距:',lr.intercept_)
print('均方误差:',error_lr)

得出结果:
斜率: [[-0.10652353 0.1248883 0.02144814 0.08447264 -0.1851724 0.3015255
-0.00436415 -0.33801186 0.28858221 -0.23677719 -0.19424453 0.07916941
-0.43398872]]
截距: [4.18819804e-15]
均方误差: 22.04257921621329

② 梯度下降法SGDRegressor

sgd=SGDRegressor()
sgd.fit(x_train,y_train)
y_sgd_pred=std.inverse_transform(sgd.predict(x_test))
error_sgd=mean_squared_error(std.inverse_transform(y_test),y_sgd_pred)
print('斜率:',sgd.coef_)
print('截距:',sgd.intercept_)
print('均方误差:',error_sgd)

梯度下降法SGDRegressor结果:
斜率: [-0.08556966 0.08415892 -0.02406228 0.09539855 -0.12186342 0.32945003
-0.01042155 -0.28569839 0.15298948 -0.08681529 -0.18069349 0.07871156
-0.41953704]
截距: [0.00377308]
均方误差: 22.341906975421544

③ Ridge

rd=Ridge(alpha=1.0)
rd.fit(x_train,y_train)
print(rd.coef_)
print(rd.intercept_)
y_rd_pred=std.inverse_transform(rd.predict(x_test))
print('岭回归下均方误差:',mean_squared_error(std.inverse_transform(y_test),y_rd_pred))

Ridge结果:
斜率:[[-0.10546956 0.12265543 0.01810155 0.08491327 -0.18178902 0.30268784
-0.00504133 -0.33433398 0.27964259 -0.2279551 -0.19351241 0.07916974
-0.43224374]]
截距:[4.19852261e-15]
岭回归下均方误差: 21.982909442895018

4.保存模型

joblib.dump(rd,'./ri.pkl')

结论

由于boston房价数据量不大,使用LinearRegression预测效果比SGDRegressor梯度下降法效果要好。

使用boston房价数据进行线性回归分析相关推荐

  1. R语言第七讲 线性回归分析案例

    题目 MASS 库中包含 Boston (波士顿房价)数据集,它记录了波士顿周围 506 个街区的 medv (房价中位数).我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数), age ...

  2. 线性回归分析-回归算法

    线性回归分析-回归算法 1 回归算法   机器学习中监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型.连续性而定义的.回归算法用于目标是连续的,在指定区间内可以是任意一个数 ...

  3. matlab一元线性回归分析_建模开讲:一元线性回归分析及SPSS软件实现

    主讲内容:一元线性回归分析及SPSS软件实现 主讲时间:2020年3月28日(周六)上午9:00 直播平台:腾讯课堂 主讲人:么彩莲 链接地址:点击下面的"阅读原文"可以获得直播地 ...

  4. 手把手教线性回归分析(附R语言实例)

    本文长度为8619字,建议阅读15分钟 本文为你介绍线性回归分析. 通常在现实应用中,我们需要去理解一个变量是如何被一些其他变量所决定的. 回答这样的问题,需要我们去建立一个模型.一个模型就是一个公式 ...

  5. excel多元线性拟合_Python一元线性回归分析实例:价格与需求的相关性

    来自烟水暖的学习笔记 回归分析(Regression analysis) 回归分析(Regression analysis),是研究因变量与自变量之间相关性的一种数学方法,并将相关性量化,即得到回归方 ...

  6. 统计学习:线性回归分析(1)

    统计学习 最近一直在处理数据,发现自己的理论基础不够,在某些小细节上做不好选择. 因此,开始了这趟补习之旅,将学习成果总结出来,也方便大家的学习于讨论. 线性回归分析 线性回归分析,是一个很强大的工具 ...

  7. 从简单的一元线性回归分析入门机器学习

    什么是回归分析 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法.运用十分广泛,回归分析按照涉及的变量的多少,分为一元回归和多元回归分析 ...

  8. spss非线性回归分析步骤_SPSS与简单线性回归分析

    对数据进行简单线性回归分析常按照以下步骤: 1根据研究目的确定因变量和自变量 现研究某服装店销售额和客流量的关系,销售额为因变量,客流量为自变量,共计36条数据. 2 判断有无异常值 判断方法:⑴通过 ...

  9. Python 散点图线性拟合_机器学习之利用Python进行简单线性回归分析

    前言:在利用机器学习方法进行数据分析时经常要了解变量的相关性,有时还需要对变量进行回归分析.本文首先对人工智能/机器学习/深度学习.相关分析/因果分析/回归分析等易混淆的概念进行区分,最后结合案例介绍 ...

  10. 多元线性回归matlab代码_医学统计|多元线性回归分析

    回归分析的定义:回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法.运用十分广泛.其表达形式为y = w'x+e,e为误差服从均值为0的正态分布.回归分析中,只包括一个自变量和一个 ...

最新文章

  1. LeetCode Longest Palindromic Substring
  2. 【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。...
  3. Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)
  4. qtextedit 默认文案_QTextEdit的paste
  5. “集百度AI技术之大成的终极硬件形态”发布
  6. 归并排序(MergeSort)
  7. Excel 2010 VBA 入门 058 定时运行程序
  8. 简单快速将pdf转换成jpg的方法
  9. 系统流程图、数据流程图、IPO图 和甘特图
  10. 结对项目-数独程序扩展
  11. Android微信抢红包功能的实现
  12. monkey测试中防止关闭WIFI的方法
  13. 【图像处理】.jpg 和 .png
  14. 基于MATLAB手写体数字识别程序设计
  15. mywife.cc 神一样的存在!
  16. Java生成动态GIF图片
  17. mysql gman do_Mysql 与Redis的同步实践
  18. R语言patchwork包将多个ggplot2可视化结果组合起来、使用plot_annotation函数为组合图添加标题信息、使用theme函数自定义组合图中的字体类型(family)
  19. 什么样的程序猿适合去创业公司
  20. 五、再次执行hello-world.cc

热门文章

  1. 约4万个外国人名,中英对照
  2. 北京“曼联梦剧场”项目开业,迎接中国球迷与家庭
  3. 曼联携手HCL开发“数字体验平台”,期待大获全胜
  4. 微型计算机的构成部件6,谈谈微机的主要部件与指标
  5. 炒股高手必备抓大牛主图筹码箱体分析指标
  6. psp能装安卓软件吗_PSP模拟器下载_安卓PSP模拟器下载「ppsspp模拟器」-太平洋下载中心...
  7. 触动精灵将图片转成base64字符串后通过post方式上传给服务器
  8. 可视化软件有哪些?各自的优缺点?
  9. \t\t使用Google APP Engine 完成个人代理服务器架设
  10. 算法竞赛入门经典 电子书(附习题解析)网盘下载