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函数参数*args**kwargs用法实例
Dec 04 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
关于Python错误重试方法总结
Jan 03 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下对字符串的递增运算代码
2010/08/21 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
对Python中画图时候的线类型详解
2019/07/07 Python
详解Python time库的使用
2019/10/10 Python
Django视图扩展类知识点详解
2019/10/25 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
存储过程的优点有哪些
2012/09/27 面试题
如何进行有效的自我评价
2013/09/27 职场文书
行政助理岗位职责
2013/11/10 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
体育教师求职信
2014/05/24 职场文书
学校食品安全实施方案
2014/06/14 职场文书
初中学校对照检查材料
2014/08/19 职场文书
长城英文导游词
2015/01/30 职场文书
任命书怎么写
2015/03/02 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书