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 24 Python
python访问类中docstring注释的实现方法
May 04 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
利用Python破解验证码实例详解
Dec 08 Python
Python绘制KS曲线的实现方法
Aug 13 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
Python 线程池用法简单示例
Oct 02 Python
Django models filter筛选条件详解
Mar 16 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
python 装饰器重要在哪
Feb 14 Python
Python中Permission denied的解决方案
Apr 02 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP实现简单登录界面
2019/10/23 PHP
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Django之PopUp的具体实现方法
2019/08/31 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
使用python远程操作linux过程解析
2019/12/04 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
技校毕业生自荐信范文
2014/03/07 职场文书
12岁生日演讲稿
2014/05/14 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
2015新学期家长寄语
2015/02/26 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
《风筝》教学反思
2016/02/23 职场文书
分家协议书范本
2016/03/22 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
导游词之神仙居景区
2019/11/15 职场文书