1. 程式人生 > >小白自學——房價預測(六)

小白自學——房價預測(六)

資料分析(三)

接下來我們再探究各個順序變數(ordinal variable)和price之間的關係,用斯皮爾曼等級相關係數(Spearman’s rank-order correlation)來計算相關性

plt.figure(figsize=(12, 10))
plt.subplot(211)
sns.boxplot(y='bathrooms', x='price', data=kc_train, orient='h')
plt.subplot(212)
sns.boxplot(y='grade', x='price', data=kc_train, orient='h')
plt.show()

在這裡插入圖片描述 這裡我們可以看出,bathrooms和garde等連續變數是具有等級的特性,我們就可以用斯皮爾曼相關係數來計算他們的與price的相關性。

from scipy.stats import spearmanr

r, p = spearmanr(kc_train['floors'], kc_train['price'])
print ('floors 和 price 斯皮爾曼相關係數為 %s,其中 p = %s' %(r,p))
r, p = spearmanr(kc_train['bedrooms'], kc_train['price'])
print ('bedrooms 和 price 斯皮爾曼相關係數為 %s,其中 p = %s' %(r,p))
r, p = spearmanr(kc_train['bathrooms'], kc_train['price'])
print ('bathrooms 和 price 斯皮爾曼相關係數為 %s,其中 p = %s' %(r,p))
r, p = spearmanr(kc_train['grade'], kc_train['price'])
print ('grade 和 price 斯皮爾曼相關係數為 %s,其中 p = %s' %(r,p))

a,b:是一維或二維陣列,b是可選的。 axis:整型或者空值,如果axis = 0(預設值),則每列代表一個變數,並在行中進行觀察。如果axis = 1,則轉換關係:每行代表一個變數,而列包含觀察值。 nan_policy : {‘propagate’, ‘raise’, ‘omit’}, 都是可選的,定義輸入包含nan時的處理方式。'propagate’返回nan,'raise’丟擲錯誤,‘omit’執行忽略nan值的計算。預設為’propagate’。 在這裡插入圖片描述 我們就可以得出以下幾個結論: 連續變數中sqft_living、sqft_above、sqft_basement與price之間存在極強的相關關係 二元變數basement_present、renovated與price之間存在一定的相關關係,但是關聯度較小 幾個順序變數(floors、bedrooms、bathrooms、grade)都與price之間存在相關關係。

這裡講個知識點——斯皮爾曼(spearman)相關係數和皮爾森(pearson)相關係數的區別。 1.連續資料,正態分佈,線性關係,用pearson相關係數是最恰當,當然用spearman相關係數也可以,效率沒有pearson相關係數高。 2.上述任一條件不滿足,就用spearman相關係數,不能用pearson相關係數。 3.兩個定序測量資料之間也用spearman相關係數,不能用pearson相關係數。

pearson相關通常是用來計算等距及等比資料或者說連續資料之間的相關的,這類資料的取值不限於整數,如前後兩次考試成績的相關就適合用pearson相關。 spearman相關專門用於計算等級資料之間的關係,這類資料的特點是資料有先後等級之分但連續兩個等級之間的具體分數差異卻未必都是相等的,比如第一名和第二名的分數差就未必等於第二名和第三名的分數差。兩次考試的排名資料適用於spearman相關。 spearman相關只能計算等級資料,但pearson相關卻既可以用來算等級相關,也可以算連續資料的相關,只不過一般預設用pearson相關計算連續資料的相關。 如果資料中沒有重複值, 並且當兩個變數完全單調相關時,斯皮爾曼相關係數則為+1或−1。 Pearson相關係數(Pearson CorrelationCoefficient)是用來衡量兩個資料集合是否在一條線上面,它用來衡量定距變數間的線性關係。