機(jī)器學(xué)習(xí)入門:如何搭建第一個(gè)機(jī)器學(xué)習(xí)模型——以墨爾本房?jī)r(jià)預(yù)測(cè)為例

注:本文為Machine Learning 的個(gè)人學(xué)習(xí)筆記, 學(xué)習(xí)站點(diǎn):Kaggle.com

搭建一個(gè)最簡(jiǎn)單的機(jī)器學(xué)習(xí)模型僅需3步:

  1. 收集數(shù)據(jù),數(shù)據(jù)清洗 ;
  2. 特征工程;
  3. 模型選擇、整合,參數(shù)調(diào)優(yōu);

收集數(shù)據(jù)

墨爾本市房產(chǎn)信息數(shù)據(jù)都存放在這個(gè)csv文件里。

讀取數(shù)據(jù)

import pandas as pd
melbourne_file_path = 'melb_data1.csv'  

將csv文件讀取到_path變量中方便之后準(zhǔn)確調(diào)用。

melb_data = pd.read_csv(melbourne_file_path)
melbourne_data.describe()

讀取文件之后,可以概覽一下數(shù)據(jù)。

melbourne_data.columns

.columns 會(huì)輸出dataframe中所有列的名字:
Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG', 'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car','Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude', 'Longtitude', 'Regionname', 'Propertycount'], dtype='object')

信息比較全,有所處郊區(qū)、地址、房間數(shù)、類型、價(jià)格等等。

我們的目標(biāo)是要以這些數(shù)據(jù)為基礎(chǔ)找出合適的模型來預(yù)測(cè)其他房產(chǎn)的價(jià)格。

所以首先要確立目標(biāo) y:

y=melbourne_data.Price

然后便是選擇可能會(huì)對(duì)y造成影響的特征:(先簡(jiǎn)單選擇,后面會(huì)更詳細(xì)的介紹特征工程)

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']

選定特征之后便是 modelling 了:

from sklearn.tree import DecisionTreeRegressor


melbourne_model = DecisionTreeRegressor(random_state=0)


melbourne_model.fit(X, y)

這里使用決策樹模型來對(duì)不同的房屋進(jìn)行價(jià)值分類,在sklearn庫中調(diào)用DecisionTreeRegressor即可,下圖是決策樹模型的原理展示:


image.png

現(xiàn)在就可以看看模型對(duì)前五所房產(chǎn)價(jià)格的預(yù)測(cè)了:

print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))
image.png

結(jié)果輸出完成,那么如何評(píng)價(jià)這個(gè)模型預(yù)測(cè)的結(jié)果準(zhǔn)不準(zhǔn)確呢?

這里用最簡(jiǎn)單的一個(gè)指標(biāo)MAE, mean absolute error,預(yù)測(cè)值和實(shí)際值之差的絕對(duì)值。

首先從sklearn庫中調(diào)用MAE:

from sklearn.metrics import mean_absolute_error

用剛構(gòu)建好的melbourne_model來預(yù)測(cè)所有的房?jī)r(jià),再求出mae:

predicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)

輸出結(jié)果:1125.1804614629357

誤差大概在1000+澳元,相較于1百萬左右的總價(jià)來說,誤差還可以,但是還有更多的方法來提升模型預(yù)測(cè)的準(zhǔn)確性,比如調(diào)整數(shù)據(jù):處理數(shù)據(jù)集中的缺失值,選擇更好的模型:隨機(jī)森林、 XGBoost等等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容