Python实现的线性回归算法示例【附csv文件下载】


Posted in Python onDecember 29, 2018

本文实例讲述了Python实现的线性回归算法。分享给大家供大家参考,具体如下:

用python实现线性回归

Using Python to Implement Line Regression Algorithm

小菜鸟记录学习过程

代码:

#encoding:utf-8
"""
  Author:   njulpy
  Version:   1.0
  Data:   2018/04/09
  Project: Using Python to Implement LineRegression Algorithm
"""
import numpy as np
import pandas as pd
from numpy.linalg import inv
from numpy import dot
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn import linear_model
# 最小二乘法
def lms(x_train,y_train,x_test):
  theta_n = dot(dot(inv(dot(x_train.T, x_train)), x_train.T), y_train) # theta = (X'X)^(-1)X'Y
  #print(theta_n)
  y_pre = dot(x_test,theta_n)
  mse = np.average((y_test-y_pre)**2)
  #print(len(y_pre))
  #print(mse)
  return theta_n,y_pre,mse
#梯度下降算法
def train(x_train, y_train, num, alpha,m, n):
  beta = np.ones(n)
  for i in range(num):
    h = np.dot(x_train, beta)       # 计算预测值
    error = h - y_train.T         # 计算预测值与训练集的差值
    delt = 2*alpha * np.dot(error, x_train)/m # 计算参数的梯度变化值
    beta = beta - delt
    #print('error', error)
  return beta
if __name__ == "__main__":
  iris = pd.read_csv('iris.csv')
  iris['Bias'] = float(1)
  x = iris[['Sepal.Width', 'Petal.Length', 'Petal.Width', 'Bias']]
  y = iris['Sepal.Length']
  x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
  t = np.arange(len(x_test))
  m, n = np.shape(x_train)
  # Leastsquare
  theta_n, y_pre, mse = lms(x_train, y_train, x_test)
  # plt.plot(t, y_test, label='Test')
  # plt.plot(t, y_pre, label='Predict')
  # plt.show()
  # GradientDescent
  beta = train(x_train, y_train, 1000, 0.001, m, n)
  y_predict = np.dot(x_test, beta.T)
  # plt.plot(t, y_predict)
  # plt.plot(t, y_test)
  # plt.show()
  # sklearn
  regr = linear_model.LinearRegression()
  regr.fit(x_train, y_train)
  y_p = regr.predict(x_test)
  print(regr.coef_,theta_n,beta)
  l1,=plt.plot(t, y_predict)
  l2,=plt.plot(t, y_p)
  l3,=plt.plot(t, y_pre)
  l4,=plt.plot(t, y_test)
  plt.legend(handles=[l1, l2,l3,l4 ], labels=['GradientDescent', 'sklearn','Leastsquare','True'], loc='best')
  plt.show()

输出结果

Python实现的线性回归算法示例【附csv文件下载】

sklearn: [ 0.65368836  0.70955523 -0.54193454  0.        ]
 LeastSquare: [ 0.65368836  0.70955523 -0.54193454  1.84603897]
 GradientDescent: [ 0.98359285  0.29325906  0.60084232  1.006859  ]

附:上述示例中的iris.csv文件点击此处本站下载

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python简单实现enum功能的方法
Apr 25 Python
Python使用sorted排序的方法小结
Jul 28 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
Python基础教程之利用期物处理并发
Mar 29 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python框架django项目部署相关知识详解
Nov 04 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
python把一个字符串切开的实例方法
Sep 27 Python
Pycharm中如何关掉python console
Oct 27 Python
Python实现自动整理文件的脚本
Dec 17 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 #Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 #Python
Python实现高斯函数的三维显示方法
Dec 29 #Python
Python3 SSH远程连接服务器的方法示例
Dec 29 #Python
使用python绘制3维正态分布图的方法
Dec 29 #Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 #Python
对python指数、幂数拟合curve_fit详解
Dec 29 #Python
You might like
PHP 5.0 Pear安装方法
2006/12/06 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
python默认参数调用方法解析
2020/02/09 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
北京SQL新华信咨询
2016/09/30 面试题
shell的种类有哪些
2015/04/15 面试题
大学生创业计划书的格式要求
2013/12/29 职场文书
2014年大学生自我评价
2014/01/19 职场文书
社团活动总结书
2014/06/27 职场文书
集体生日活动方案
2014/08/18 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
学校通报表扬范文
2015/05/04 职场文书
入党积极分子群众意见
2015/06/01 职场文书
如何在Python中创建二叉树
2021/03/30 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
用Java实现简单计算器功能
2021/07/21 Java/Android