机器学习算法④—【随机森林】超参数调优实现更高预测准确率

本文介绍了如何使用Python的sklearn库实现随机森林算法,包括数据预处理、特征工程、参数设置(如n_estimators和max_depth)、以及通过GridSearchCV进行模型调优。最终结果显示,300棵深度为25的决策树模型在测试集上的准确率为0.78。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机森林是一种强大的集成学习算法,它在决策树的基础上引入了样本抽样和特征抽样两种随机性,通过组合多个决策树来提高模型的性能和泛化能力。接下来我们来实现这种算法:

首先导入模块:

from sklearn.model_selection import train_test_split # 数据集划分
from sklearn.ensemble import RandomForestClassifier # 导入随机森林模型
from sklearn.model_selection import GridSearchCV # 导入网格搜索模型
from sklearn.feature_extraction import DictVectorizer #字典特征抽取

再进行数据导入和清洗:

titan = pd.read_csv(r'E:\AI课程笔记\机器学习\titanic_train copy.csv')
x = titan[["Pclass","Age","Sex"]] # 特征值
y = titan["Survived"] # 目标值
x['Age'].fillna(x['Age'].mean(), inplace=True)

进行特征工程:

vect_1 = DictVectorizer(sparse=False) # 实例化
x_train = vect_1.fit_transform(x_train.to_dict(orient="records")) # 对字典数据进行one-hot编码
x_test = vect_1.transform(x_test.to_dict(orient="records"))

(注意:在这里不需要对y_train进行onehot编码,因为他的数据类型本身可以被计算机识别)

接下来进行模型训练前参数设置:

rf = RandomForestClassifier() # 实例化一个随机森林模型
param = {"n_estimators":[120,200,300,500,800,1200], "max_depth":[5,8,15,25,30]} # 设置超参数 n_estimators表示决策树的个数 max_depth表示决策树的深度
gc = GridSearchCV(rf, param_grid=param, cv=4) # 实例化网格搜索模型

接下来开始训练模型:

gc.fit(x_train, y_train) # 训练模型

计算并输出准确率和最优参数:

print(gc.score(x_test, y_test)) # 准确率
print(gc.best_params_) # 最优参数

最后得到的结果是:

这个结果说明建立300棵决策树,每颗决策树的深度是25的时候,效果最好,准确率为0.78。这比用决策树构造的模型准确率提高了0.01。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字生命Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值