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选择排序算法实例总结
Jul 01 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
jupyter notebook 重装教程
Apr 16 Python
用python实现名片管理系统
Jun 18 Python
python实现批处理文件
Jul 28 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
Python 全局空间和局部空间
Apr 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
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
php中的观察者模式简单实例
2015/01/20 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
python调用c++传递数组的实例
2019/02/13 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
经典c++面试题五
2014/12/17 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
农民致富事迹材料
2014/01/23 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
低碳生活倡议书
2014/04/14 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
共青团员自我评价范文
2014/09/14 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
负责培养人意见
2015/06/05 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
mysql 排序失效
2022/05/20 MySQL