当前位置:主页 > python教程 > python实现机器学习多元线性回归详解

python实现机器学习多元线性回归总结

发布:2019-06-08 09:37:46 172


本站收集了一篇相关的编程文章,网友吕小妍根据主题投稿了本篇教程内容,涉及到python、多元线性回归、元线性回归、python实现机器学习多元线性回归详解相关内容,已被177网友关注,涉猎到的知识点内容可以在下方电子书获得。

python实现机器学习多元线性回归详解

总体思路与一元线性回归思想一样,现在将数据以矩阵形式进行运算,更加方便。
一元线性回归实现代码
下面是多元线性回归用Python实现的代码:

import numpy as np

def linearRegression(data_X,data_Y,learningRate,loopNum):
 W = np.zeros(shape=[1, data_X.shape[1]])
 # W的shape取决于特征个数,而x的行是样本个数,x的列是特征值个数
 # 所需要的W的形式为 行=特征个数,列=1 这样的矩阵。但也可以用1行,再进行转置:W.T
 # X.shape[0]取X的行数,X.shape[1]取X的列数
 b = 0

 #梯度下降
 for i in range(loopNum):
  W_derivative = np.zeros(shape=[1, data_X.shape[1]])
  b_derivative, cost = 0, 0

  WXPlusb = np.dot(data_X, W.T) + b # W.T:W的转置
  W_derivative += np.dot((WXPlusb - data_Y).T, data_X) # np.dot:矩阵乘法
  b_derivative += np.dot(np.ones(shape=[1, data_X.shape[0]]), WXPlusb - data_Y)
  cost += (WXPlusb - data_Y)*(WXPlusb - data_Y)
  W_derivative = W_derivative / data_X.shape[0] # data_X.shape[0]:data_X矩阵的行数,即样本个数
  b_derivative = b_derivative / data_X.shape[0]


  W = W - learningRate*W_derivative
  b = b - learningRate*b_derivative

  cost = cost/(2*data_X.shape[0])
  if i % 100 == 0:
   print(cost)
 print(W)
 print(b)

if __name__== "__main__":
 X = np.random.normal(0, 10, 100)
 noise = np.random.normal(0, 0.05, 20)
 W = np.array([[3, 5, 8, 2, 1]]) #设5个特征值
 X = X.reshape(20, 5)  #reshape成20行5列
 noise = noise.reshape(20, 1)
 Y = np.dot(X, W.T)+6 + noise
 linearRegression(X, Y, 0.003, 5000)

特别需要注意的是要弄清:矩阵的形状

在梯度下降的时候,计算两个偏导值,这里面的矩阵形状变化需要注意。

梯度下降数学式子:

python实现机器学习之多元线性回归

以代码中为例,来分析一下梯度下降中的矩阵形状。
代码中设了5个特征。

python实现机器学习之多元线性回归

WXPlusb = np.dot(data_X, W.T) + b

W是一个1*5矩阵,data_X是一个20*5矩阵
WXPlusb矩阵形状=20*5矩阵乘上5*1(W的转置)的矩阵=20*1矩阵

W_derivative += np.dot((WXPlusb - data_Y).T, data_X)

W偏导矩阵形状=1*20矩阵乘上 20*5矩阵=1*5矩阵

b_derivative += np.dot(np.ones(shape=[1, data_X.shape[0]]), WXPlusb - data_Y)

b是一个数,用1*20的全1矩阵乘上20*1矩阵=一个数


参考资料

相关文章

  • python XlsxWriter模块创建aexcel表格的代码讲解

    发布:2020-03-30

    这篇文章主要介绍了关于python XlsxWriter模块创建aexcel表格,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下


  • python利用跳板机ssh远程连接redis的方法

    发布:2023-01-13

    给网友朋友们带来一篇关于python的教程,今天小编就为大家分享一篇python利用跳板机ssh远程连接redis的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • 详解如何利用Python进行客户分群分析

    发布:2023-03-25

    每个电子商务数据分析师必须掌握的一项数据聚类技能,如果你是一名在电子商务公司工作的数据分析师,从客户数据中挖掘潜在价值,来提高客户留存率很可能就是你的工作任务之一。这篇就来告诉你如何将客户分成不同的群组,并在一段时间内观察每个群组的留存率


  • Python 中 Pandas 文件操作和读取 CSV 参数详解

    发布:2023-03-14

    CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据,这篇文章主要介绍了Python 之 Pandas 文件操作和读取 CSV 参数详解,需要的朋友可以参考下


  • Python实现简单文本字符串处理的实例讲解

    发布:2020-01-30

    这篇文章主要介绍了Python实现简单文本字符串处理的方法,涉及Python针对文本字符串的切割、计算、转换等相关操作技巧,需要的朋友可以参考下


  • python爬虫需要学哪些东西

    发布:2020-01-27

    学习Python爬虫,首先要掌握Python基础知识,了解爬虫的大概流程:爬取—解析—存储!接下来要学习html和MySQL的相关知识,最后将这些知识综合运用。


  • Python字符串拼接的方法总结(代码)

    发布:2022-09-07

    给大家整理一篇关于Python 字符串的教程,本篇文章给大家带来的内容是关于Python字符串拼接的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。​


  • Python3中省略号(...)用法介绍

    发布:2023-04-10

    本文主要介绍了Python3中省略号(...)用法介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


网友讨论