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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
深入分析在Python模块顶层运行的代码引起的一个Bug
Jul 04 Python
Django实现图片文字同时提交的方法
May 26 Python
python实现简单socket通信的方法
Apr 19 Python
Django实现组合搜索的方法示例
Jan 23 Python
python写入已存在的excel数据实例
May 03 Python
python基于物品协同过滤算法实现代码
May 31 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
python 检查是否为中文字符串的方法
Dec 28 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Python运行DLL文件的方法
Jan 17 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 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
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
php简单压缩css样式示例
2016/09/22 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Python中dict和set的用法讲解
2019/03/28 Python
详解用python写一个抽奖程序
2019/05/10 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python FFT合成波形的实例
2019/12/04 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
旅游项目开发策划书
2014/01/18 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python