Day 6 [Python ML] 随机森林(Random Forests)演算法

前言

决策树(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自己实作一个翻译程序(一)

第8-1章:管理本地端主机之使用者与群组(三)

前言 在上一章节中,笔者讲解了如和切换使用者以及取得最高的root使用者权限,接下来要讲解的是本地端...

[Day26] String methods 字串操作方法(1)

今天来了解字串的操作方法有哪些,至少读过或操作一次,或许未来有哪些情境可以用到。 charAt() ...

Day11 HTML一

如果有一些编写网页的基础,在之後撰写爬虫程序时会比较轻松呦~ 接下来的几天,会简单地介绍HTML与C...

DAY 12:Concurrency Patterns 融会贯通+Graceful Shutdown,正确关闭各个宇宙的次元门

前 11 天已经将常见的 concurrency patterns 介绍完毕,今天我们要介绍的不是 ...

第二十七章、燃烧吧!Three.js 小宇宙!(伍)

前言 嗨大家好,今天是铁人赛的第 27 天,也是本系列 Three.js 最後一篇罗,照惯例,最後一...