码迷,mamicode.com
首页 > 编程语言 > 详细

Python - 线性回归(Linear Regression) 的 Python 实现

时间:2020-01-14 09:25:47      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:sep   模拟   get   dict   数据源   cto   rmi   for   href   

背景

学习 Linear Regression in Python – Real Python,前面几篇文章分别讲了“regression怎么理解“,”线性回归怎么理解“,现在该是实现的时候了。

线性回归的 Python 实现:基本思路

  • 导入 Python 包: 有哪些包推荐呢?
  • 准备数据
  • 建模拟合
  • 验证模型的拟合度
  • 预测:用模型来预测新的数据

实现细节

以最简单的线性回归为例,代码参考的是原文。

重点是掌握基本思路,以及关键的几个函数。影响拟合度的因素很多,数据源首当其冲,模型的选择也是关键,这些在实际应用中具体讨论,这里就简单的对应前面的基本思路将 sample 代码及运行结果贴一下,稍加解释。

安装并导入包

根据自己的需要导入

pip install scikit-learn
pip install numpy
pip install statsmodels

from sklearn.preprocessing import PolynomialFeatures
import numpy as np
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm

准备数据

""" prepare data
x: regressor
y: predictor
reshape: make it two dimentional - one column and many rows
y can also be 2 dimensional
"""

x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
"""
[[ 5]
 [15]
 [25]
 [35]
 [45]
 [55]] 
"""
y = np.array([5, 20, 14, 32, 22, 38])
print(x, y)
# [ 5 20 14 32 22 38]

建模

'''create a model and fit it'''
model = LinearRegression()
model = model.fit(x, y)
print(model)
# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

验证模型的拟合度

'''get result
y = b0 + b1x
'''
r_sq = model.score(x, y)
print('coefficient of determination(??2) :', r_sq)
# coefficient of determination(??2) : 0.715875613747954
print('intercept:', model.intercept_)
# (标量) 系数b0 intercept: 5.633333333333329 -------this will be an array when y is also 2-dimensional
print('slope:', model.coef_)
# (数组)斜率b1 slope: [0.54]        ---------this will be 2-d array when y is also 2-dimensional

预测

'''predict response
given x, get y from the model y = b0+b1x
'''
y_pred = model.predict(x)
print('predicted response:', y_pred, sep='\n')
#predicted response:
#[8.33333333 13.73333333 19.13333333 24.53333333 29.93333333 35.33333333]

'''forecast'''
z = np.arange(5).reshape((-1, 1))
y = model.predict(z)
print(y)
#[5.63333333 6.17333333 6.71333333 7.25333333 7.79333333]

问题

Reference

Changelog

  • 2020-01-14 init

    本文由博客一文多发平台 OpenWrite 发布!

Python - 线性回归(Linear Regression) 的 Python 实现

标签:sep   模拟   get   dict   数据源   cto   rmi   for   href   

原文地址:https://www.cnblogs.com/learnbydoing/p/12190168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!