數據分析——特徵工程之特徵關聯

參考 House Price中的most voted文章 https://www.kaggle.com/pmarcelino/comprehensive-data-exploration-with-python

以House Price數據集爲例,在對特徵相關性進行探究時,主要通過以下三個方面:

 

一、特徵的相關矩陣

  • 特徵的相關矩陣
  • 目標的相關矩陣
  • 畫出最相關的特徵之間的關係
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv('./data/train.csv')
corr_mat = df.corr()
f, ax = plt.subplots(figsize=(12, 9))
sns.heatmap(corr_mat, vmax=.8, square=True, ax=ax)
plt.show()

通過這個熱力圖,可以很直觀的對各個特徵之間的關係一目瞭然。另外,從圖中可以看出TotalBsmtSF和1stFlrSF變量之間的相關性很明顯,這就說明了如果同時使用這兩個特徵就會導致信息的冗餘性,所以要儘量避免使用冗餘的特徵。

其中看一下df.corr()函數的源碼:

    def corr(self, method='pearson', min_periods=1):
        """
        Compute pairwise correlation of columns, excluding NA/null values

        Parameters
        ----------
        method : {'pearson', 'kendall', 'spearman'}
            * pearson : standard correlation coefficient
            * kendall : Kendall Tau correlation coefficient
            * spearman : Spearman rank correlation
        min_periods : int, optional
            Minimum number of observations required per pair of columns
            to have a valid result. Currently only available for pearson
            and spearman correlation

        Returns
        -------
        y : DataFrame
        """

默認method參數是pearson,下面介紹下這三種相關係數:

1、Pearson correlation coefficient(皮爾遜相關係數)

皮爾遜相關係數用於度量兩個變量X和Y之間的相關性(線性相關),它的值介於-1和1之間

兩個變量之間的皮爾遜相關係數定義爲兩個變量之間的協方差和標準差的商。

2、Kendall correlation coefficient(肯德爾相關性係數)

它所計算的對象是分類變量。

具體可以參考 https://blog.csdn.net/wsywl/article/details/5889419http://blog.sina.com.cn/s/blog_69e75efd0102wmd2.html

3、Spearman correlation coefficient(斯皮爾曼相關性係數)

它是衡量兩個變量的依賴性的非參數指標。它利用單調方程評價兩個統計變量的相關性,如果數據中沒有重複值,並且兩個變量完全單調相關時,斯皮爾曼相關係數則爲+1或者-1。

二、目標的相關矩陣

找到與目標值相關性最大的幾個特徵,而這幾個特徵之間的相關性要低。

k = 10
cols = corr_mat.nlargest(k, 'SalePrice')['SalePrice'].index
cm = np.corrcoef(df[cols].values.T)
sns.heatmap(cm, annot=True, square=True, yticklabels=cols.values, xticklabels=cols.values)
plt.show()

通過以上代碼得到與目標值相關性最大的前10個值,做出熱力圖。

從圖中可以很明顯地看出OverallQual、GrLivArea等特徵與SalePrice目標值之間有很大的關聯。

三、最相關的特徵之間的關係圖

cols = ['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']
sns.pairplot(df[cols], height = 2.5)
plt.show()

儘管我們已經知道了這些特徵之間的一些關係,但是通過這個圖可以給與一個更充分的理由。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章