1. 程式人生 > >python實現線性迴歸.md

python實現線性迴歸.md

python實現線性迴歸

一、相關數學推導

1.問題描述

所謂線性迴歸,就是給你一批資料比如房子的面積以及房子的價格,然後你所做的就是找到一條線能儘量的擬合這一批資料。如下所示。

這裡寫圖片描述

其中紅色點就是給出的資料集合,有size代表面積,而price代表價格,紅色點點就代表實際統計的資料,而線性迴歸的目的就在於找到那條最好的綠色直線,能使得這個綠色直線與所有紅色點的差距最小。

2. 誤差函式引出

上面可以看出我們要找到一條綠色的直線來擬合紅色的點,在這裡我假設這條綠色直線為: h

θ ( x ) = θ 0 + θ
1
x h_\theta(x) = \theta_0 +\theta_1x ,這個函式也叫做假設函式,因為這條是我假設出來的,那麼這個假設函式和真正的資料的距離可以使用歐式距離表示出來(當然你也可以使用其他的方式表示) 1 2
m i = 1 m h θ ( x i ) y i \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^i) - y^i)
,這裡計算的就是所有樣本點的誤差值,其中m代表所有紅色點的個數,而 x i , y i x^i ,y^i 代表著第i個樣本數,也就是第i個紅色點的橫座標以及縱座標,在有了上面的引入後,自然而然就得到了相應的誤差函式為 J ( θ 0 , θ 1 ) = 1 2 m i = 1 m h θ ( x i ) y i J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^i) - y^i) 其中 h θ ( x ) = θ 0 + θ 1 x h_\theta(x) = \theta_0 +\theta_1x ,所以我們現行迴歸的問題本質就是找到對應的 θ 0 , θ 1 \theta_0,\theta_1 使得 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) 最小化。

3. 梯度下降法

在求解最小化的過程中有一種方法叫做梯度下降法。讓我們先看一下簡單的梯度下降的過程,假如現在誤差函式為 J = θ 2 J = \theta ^2 ,假如目前我們 θ \theta 的初始化為2,那麼梯度下降的方式就是按照斜率(導數)的方向向下走,即 θ = θ α d J d θ \theta = \theta -\alpha \frac {dJ}{d\theta} ,其中 α \alpha 代表學習率,你可以看做每次減小是的步長,如果 α \alpha 比較大那麼下降會快,小的話下降會慢,對於這個例子來說就是 θ = 2 α 2 2 \theta = 2- \alpha *2*2 ,如果我們取 α = 0.3 \alpha = 0.3 那麼經過這個梯度下降後 θ \theta 更新為0.8,而根據 J = θ 2 J = \theta ^2 的影象我們可以看出 J J 是在朝著最低點的方向走去。

在這裡插入圖片描述

4. 對我們的誤差函式進行梯度下降

在有了2、3的結論下,我們就可以對我們的誤差函式進行梯度下降了,這樣通過多次的迭代我們就能找到相應的 θ 0 , θ 1 \theta_0 ,\theta_1 是的我們的誤差函式最小。

這裡寫圖片描述

所以剩下的事情就是求出來 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) θ 0 , θ 1 \theta_0,\theta_1 的導數,這裡需要高等數學的知識,在這裡直接給出結論。

在這裡插入圖片描述

藍色框中的內容就是 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) θ 0 , θ 1 \theta_0,\theta_1 的偏導數,而前面 α \alpha 對應還是學習率。

5.問題矩陣化

其實在有了4的結論我們就可以直接程式設計了,但是由於更新 θ \theta 的時候兩個式子不同,並且裡面還有累加,所以導致我們計算不方便,所以這裡就把整個問題矩陣話,這樣的話我們使用python編寫程式就可以直接使用numpy進行矩陣操作,而不使用for迴圈,並且還可以通過小技巧是的兩個更新只變成一個矩陣的更新。

在這裡我們把所有的樣本紅色點的 x x 變成一個 m 1 m*1 的向量 X X ,每一行代表相應紅色點的size ,同樣的把 y y 也變成一個 m 1 m*1 的向量 Y Y ,而把 θ 0 θ 1 \theta_0 和 \theta_1 變成一個2*1的列向量 θ \theta ,這樣就發生一個有趣的事情,你會發現給 X X 左邊進行擴充一列1,那麼你用 X θ X *\theta 後得到一個 m 1 m*1 的向量,這個向量的每一行其實就是 θ 0 + θ 1 x \theta_0 + \theta_1 x 也就是我們上面所謂的假設函式,在這裡我們通過矩陣你發現可以一次性計算出m個假設函式,並且通過矩陣化給 X X 擴充一列,就能消除 θ 0 , θ 1 \theta_0,\theta_1

相關推薦

python實現線性迴歸.md

python實現線性迴歸 一、相關數學推導 1.問題描述 所謂線性迴歸,就是給你一批資料比如房子的面積以及房子的價格,然後你所做的就是找到一條線能儘量的擬合這一批資料。如下所示。 其中紅色點就是給出的資料集合,有size代表面積,而price代表價格,紅色點點就代表

Python實現線性迴歸2,梯度下降演算法

接上篇 4.梯度下降演算法 《斯坦福大學公開課 :機器學習課程》吳恩達講解第二課時,是直接從梯度下降開始講解,最後採用向量和矩陣的方式推導瞭解析解,國內很多培訓視訊是先講解析解後講梯度下降,個人認為梯度下降演算法更為重要,它是很多演算法(邏輯迴歸、神經網路)都可

機器學習經典演算法詳解及Python實現--線性迴歸(Linear Regression)演算法

(一)認識迴歸 迴歸是統計學中最有力的工具之一。機器學習監督學習演算法分為分類演算法和迴歸演算法兩種,其實就是根據類別標籤分佈型別為離散型、連續性而定義的。顧名思義,分類演算法用於離散型分佈預測,如前

Python實現線性迴歸和邏輯迴歸演算法

本文使用python實現了線性迴歸和邏輯迴歸演算法,並使用邏輯迴歸在實際的資料集上預測疝氣病症病馬的死亡率(當然這裡我們的線性迴歸和邏輯迴歸實現是原生的演算法,並沒有考慮正則化係數問題,後期會將其補充完整)。 一、線性迴歸 1.模型表示 2.損失函式

迴歸演算法——python實現線性迴歸

演算法簡介 給定資料集D={(x1,y1),(x2,y2),…,(xm,ym)},一共有m個樣本,其中每個樣本有d個屬性,即xi = (xi1,xi2,…,xid)。線性迴歸是試圖學到一個線性模型 f(x) = w1*x1+w2*x2+…+wd*xd + b以

8種方法用Python實現線性迴歸,為你解析最高效選擇

來源:大資料文摘編譯:丁慧、katherine Hou、錢天培作者:TirthajyotiSar

一文教你全面掌握用Python實現線性迴歸

全文共4968字,預計學習時長15分鐘或更長 本文旨在為讀者理解和應用線性迴歸時提供參考。雖然線性迴歸演算法很簡單,但是隻有

c++實現線性迴歸(高斯消元)(附python實現

前言 寫這次blog的契機是上次筆試的時候,遇到了這個問題 當時以為numpy庫是可以用的,就先寫了個python版,結果並不能用。。 最後憤然寫了個c++版 不過最後一個小問題導致我差了兩分鐘沒交上去程式碼,所以這一版原始碼只是通過了案例但沒有提交ac。。

python實現線性回歸

__main__ .sh wax 多少 高斯分布 p s margin def gre 一、 必備的包 一般而言,這幾個包是比較常見的: • matplotlib,用於繪圖 • numpy,數組處理庫 • pandas,強大的數據分析

機器學習經典算法具體解釋及Python實現--線性回歸(Linear Regression)算法

ica single 方便 最好的 而且 == show des fun (一)認識回歸 回歸是統計學中最有力的工具之中的一個。機器學習監督學習算法分為分類算法和回歸算法兩種,事實上就是依據類別標簽分布類型為離散型、連續性而定義的。顧名思義。分類算法用於離散型分布

python實現線性回歸(一)原理

函數 乘法 學習 偏移量 python實現 機器 線性 計算 梯度 線性回歸是機器學習的基礎,用處非常廣泛,在日常工作中有很大作用。 1.什麽是線性回歸 通過多次取點,找出符合函數的曲線,那麽就可以完成一維線性回歸。 2.數學表示 是截距值,為偏移量。 因為單純計算多項

matlab實現線性迴歸成績預測

目的 1. 熟悉matlab基本語法。 2. 使用matlab進行繪圖。 3. 複習線性迴歸於梯度下降。 資料集 與之前的文章,樸素貝葉斯實現成績等級分類相同,也是某市一模考試成績(只保留了語文英語數學和總分) 假設函式 等號的左側代表預測的成績,左側(θ0,θ

機器學習實現——線性迴歸

線性迴歸,作為機器學習入門,比較好理解,小學數學中y=kx+b到研究生階段開始進行了深度研究,之前用兩對引數確定兩個未知數,現在用n對引數來估計一套近似值,不過由於未知數的數量,以及線性模型的不確定,要讓線性迴歸達到一個預測未來還是相當有難度的。隨著一些重要的模型和深度學習的引入,線性迴歸雖

tensorflow實現線性迴歸和邏輯迴歸

關於線性迴歸和邏輯迴歸的原理和python實現,請左轉:邏輯迴歸、線性迴歸。 這裡就直接貼程式碼了。 線性迴歸: # -*- coding: utf-8 -*- """ Created on Thu Aug 30 09:40:50 2018 @author: 96jie """ im

基於sciket-learn實現線性迴歸演算法

線性迴歸演算法主要用來解決迴歸問題,是許多強大的非線性模型的基礎,無論是簡單線性迴歸,還是多元線性迴歸,思想都是一樣的,假設我們找到了最佳擬合方程(對於簡單線性迴歸,多元線性迴歸對應多個特徵作為一組向量)y=ax+b,則對於每一個樣本點xi,根據我們的直線方程,預測值為y^i = axi + b,真

用梯度下降法實現線性迴歸

import math import matplotlib.pyplot as plt import random #不懂 def sum_of_gradient(x, y, thetas): """計算梯度向量,引數分別是x和y軸點座標資料以及方程引數""" m = len(x);

python線性迴歸預測股票價格

線性迴歸在整個財務中廣泛應用於眾多應用程式中。在之前的教程中,我們使用普通最小二乘法(OLS)計算了公司的beta與相對索引的比較。現在,我們將使用線性迴歸來估計股票價格。 線性迴歸是一種用於模擬因變數(y)和自變數(x)之間關係的方法。通過簡單的線性迴歸,只有一個自變數x

4、python簡單線性迴歸程式碼案例(完整)

第一、迴歸分析的步驟 01 根據預測目標,確定自變數和因變數 02 繪製散點圖,確定迴歸模型型別 03 估計模型引數,建立迴歸模型 04 對迴歸模型進行檢驗 迴歸方程的精度就是用來表示實際觀測點和迴歸方程的擬合程度的指標,使用判定係數來度量。 判定係數=相關係數R平方=ESS

TensorFlow 實現線性迴歸

1、生成高斯分佈的隨機數 匯入numpy模組,通過numpy模組內的方法生成一組在方程 y = 2 * x + 3 周圍小幅波動的隨機座標。程式碼如下: 1 import numpy as np 2 import matplotlib.pyplot as plot 3 4 5 def g

【深度學習】線性迴歸(三)使用MXNet深度學習框架實現線性迴歸

文章目錄 概述 程式碼 概述 這篇文章使用MXNet深度學習框架中的Gluon包實現小批量隨機梯度下降的線性迴歸問題。可以參考我的上一篇文章【深度學習】線性迴歸(二)小批量隨機梯度下降及其python實現。 主要包