回归问题建模

本文以python内置数据集“波士顿发房价预测”为例,总结常见的回归模型用法。

  • 多元线性回归
  • 多项式回归

一、导入文件

# 导入模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sklearn
from sklearn import datasets
from sklearn.cross_validation import train_test_split
# from sklearn.model_selection import train_test_split,cross_val_score 
file = datasets.load_boston()

# 确定自变量和因变量
x = file.data
y = file.target
x_train, x_test, y_train, y_test = train_test_split(x, y)

二、建模

(一)多元线性回归

原理

通过构建x和y之间的超定方程来预测,使用最小二乘法进行求解。

代码

# 多元线性回归
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train, y_train)
y_model = model.predict(x_test)

(二)多项式回归

线性回归模型拟合直线,多项式拟合曲线。线性回归方程所有变量的指数都是1,多项式( Polynomial /,pɒlɪ'nəʊmɪəl/)回归方程至少有一个变量的指数大于1。

原理

通过构建x和y之间的方程来预测y。
通常情况下,指数越高,在训练集上拟合的点更多,拟合效果更好,但是在未知数据集上面的应用效果差,这就是过拟合。

代码

# 多项式回归
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

PolynomialFeatures = PolynomialFeatures(degree=2)
x_train2 = PolynomialFeatures.fit_transform(x_train) # 重新构建x
x_test2 = PolynomialFeatures.fit_transform(x_test)

model = LinearRegression()
model.fit(x_train2, y_train)
y_model = model.predict(x_test2)

3、岭回归

正则化(Regularization)是用来防止拟合过度的一堆方法。scikit-learn提供了一些方法来使线性回归模型正则化。其中之一是岭回归(Ridge Regression,RR,也叫Tikhonov regularization),通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获
得回归系数更为符合实际、更可靠的回归方法。岭回归增加L2范数项(相关系数向量平方和的平方根)来调整成本函数(残差平方和)。

4、LASSO

5、弹性网

三、评估

1、判定系数r2

R的平方,判定系数,介于0-1之间,越接近1,说明模型效果越好,当模型拟合非常差的时候,可能会出现负值。

# 方法一:
model.score(x_test, y_test) # 在测试集评分
print(cross_val_score(model, x, y,cv=5).mean()) # 采用交叉验证,在整个数据集上评分,无需给model进行fit训练即可使用交叉验证评分。
print(cross_val_score(model, x_train, y_train,cv=5).mean()) # 训练集交叉验证R方值
print(cross_val_score(model, x_test, y_test,cv=5).mean()) # 训练集交叉验证R方值

# 方法二:
from sklearn import metrics
print(metrics.r2_score(y, y_model))

2、均方误差MSE

越小越好

from sklearn import metrics
print('MSE:', metrics.mean_squared_error(y, y_model))

3、平均绝对误差MAE

越小越好

from sklearn import metrics
MAE = metrics.mean_absolute_error(y, y_model)
print('MAE:', MAE)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335