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的Supervisor进行进程监控以及自动启动
May 29 Python
python验证码识别的实例详解
Sep 09 Python
TensorFlow实现创建分类器
Feb 06 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
Python map及filter函数使用方法解析
Aug 06 Python
python map比for循环快在哪
Sep 21 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 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
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python实现文本界面网络聊天室
2018/12/12 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python opencv如何实现图片绘制
2020/01/19 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
经营理念口号
2014/06/21 职场文书
理财计划书
2014/08/14 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
Mysql数据库group by原理详解
2022/07/07 MySQL