注:本文为Machine Learning 的个人学习笔记, 学习站点:Kaggle.com
搭建一个最简单的机器学习模型仅需3步:
- 收集数据,数据清洗 ;
- 特征工程;
- 模型选择、整合,参数调优;
收集数据
墨尔本市房产信息数据都存放在这个csv文件里。
读取数据
import pandas as pd
melbourne_file_path = 'melb_data1.csv'
将csv文件读取到_path变量中方便之后准确调用。
melb_data = pd.read_csv(melbourne_file_path)
melbourne_data.describe()
读取文件之后,可以概览一下数据。
melbourne_data.columns
.columns 会输出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')
信息比较全,有所处郊区、地址、房间数、类型、价格等等。
我们的目标是要以这些数据为基础找出合适的模型来预测其他房产的价格。
所以首先要确立目标 y:
y=melbourne_data.Price
然后便是选择可能会对y造成影响的特征:(先简单选择,后面会更详细的介绍特征工程)
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
选定特征之后便是 modelling 了:
from sklearn.tree import DecisionTreeRegressor
melbourne_model = DecisionTreeRegressor(random_state=0)
melbourne_model.fit(X, y)
这里使用决策树模型来对不同的房屋进行价值分类,在sklearn库中调用DecisionTreeRegressor即可,下图是决策树模型的原理展示:
现在就可以看看模型对前五所房产价格的预测了:
print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))
结果输出完成,那么如何评价这个模型预测的结果准不准确呢?
这里用最简单的一个指标MAE, mean absolute error,预测值和实际值之差的绝对值。
首先从sklearn库中调用MAE:
from sklearn.metrics import mean_absolute_error
用刚构建好的melbourne_model来预测所有的房价,再求出mae:
predicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)
输出结果:1125.1804614629357
误差大概在1000+澳元,相较于1百万左右的总价来说,误差还可以,但是还有更多的方法来提升模型预测的准确性,比如调整数据:处理数据集中的缺失值,选择更好的模型:随机森林、 XGBoost等等。