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 30 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
opencv python图像梯度实例详解
Feb 04 Python
jupyter note 实现将数据保存为word
Apr 14 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 Python
Pytorch可视化的几种实现方法
Jun 10 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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配置文件路径的实现方法
2016/08/30 PHP
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
python处理cookie详解
2014/02/07 Python
Python合并字符串的3种方法
2015/05/21 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Django中FilePathField字段的用法
2020/05/21 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
自行车广告词大全
2014/03/21 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
投标保密承诺书
2014/05/19 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
违纪开除通知书
2015/04/25 职场文书
Python编写nmap扫描工具
2021/07/21 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL