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 urlopen 使用小示例
Sep 06 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
pandas多级分组实现排序的方法
Apr 20 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python插入排序算法实例分析
2015/07/03 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python脚本处理空格的方法
2016/08/08 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Django中使用Celery的教程详解
2018/08/24 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
C++程序员求职信范文
2014/04/14 职场文书
维稳承诺书
2015/01/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
民事上诉状范文
2015/05/22 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python