注:本文為Machine Learning 的個(gè)人學(xué)習(xí)筆記剂公, 學(xué)習(xí)站點(diǎn):Kaggle.com
搭建一個(gè)最簡(jiǎn)單的機(jī)器學(xué)習(xí)模型僅需3步:
- 收集數(shù)據(jù)希俩,數(shù)據(jù)清洗 ;
- 特征工程纲辽;
- 模型選擇颜武、整合,參數(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ù)移怯、類(lèi)型、價(jià)格等等这难。
我們的目標(biāo)是要以這些數(shù)據(jù)為基礎(chǔ)找出合適的模型來(lái)預(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)
這里使用決策樹(shù)模型來(lái)對(duì)不同的房屋進(jìn)行價(jià)值分類(lèi)姻乓,在sklearn庫(kù)中調(diào)用DecisionTreeRegressor即可嵌溢,下圖是決策樹(shù)模型的原理展示:
現(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()))
結(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庫(kù)中調(diào)用MAE:
from sklearn.metrics import mean_absolute_error
用剛構(gòu)建好的melbourne_model來(lái)預(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百萬(wàn)左右的總價(jià)來(lái)說(shuō)旱易,誤差還可以禁偎,但是還有更多的方法來(lái)提升模型預(yù)測(cè)的準(zhǔn)確性,比如調(diào)整數(shù)據(jù):處理數(shù)據(jù)集中的缺失值阀坏,選擇更好的模型:隨機(jī)森林如暖、 XGBoost等等。