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的Twisted框架中Deferred对象的用法
May 25 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
Python实现购物系统(示例讲解)
Sep 13 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
Python读写锁实现实现代码解析
Nov 28 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
MySQL相关说明
2007/01/15 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
js控制table合并具体实现
2014/02/20 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
python config文件的读写操作示例
2019/09/27 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
2014年勤工助学工作总结
2014/11/24 职场文书
出国留学导师推荐信
2015/03/26 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
app场景下uniapp的扫码记录
2022/07/23 Java/Android