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

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

首先导入模块:

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_) # 最优参数

最后得到的结果是:

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

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

你可能感兴趣的:(机器学习,算法,随机森林)