【发布时间】:2021-05-23 21:13:24
【问题描述】:
我正在尝试获取 RF 特征的重要性,我将随机森林拟合到这样的数据上:
model = RandomForestRegressor()
n = model.fit(self.X_train,self.y_train)
if n is not None:
df = pd.DataFrame(data = n , columns = ["Feature","Importance_Score"])
df["Feature_Name"] = np.array(self.X_Headers)
df = df.drop(["Feature"], axis = 1)
df[["Feature_Name","Importance_Score"]].to_csv("RF_Importances.csv", index = False)
del df
但是,n 变量返回None,为什么会出现这种情况?
【问题讨论】:
-
我知道获得 RF 特征重要性的 3 种方法mljar.com/blog/feature-importance-in-random-forest (1) 您可以使用内置重要性 (2) 基于排列的重要性或 (3) 基于 SHAP 的重要性。我正在使用基于排列的重要性。所有方法都对特征之间的高度相关性很敏感。
-
感谢您的回复。但是,您所说的高相关性是什么意思,我的意思是什么是标准?例如,它是否高于 0.7?另外,如果我的特征确实高度相关怎么办?
-
检查特征之间的相关性,然后检查是否没有选择高度相关的特征之一作为最不重要。高度相关意味着大约 > 0.8
-
感谢您的评论。我尝试了前两种方法,他们得到几乎相同的结论。但是,我检查了 0.62 的最大值的相关性我不知道它是否是高相关性。我得到的重要性分数值只有一个特征只有 0.85,其余的 0.15 在其他 10 个特征之间划分。因此,我预计只有第一个特征的贡献最大,所以当我放弃其他特征并只训练第一个特征时,我预计会有几乎相同的测试结果,因为其他特征的贡献不大。然而它
-
然而事实并非如此,他在测试数据中的绝对误差百分比从 14.13010% 显着增加至 22.96036%。你对此有什么解释吗?
标签: python pandas random-forest