機器學習sklearn線性回歸

2021-02-20 碼洞

回歸算法是機器學習的一個基礎算法,簡單的就是線性回歸,還有非線性回歸。本節我們講解簡單的線性回歸。

線性回歸就是用直線來描述兩個變量之間的線性關係。我們在中學時可以根據平面上的兩個點來計算出通過這兩個點的直線。而線性回歸呢跟這個類似,只不過這裡有無窮多個點,我們知道一條直線一般是不能同時通過這無窮多個點的,所以呢,線性回歸要求這條直線像下面的圖所顯示的那樣能大致通過這些點就可以。而回歸的目標就是使得直線儘量不要偏離這些點太遠。因為直線要照顧所有的點,所以要有一個整體性的表達式來衡量直線偏離所有點的程度。然後我們調整直線的係數,使得這個偏離程度表達式最小化。

其中的數學化公式小編不做詳細講解,雖然線性回歸是機器學習算法中最簡單的一個,但是其數學表達也超出了很多菜鳥的理解範圍。不過我可以做一下簡單的說明

上文提到的直線偏離所有點的程度,這個偏離程度在機器學習裡有一個專門的詞彙叫著損失,而表達這種損失的表達式叫著損失函數。我們的目標是最小化損失函數。

當我們定義線性回歸的損失函數是每個點到直線的距離的平方和時,這種線性回歸算法稱之為最小二乘法。

下面我們使用sklearn提供的LinearRegression[最小二乘法]模塊來練練手,先使用virtualenv安裝一下sklearn,如果網絡不好,下面的過程可能會比較長,請耐心等待。

mkdir -p ~/source/skl
cd ~/source/sklvirtualenv .py --python=python2.7
source .py/bin/activatepip install sklearnpip install scipy  # 科學計算
pip install matplotlib  # 畫圖
pip install ipython # 命令行工具

我們先用y=5x+2直線生成100個點,還要加上浮動,避免所有的點能連成一條直線。

# -*- coding: utf-8 -*-
import random
import matplotlib.pyplot as plt

xs = range(100)
ys = []for x in xs:    y.append(5*x+2+random.random()*50)  # random加上浮動
plt.scatter(xs, ys, marker='.')  # 畫點
plt.show()  # 顯示圖形窗口

於是畫圖窗口打開了,我們看到

接下來我們開始使用sklearn的線性回歸模塊

# -*- coding: utf-8 -*-
import random
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

xs = range(100)
ys = []for x in xs:    ys.append(5*x+2+random.random()*50) # 生成隨機散點
model = LinearRegression()
model.fit([[x] for x in xs], ys) # 擬合直線,*轉換輸入為多維*
ys_ = model.predict([[x] for x in xs])  # 預測所有的樣本
plt.scatter(xs, ys, marker='.')  # 畫樣本點,隨機散點
plt.scatter(xs, ys_, marker='+')  # 畫預測點,直線點
plt.show()

於是我們看到一條完美的黃色直線生成了

機器學習的目的是從輸入數據中習得一個模型,然後用這個模型去預測世界。在本例中,模型是一條直線以及直線的係數,LinearRegressionModel是該模型的一個封裝。模型有fit方法灌入輸入數據,進行複雜的數學計算後,模型就訓練出來了。然後我們就可以使用predict方法去預測世界。例子中我們通過輸入數據本身和模型對輸入數據的預測進行了圖形比對,直觀上就可以看出這是一個正確的直線擬合。

線性回歸的每條輸入是一個數據對(x,y),x在本例中是一個數值,在實際應用中x則是一個數組,它代表中輸入對象的多維屬性。比如顏色對象的RGB就有三個值。例子中擬合的是一條直線,實際應用中擬合的則是一個多維平面。所以代碼中我們對輸入xs做了轉換[[x] for x in xs]將輸入x轉換成多維形式,否則模型不接受輸入。

閱讀相關文章,關注公眾號【碼洞】

相關焦點

  • sklearn機器學習心得—線性回歸|粉絲投稿1
    ,也是重要的算法之一,基本上第一次接觸的機器學習算法就是線性回歸了。因為相對其他算法而言,我覺得線性回歸是相對比較容易的算法,從某種意義上來說,在學習函數的時候已經開始接觸線性回歸了,只不過那個時候並沒有涉及到誤差項,其實在中學的時候就有接觸了,學習的最小二乘法就是啦~~1).對於坐標系中給定的點,我們希望用一條線或是一個類似於:f(x)=θ0+θ1*x1+θ2*x2_...θn*xn 方程來擬合這寫數據點,這就是我們說的回歸了2).這次我們要用的是
  • 應用sklearn工具做線性回歸分析
    一元線性回歸分析(1) 一元線性回歸的基本概念當只探究一個自變量和一個因變量之間的數學關係,同時兩變量之間為線性關係時,所建立的回歸模型為一元線性回歸模型,可用如下公式表示:Y = bX+a 多元線性回歸分析自然界的萬事萬物都是相互聯繫和關聯的
  • 使用sklearn實現多元線性回歸
    使用sklearn實現多元線性回歸多元線性回歸import pandas
  • 機器學習第1天:線性回歸(代碼篇)
    提取花瓣數據下面我們提取數據集中花瓣寬度與花瓣長度數據,將花瓣數據分為訓練數據與測試數據,訓練數據用於訓練線性回歸模型,測試數據用於檢測我們的模型的準確率。最終我們要達到的效果是:輸入花瓣寬度,通過模型預測花瓣寬度。
  • sklearn學習(二):邏輯回歸
    從線性回歸到邏輯回歸        我們知道,線性回歸的模型是求出輸出特徵向量Y和輸入樣本矩陣X之間的線性關係係數θ,滿足Y=Xθ。此時我們的Y是連續的,所以是回歸模型。如果我們想要Y是離散的話,怎麼辦呢?一個可以想到的辦法是,我們對於這個Y再做一次函數轉換,變為g(Y)。
  • python機器學習--線性回歸
    python機器學習--線性回歸線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於一個給定的訓練集數據,線性回歸的目的就是找到一個與這些數據最吻合的線性函數。針對線性回歸算法在之前的數模案例也有涉及喔,歡迎去看看上一篇博客數學建模預測模型實例--大學生體測數據模型在這裡插入圖片描述OLS線性回歸Ordinary Least Squares 最小二乘法一般情況下,線性回歸假設模型為下,其中w為模型參數
  • 機器學習 | 線性回歸大家族Part1
    今天推出機器學習系列筆記第20期,本期分享內容為:機器學習之線性回歸大家族Part1。(筆者使用的是Windows系統)sklearn中的線性回歸大家族1 概述1.1 線性回歸大家族 回歸是一種應用廣泛的預測建模技術,這種技術的核心在於預測的結果是連續型變量。
  • 【sklearn機器學習】——應用機器學習的建議
    總結了使用機器學習解決新問題的一些建議。包括:可視化數據的方法選擇一個適合當前問題的機器學習方法鑑別和解決過擬合和欠擬合問題處理大資料庫問題(注意:不是非常小的)不同損失函數的利弊本文以 Andrew Ng 的《Advice for applying Machine Learning》為基礎。
  • 二.線性回歸(二)
    2.APIsklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01) 支持不同的loss函數和正則化懲罰項來擬合線性回歸模型參數 loss
  • 多重線性回歸
    python多重線性回歸分析多重線性回歸分析定義>多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:Multivariate Linear Regression數據準備#多重線性回歸
  • python線性回歸
    一.理論基礎1.回歸公式  對於單元的線性回歸,我們有:f(x) = kx + b 的方程(k代表權重,b代表截距)。
  • 各種線性回歸
    一.sklearn中的各種線性回歸1,普通線性回歸
  • 15 分鐘帶你入門 sklearn 與機器學習(分類算法篇)
    邏輯回歸 (Logistic regression)邏輯回歸,儘管他的名字包含"回歸",卻是一個分類而不是回歸的線性模型。邏輯回歸在文獻中也稱為logit回歸,最大熵分類或者對數線性分類器。下面將先介紹一下sklearn中邏輯回歸的接口:class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=
  • sklearn入門教程:監督學習流程與線性分類器
    根據目標預測變量的類型不同,我們可以把監督學習任務大體分為分類學習(預測一個分類標籤)與回歸預測(函數輸出是一個連續的值)兩類。監督學習任務的基本架構和流程可以如下圖所示:首先準備訓練數據,可以是統計數據或文本、圖像、音頻等;然後抽取所需要的特徵(featureextractor),形成特徵向量(features),或者稱該過程為矢量化;接著,把這些特徵向量連同對應的標記/目標(label)一併送入機器學習算法,例如分類模型(machinelearning algorithm
  • 用 Scikit-Learn 和 Pandas 學習線性回歸
    ,這裡給出一個完整的例子,詳細學完這個例子,對用scikit-learn來運行線性回歸,評估模型不會有什麼問題了。:) 這裡我們用UCI大學公開的機器學習數據來跑線性回歸。我們的問題是得到一個線性的關係,對應PE是樣本輸出,而AT/V/AP/RH這4個是樣本特徵, 機器學習的目的就是得到一個線性回歸模型,即:PE=θ_0+θ_1*AT+θ_2*V+θ_3*AP+θ_4*RH而需要學習的,就是θ_0、θ_1、θ_2、θ_3、θ_4這5個參數。2.
  • 使用python+sklearn實現保序回歸
    保序回歸能非遞減近似一個函數,同時使訓練數據的均方誤差最小。這種模型的好處是它不採取任何形式的目標函數,如線性函數。為方便比較,本文還給出了一種線性回歸方法。import LinearRegressionfrom sklearn.isotonic import IsotonicRegressionfrom sklearn.utils import check_random_staten = 100x = np.arange(n)rs = check_random_state(0)y = rs.randint(-50, 50, size=(n,)
  • 什麼是機器學習Sklearn​?這是我見過的做通俗易懂的解釋
    首先注意到兩個詞 computer program 和 learn,翻譯成中文就是機器 (電腦程式) 和學習,再把上面英譯中:假設用性能度量 P 來評估機器在某類任務 T 的性能,若該機器通利用經驗 E 在任務 T 中改善其性能 P,那麼可以說機器對經驗 E 進行了學習。在該定義中,除了核心詞機器和學習,還有關鍵詞經驗 E,性能度量 P 和任務 T。
  • 「人工智慧核心之機器學習(3)」——實現Linear Regression
    同樣的在機器學習中,一個重要而且很常見的問題就是學習特徵變量(自變量)與響應變量(因變量)之間的函數關係,進而對新出現的變量進行結果預測。這種尋找連續變量與目標結果間關係的方式稱之為回歸,與上節分享的KNN實現的離散變量的分類,均屬於機器學習有監督算法的核心功能,是實現預測的重要方式。
  • 線性回歸-如何對數據進行回歸分析
    通常,我們的模型是通過多個特徵值來預測一個目標值,那麼線性回歸模型的數學公式為:其中:線性回歸模型與數學中的解方程不同,後者的結果是精確解,而前者則是一個近似解。因此在公式中存在一個 ε 。,之前的文章中,已經多次使用過,這次我們對其使用線性回歸模型進行分析。
  • python多重線性回歸分析
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple模塊中的LinearRegression函數from sklearn.linear_model import LinearRegression#使用線性回歸模型進行建模lrModel= LinearRegression()#使用自變量x和因變量y訓練模型lrModel.fit(x,y)#多重線性回歸