我想查看变量之间的相关性。首先,我使用了相关矩阵。它显示了所有变量之间的相关性。然后我创建了一个随机森林回归
模型。在一篇文章中,我发现它有一个feature_importances_
函数。它能显示独立变量与依赖变量之间的相关性。所以我尝试了一下,结果发现它显示的相关值与相关矩阵中的值相同。我的问题是,相关矩阵和随机森林特征重要性之间有什么区别呢?
回答:
请查看下面的代码。
from sklearn.datasets import load_bostonfrom sklearn.ensemble import RandomForestRegressorimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt#Load boston housing dataset as an exampleboston = load_boston()X = boston["data"]Y = boston["target"]names = boston["feature_names"]reg = RandomForestRegressor()reg.fit(X, Y)print("Features sorted by their score:")print(sorted(zip(map(lambda x: round(x, 4), reg.feature_importances_), names), reverse=True))boston_pd = pd.DataFrame(boston.data)print(boston_pd.head())boston_pd.columns = boston.feature_namesprint(boston_pd.head())# correlationsboston_pd.corr()import seaborn as snimport matplotlib.pyplot as pltcorrMatrix = boston_pd.corr()sn.heatmap(corrMatrix, annot=True)plt.show()
features = boston.feature_namesimportances = reg.feature_importances_indices = np.argsort(importances)plt.title('Feature Importances')plt.barh(range(len(indices)), importances[indices], color='#8f63f4', align='center')plt.yticks(range(len(indices)), features[indices])plt.xlabel('Relative Importance')plt.show()
因此,特征选择依赖于相关性分析来确定我们应该使用的特征;哪些特征(独立变量)对确定目标变量(依赖变量)有最多的统计影响。相关性是一个统计术语,指的是两个变量在线性关系上的接近程度。特征选择是执行任何机器学习任务的第一步,也是最重要的步骤之一。数据集中的特征是一列数据。在处理任何数据集时,我们必须了解哪一列(特征)将对输出变量有统计显著的影响。如果我们向模型中添加了许多不相关的特征,只会使模型变得更糟(垃圾进,垃圾出)。这就是我们进行特征选择的原因。皮尔逊相关性(特征选择)在确定所有独立变量相对于目标变量(依赖变量)的相关性方面非常流行。