在envi做随机森林_【转】随机森林选取特征值

随机森林是一种基于自助采样法构建的集成学习方法,通过训练多棵决策树并结合其预测结果。在特征选择上,通过计算特征的重要性,如袋外数据误差变化,来评估特征对模型的影响。最后,通过迭代剔除低重要性特征,找到最优特征集。

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

随机森林原理

随机森林是一种相当简单、容易理解的方法,他的基本原理就是,从原数据集中有放回的采样获得若干个子集,基于每个子集训练出不同的基分类器,再通过基分类器的投票获得最终的分类结果。随机森林采用自助采样法(bootstrap)获得原数据集的子集,先了解自助采样法有助于我们更好的理解随机森林

自助采样法

给定一个包含 mm 个样本的数据集 DD , 我们对它进行采样产生数据集 D′D′ : 每次随机从 DD 中挑选出一个样本,将其拷贝放入 D′D′ ,然后再将该样本放回初始数据集 DD 中,使得该样本在下次采样中仍有可能被采到;这个过程重复执行 mm 次以后,我们就得到了包含 mm 个样本的数据集 D′D′,这就是自助采样的结果。显然, DD 中有一部分样本会在 D′D′ 中多次出现,而另一部分样本 不出现。可以做一个简单的估计,样本在 mm 次采样中始终不被采到的概率是 (1−1/m)m(1−1/m)m ,该式取极限得到 1/e=0.3681/e=0.368 ,即通过自助采样,初始数据集 D 中约有 36.8% 的样本未出现在数据集D′D′ 中, 于是我们可以将 D′D′ 作为训练集,而剩下的作为测试集

基于自助采样法随机森林的构建过程为:

从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集

对于n_tree个训练集,我们分别训练n_tree个决策树模型

对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂

每棵树都一直这样分裂下去&

### ENVI随机森林特征选择的方法与应用 #### 使用背景 ENVI 是一款广泛应用于遥感图像处理和地理信息系统 (GIS) 的软件平台。随着机器学习技术的发展,越来越多的研究者倾向于在 ENVI 平台中引入先进的机器学习算法来提高影像分类精度和效率。 #### 随机森林简介 随机森林是一种集成学习方法,在构建过程中生成多棵决策树并综合其预测结果作为最终输出[^1]。对于新的样本进行分类时,每棵树独立出判断并通过多数表决决定类别标签;而在回归任务中,则取各棵树预测值的均值作为最终结果。 #### 特征选择流程 为了实现高效的特征选择过程,可以遵循如下几个方面: - **准备训练集**:选取具有代表性的区域作为训练样本地点,并标记好对应的地物类型。 - **导入数据至 ENVI**:加载待分析的数据文件(如高光谱影像),确保波段数量充足以便后续操作。 - **调用随机森林模块** - 打开 `Classification` -> `Supervised Classification` -> `Random Forests Classifier...` - 设置参数选项,包括但不限于最大深度、最小分割节点大小等超参调整以优化性能表现。 - **执行交叉验证**:通过 k 折交叉验证机制评估模型泛化能力,防止过拟合现象发生的同时获取较为可靠的评价指标。 - **计算特征重要性得分**:完成建模之后,借助于内置函数或第三方库统计各个输入维度对目标变量解释力的影响程度,具体表现为平均不纯度减少量(MDI)或其他相似概念[^2]。 ```python import numpy as np from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=0, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) clf = RandomForestClassifier(max_depth=5, random_state=42) clf.fit(X_train, y_train) print(clf.feature_importances_) ``` 此代码片段展示了如何使用 Python 和 scikit-learn 库创建一个简单的随机森林分类器实例,并打印出每个特征的重要性分数。虽然这段代码不是直接针对 ENVI 编写的,但它提供了关于如何编程访问这些功能的概念框架。 #### 结果解读与可视化 得到特征重要性评分后,可以通过柱状图等形式直观展示哪些因素最为关键,从而指导进一步的数据预处理工作,比如去除冗余项或者聚焦重点测量项目上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值