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(Tornado)模拟登录小米抢手机
Nov 12 Python
Python线程指南详细介绍
Jan 05 Python
Python通过future处理并发问题
Oct 17 Python
Python 实现网页自动截图的示例讲解
May 17 Python
Django实战之用户认证(初始配置)
Jul 16 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
适合Python初学者的一些编程技巧
Feb 12 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
python中adb有什么功能
Jun 07 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 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
基于mysql的论坛(5)
2006/10/09 PHP
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
php session的锁和并发
2016/01/22 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
Javascript调用C#代码
2011/01/17 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
vue this.reload 方法 配置
2018/09/12 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
python中global与nonlocal比较
2014/11/21 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python搭建微信公众平台
2016/02/09 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
简单了解python关系(比较)运算符
2019/07/08 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
Linux的主要特性
2014/10/06 面试题
竞选大队长演讲稿
2014/04/29 职场文书