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类和继承用法实例
Jul 07 Python
python fabric实现远程部署
Jan 05 Python
python flask中静态文件的管理方法
Mar 20 Python
Tensorflow卷积神经网络实例进阶
May 24 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
如何使用python操作vmware
Jul 27 Python
python Django的web开发实例(入门)
Jul 31 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
python 带时区的日期格式化操作
Oct 23 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
Python如何导出导入所有依赖包详解
Jun 08 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输入流php://input介绍
2012/09/18 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
物业管理计划书
2014/01/10 职场文书
企业法人授权委托书
2014/04/03 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
python中取整数的几种方法
2021/11/07 Python
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript