Python 機器學習教程: 預測Airbnb 價格(2)

2021-03-02 Python程式設計師

創建一個多變量KNN模型

我們可以對前面的函數進行擴展,來使用兩個特性和整個數據集。代替distance.euclidean(),我們準備使用distance.cdist(),因為它允許我們一次性傳入多個行。 

( cdist()方法可以被用來以多種方法來計算距離,但它默認的是歐氏距離。)

你可以看到,我們的RMSE在使用兩個特性而不是僅僅使用accommodates時從212提高到了122。這是一個巨大的改進,儘管它仍然沒有我們想要的那麼精確。

scikit-learn簡介

我們已經從零開始編寫了函數來訓練我們的k最近鄰模型。這有助於我們理解這些機制是如何允許的,但是現在我們已經了解了基本原理,我們就可以使用Python的scikit-learn庫更快更有效地工作。

Scikit-learn是Python中最流行的機器學習庫。它為所有主要的機器學習算法提供了內置的函數,並提供了一個簡單、統一的工作流。這些特性都允許數據科學家在對一個新數據集進行不同模型的訓練和測試時變得非常高效。

scikit-learn工作流包括四個主要步驟:

實例化你要使用的特定機器學習模型。

將模型與訓練數據相匹配。

使用該模型進行預測。

評估預測的準確性。

scikit-learn中的每個模型都被實現為一個單獨的類,第一步是識別我們想要創建實例的類。

任何幫助我們預測數值的模型,比如我們模型中的房屋出租價格,都被稱為一個回歸模型。機器學習模型的另一個主要類別稱為分類。當我們試圖從一組固定的標籤(例如血型或性別)來預測一個標籤時,就會使用到分類模型。

在本例中,我們希望使用 KNeighborsRegressor 類。來自類名KNeighborsRegressor中的單詞regressor是指我們剛剛討論過的回歸模型類,而「KNeighbors」則來自我們正在構建的k最近鄰模型。

scikit-learn使用類似於Matplotlib的面向對象風格。在調用構造函數執行任何其他操作之前,我們需要先實例化一個空模型。

如果我們參考其文檔,我們會注意到這些默認設置:

n_neighbors:鄰居的數量,設置為5

算法:計算最近的鄰居,設置為auto

p:設置為2,對應歐氏距離

我們將algorithm參數設置為brute,並將n_neighbors值保留為5,這與我們構建的手動實現相匹配。

擬合模型並做出預測

現在,我們可以使用fit方法將模型與數據進行擬合。對於所有模型,fit方法都需要兩個參數:

「類矩陣對象」意味著該方法是靈活的,可以接受一個pandas 的DataFrame或一個NumPy 的二維數組。這意味著我們可以從DataFrame中選擇要使用的列,並將其用作fit方法的第一個參數。

對於第二個參數,回想一下前面的內容,以下所有這些都是可接受的類列表對象:

NumPy數組

Python列表

pandas 的Series對象(例如列)

讓我們從DataFrame中選擇目標列,並將其作為fit方法的第二個參數:

當調用fit()方法時,scikit-learn會存儲我們在KNearestNeighbors實例(knn)中指定的訓練數據。如果我們試圖將包含缺失值或非數值的數據傳入到fit方法中,scikit-learn將返回一個錯誤。這就是這個庫的優點之一——它包含了許多這樣的特性,可以防止我們犯錯誤。

現在我們已經指定了我們想要用來進行預測的訓練數據,我們可以使用predict方法來對測試集進行預測。predict方法只有一個必需的參數:

我們在訓練和測試期間使用的特徵列的數量需要相匹配,否則scikit-learn將返回一個錯誤。

predict()方法會返回一個NumPy數組,其中包含針對測試集的預測的price值。

我們現在已經有了實踐整個scikit-learn工作流所需的一切東西:

當然,僅僅因為我們使用的是scikit-learn而不是手工編寫函數,並不意味著我們可以跳過評估步驟,看看我們模型的預測到底有多準確!

使用scikit-learn計算MSE

到目前為止,我們一直是使用NumPy和SciPy函數來幫助我們手動計算RMSE值。或者,我們也可以使用sklearn.metrics.mean_squared_error function() 函數來代替。

mean_squared_error()函數接受兩個輸入 :

一個類列表對象,表示測試集中的真實值。

第二個類列表對象,表示模型生成的預測值。

從語法的角度來看,這不僅簡單得多,而且由於scikit-learn已經對速度進行了大量優化,因此模型運行所需的時間也更少。

請注意,我們的RMSE與我們手工實現的算法有一點不同——這可能是由於我們的「手工」KNN算法和scikit-learn版本在隨機化方面的差異和實現上的細微差異造成的。

請注意,對scikit-learn庫本身的更改也會在一定程度上影響這些值。如果你正在學習本教程,並且得到了一個稍微不同的結果,這可能是因為你正在使用一個更新版本的scikit-learn。

使用更多的特徵

scikit-learn最棒的一點是它允許我們更快地進行迭代。讓我們通過創建一個使用四個而不是兩個特徵的模型來嘗試一下,看看這個優點是否可以改進我們的結果。

在這種情況下,我們的錯誤會略有下降。不過,當你添加特徵時,它可能並不總是這樣做。需要注意的一件重要的事情是:添加更多的特徵並不一定會產生一個更精確的模型。

這是因為添加一個不能準確預測你的目標變量的特徵會給你的模型增加「噪音」。

總結

讓我們來看看我們學習了什麼:

我們學習了什麼是機器學習,並通過一個非常基本的手工「模型」來預測一個房子的售價。

我們學習了k最近鄰算法,並在Python中從頭開始構建了一個單變量模型(只有一個特徵),並使用它進行預測。

我們了解到RMSE可以用來計算我們的模型的誤差,然後我們可以用它來進行迭代,並嘗試改進我們的預測。

然後,我們從零開始創建一個多變量(不止一個特徵)模型,並使用它做出更好的預測。

最後,我們學習了scikit-learn庫,並使用KNeighborsRegressor類進行預測。

接下來的步驟

果你想繼續自己研究這個模型,你可以做以下幾件事來提高其準確性:

本文更新於2019年7月。

英文原文:https://www.dataquest.io/blog/machine-learning-tutorial/ 
譯者:好酒不上頭

相關焦點

  • Python機器學習·微教程
    Python目前是機器學習領域增長最快速的程式語言之一。該教程共分為11小節。
  • 手把手:用Python搭建機器學習模型預測黃金價格
    新年第一天,讓我們嘗試用python搭建一個機器學習線性回歸模型,預測金價!自古以來,黃金一直作為貨幣而存在,就是在今天,黃金也具有非常高的儲藏價值,那麼有沒有可能預測出黃金價格的變化趨勢呢?我們將建立一個機器學習線性回歸模型,它將從黃金ETF (GLD)的歷史價格中獲取信息,並返回黃金ETF價格在第二天的預測值。GLD 是最大的以黃金進行直接投資的ETF交易基金。
  • Python機器學習課程(代碼與教程)
    完成機器學習的教程。目的機器學習作為人工智慧的一種工具,是應用最廣泛的科學領域之一。大量關於機器學習的文獻已經發表。本項目的目的是通過提供一系列使用python的簡單而全面的教程來幫助讀者學習機器學習。在這個項目中,我們使用許多不同的機器學習框架 (如Scikit-Learning) 構建我們的教程。
  • Python機器學習教程
    在本教程的最後,您不會成為機器學習方面的專家,但是您將能夠製作能夠執行複雜任務(例如,預測房屋價格或從尺寸識別虹膜的種類)的機器學習模型。花瓣和萼片的長度。如果您還不是一個完整的初學者,並且對機器學習有所了解,那麼我建議您從子主題八開始,即機器學習類型。在進入本教程之前,您應該熟悉Pandas和NumPy。這對於理解實現部分很重要。
  • 利用 Python,四步掌握機器學習
    另一個學習Python的經典方法是通過 learnpythonthehardway ,一個為廣大 Python 編程者所推薦的網站。然後還有一個優秀的 PDF, byte of python 。python社團還為初學者準備了一個Python資源列表list of python resources。同時,還有來自 O』Reilley 的書籍 《Think Python》,也可以從這裡免費下載 。
  • 2018AI學習清單丨150個最好的機器學習和Python教程
    機器學習的發展可以追溯到1959年,有著豐富的歷史。這個領域也正在以前所未有的速度進化。在今年秋季,開始準備博士項目的時候,精選了一些有關機器學習和NLP的優質網絡資源。為了幫助也在經歷類似探索過程的童鞋,Robbie Allen把至今發現的最好的教程匯總了一個列表。公眾號後臺回覆:「清單」,獲取本文學習清單地址。
  • 《Python 機器學習》-Python Machine Learning(附電子版 pdf)
    》,機器學習與預測分析正在改變企業和其他組織的運作方式,本書將帶領讀者進入預測分析的世界。一、作者簡介:Sebastian Raschka:有多年的 Python 編碼經驗,舉辦了幾次關於數據科學、機器學習和深度學習的實踐應用的研討會,包括在 Scipy 的機器學習教程
  • python機器學習預測分析核心算法.pdf
    AI項目體驗地址 https://loveai.tech《Python機器學習 預測分析核心算法》內容簡介  在學習和研究機器學習的時候,面臨令人眼花繚亂的算法,機器學習新手往往會不知所措。本書從算法和Python語言實現的角度,幫助讀者認識機器學習。
  • 《Python 機器學習》-Python Machine Learning第一版+第二版(附電子版 pdf)
    》,機器學習與預測分析正在改變企業和其他組織的運作方式,本書將帶領讀者進入預測分析的世界。一、作者簡介:Sebastian Raschka:有多年的 Python 編碼經驗,舉辦了幾次關於數據科學、機器學習和深度學習的實踐應用的研討會,包括在 Scipy 的機器學習教程
  • 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • Python網絡爬蟲教程+數據分析+機器學習
    程式設計師小樂 舉報   前段時間,小夥伴多次在後臺留言詢問Python爬蟲教程
  • 開源《Python 機器學習》-Python Machine Learning第一版+第二版(附電子版 pdf)
    》,機器學習與預測分析正在改變企業和其他組織的運作方式,本書將帶領讀者進入預測分析的世界。一、作者簡介:Sebastian Raschka:有多年的 Python 編碼經驗,舉辦了幾次關於數據科學、機器學習和深度學習的實踐應用的研討會,包括在 Scipy 的機器學習教程
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 《Python 機器學習》第一版+第二版(附電子版 pdf)
    》,機器學習與預測分析正在改變企業和其他組織的運作方式,本書將帶領讀者進入預測分析的世界。一、作者簡介:Sebastian Raschka:有多年的 Python 編碼經驗,舉辦了幾次關於數據科學、機器學習和深度學習的實踐應用的研討會,包括在 Scipy 的機器學習教程
  • 200種機器學習教程匯總!
    我將這篇文章分為四個部分:機器學習,NLP,Python和數學。我在每個部分都包含了一些主題,但由於機器學習是一個非常複雜的學科,我不可能包含所有可能的主題。如果有很好的教程你知道我錯過了,請告訴我!我將繼續完善這個學習教程。
  • 小白python機器學習之路(一)
    對的,就是這麼直接,理解了什麼是機器學習,才能更好的學習機器學習。(怎麼像是繞口令。。)機器學習就是利用算法,從數據中尋找一定的模式和知識,並對看似結果不可知的事件做出預測。從自然科學專業學生的角度而言,我們更關注如何從實驗中獲取數據,而機器學習更關注獲得數據之後的事情。我們處理實驗數據的理論基礎是統計學,而機器學習可以理解為更「高級」的統計學,從數據到結論,是機器學習所關注的事情。
  • 跟著吳恩達老師學習機器學習,Python筆記分享!
    如果你想要聽吳恩達的機器學習課程,你是可以免費旁聽完整課程想多少次就多少次的。我們開始吧!線性回歸最簡單的機器學習算法。此算法是基於一個高中講的很基本的直線公式:">Y = AX + B沒忘吧?忘了也無所謂。這是一個很簡單的公式。這是解釋為什麼這個簡單公式可以被用來做預測的完整文章。
  • Python & 機器學習項目集錦 | GitHub Top 45
    通過這個教程,你可以了解如何使用Python讀取和導入Excel文件,如何將數據寫入這些電子表格。作者:Karlijn Willems連結:https://www.datacamp.com/community/tutorials/finance-python-trading⑱ Python 中的金融教程—股票價格及相關數據介紹
  • Python機器學習入門實例
    本文來源《Python程序設計案例教程——從入門到機器學習(微課版)》1.
  • 學python?不是一個python入門教程就行,學之前你必須知道這些
    機器學習:這也是python最有魅力的地方,善於做圖形分析,算法建模等等。所以python在人工智慧,機器學習的領域有著讀到的優勢。看重前景方向:那麼學python大數據分析或是python機器學習。其中大數據分析相對容易,python提供的是語言的環境,數據分析會有許多對應的工具包,會包含各種分析模型,隨著經驗積累會很熟練照到對應項目的分析模型。