决策树(DecisionTree)如果leaf太多的话容易overfitting
若leaf太少的话则容易underfitting
但是随机森林(Random Forests)演算法 可以解决这个问题
并且随机森林(Random Forests)预设的参数就可以表现得很好了
import pandas as pd
# 读取资料
melbourne_file_path = './Dataset/melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
# 处理缺失值
melbourne_data = melbourne_data.dropna(axis=0)
# 选择目标以及特徵
y = melbourne_data.Price
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'BuildingArea',
'YearBuilt', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]
from sklearn.model_selection import train_test_split
# 切分资料成训练资料和验证资料,feature和target都要切分
# 这是使用随机切分的,设定random_stated可以确保每次切分的资料都是一样的
train_X, val_X, train_y, val_y = train_test_split(X, y,random_state = 0)
在scikit-learn中,建立随机森林演算法的方法和决策树的方法是很像的
只是我们用的是RandomForestRegressor
而不是DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
forest_model = RandomForestRegressor(random_state=1)
forest_model.fit(train_X, train_y)
melb_preds = forest_model.predict(val_X)
print(mean_absolute_error(val_y, melb_preds))
191669.7536453626
DecisionTree的误差平均(mean error)约为250,000
而Random Forest则为191,669
以这样的比较来看,已经获得了很大的进步
<<: 黑死病消灭欧洲一半人口,对14世纪的社会造成什麽影响? #文章心得 #接续前篇
>>: Day 19 利用transformer自己实作一个翻译程序(一)
前言 在上一章节中,笔者讲解了如和切换使用者以及取得最高的root使用者权限,接下来要讲解的是本地端...
今天来了解字串的操作方法有哪些,至少读过或操作一次,或许未来有哪些情境可以用到。 charAt() ...
如果有一些编写网页的基础,在之後撰写爬虫程序时会比较轻松呦~ 接下来的几天,会简单地介绍HTML与C...
前 11 天已经将常见的 concurrency patterns 介绍完毕,今天我们要介绍的不是 ...
前言 嗨大家好,今天是铁人赛的第 27 天,也是本系列 Three.js 最後一篇罗,照惯例,最後一...