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魔术方法详解
Feb 14 Python
在Python中使用模块的教程
Apr 27 Python
详解Python中用于计算指数的exp()方法
May 14 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
20行python代码实现人脸识别
May 05 Python
Django如何实现上传图片功能
Aug 16 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
Python无头爬虫下载文件的实现
Apr 02 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
深入了解Python 方法之类方法 & 静态方法
Aug 17 Python
Elasticsearch 基本查询和组合查询
Apr 19 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
德生PL660的电路分析和打磨
2021/03/02 无线电
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php发送post请求的三种方法
2014/02/11 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
PHP中SESSION过期设置
2021/03/09 PHP
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
python实现ip查询示例
2014/03/26 Python
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
基于python的列表list和集合set操作
2019/11/24 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
python算的上脚本语言吗
2020/06/22 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
实习自我鉴定模板
2013/09/28 职场文书
小学英语教学反思
2014/01/30 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
接收函格式
2015/01/30 职场文书
车间安全生产管理制度
2015/08/06 职场文书