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设计模式编程中建造者模式的使用
Mar 02 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
Python基于mysql实现学生管理系统
Feb 21 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
flask 实现token机制的示例代码
Nov 07 Python
python3 求约数的实例
Dec 05 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
javascript add event remove event
2008/04/07 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
Python Socket使用实例
2017/12/18 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python 实现控制鼠标键盘
2020/11/27 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
学生干部培训方案
2014/06/12 职场文书
物理教育专业求职信
2014/06/25 职场文书
借款民事起诉状范文
2015/05/19 职场文书