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 相关文章推荐
使用IPython来操作Docker容器的入门指引
Apr 08 Python
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python2.7安装图文教程
Mar 13 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
Python计算信息熵实例
Jun 18 Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 Python
python中四舍五入的正确打开方式
Jan 18 Python
python实现代码审查自动回复消息
Feb 01 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 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
php微信支付接口开发程序
2016/08/02 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
12步教你理解Python装饰器
2016/02/25 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
如何通过python实现人脸识别验证
2020/01/17 Python
python实现飞船大战
2020/04/24 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript