随机森林(Random Forest)是一种集成学习方法,特别用于分类、回归和其他任务,它通过构建多个决策树(Decision Trees)在训练时进行预测,并采用平均或多数投票的方式来提高整体模型的准确性和鲁棒性。随机森林是由Leo Breiman和Adele Cutler提出的,它结合了Bagging(Bootstrap Aggregating)的思想和随机特征选择来构建决策树的集合。
随机森林的工作过程可以概括为以下几个步骤:
自助采样(Bootstrap sampling):从原始数据集中使用有放回的抽样方式随机选择N个样本,形成一个训练集。这个过程重复进行多次,每次生成的训练集都用来构建一个新的决策树。
随机选择特征:在构建决策树的每个分裂节点时,不是查看所有特征来选择最佳分裂特征,而是随机选择一部分特征候选集,并从中选择最佳分裂特征。这一步增加了模型的随机性,有助于提高模型的泛化能力。
构建决策树:对于每个训练集,构建一个决策树。决策树在训练过程中不进行剪枝,允许它们尽可能地生长到最大深度。
汇总结果:
随机森林因其出色的准确性、鲁棒性和易用性,在各种领域得到了广泛的应用,包括但不限于:
- #coding=utf-8
- #RandomForestClassifier.py
- import numpy as np
- import pandas as pd
- from sklearn.model_selection import train_test_split
- from sklearn.ensemble import RandomForestClassifier
-
- # 加载数据
- filename="./glass.data"
- glass_data = pd.read_csv(filename,index_col=0,header=None)
- # 先从DataFrame中取出数组值(.value),只是为了方便后面显示
- X,y = glass_data.iloc[:,:-1].values, glass_data.iloc[:,-1].values
- #X,y = glass_data.iloc[:,:-1], glass_data.iloc[:,-1]
- # 划分训练集与测试集
- X_train, X_test, y_train, y_test = train_test_split(
- X, y, shuffle=True, stratify=y, random_state=1)
-
- # 建立模型
- rfc = RandomForestClassifier(max_depth=4,bootstrap=True,
- random_state=0)
- rfc.fit(X_train, y_train)
- print("训练集准确率:",rfc.score(X_train,y_train))
- print("测试集准确率:",rfc.score(X_test,y_test))
- print("测试集前2个样本的预测分类标签:",rfc.predict(X_test[:2]))
- print("测试集前2个样本的真实分类标签:",y_test[:2])
- print("测试集前2个样本所属标签概率的预测值:\n",
- rfc.predict_proba(X_test[:2]),sep="")
-