天天看點

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

特征處理完成之後,用sklearn中的SelectKBest方法選擇最佳特征:

from sklearn.feature_selection import SelectKBest

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

0 什麼是卡方檢驗

卡方檢驗主要用于分類變量之間的獨立性檢驗,換言之,就是檢驗兩個變量之間有沒有關系。

例如,研究學曆對收入的影響是否顯著性;

男性或者女性對線上買生鮮食品有沒有差別;

不同的治療方法是否有明顯效果。

基本思想是根據樣本資料推斷總體分布與期望分布是否有顯著性差異,或者推斷兩個分類變量是否相關或者獨立。

一般可以設原假設為 :觀察頻數與期望頻數沒有差異,或者兩個變量互相獨立不相關。

實際應用中,我們先假設原假設成立,計算出卡方值,卡方表示觀察值與理論值間的偏離程度。

1 卡方值計算公式

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

A是觀察值,即真實統計值;

E是理論值(期望頻數),即假設兩個變量不相關情況下的期望值。

例如,我們通過問卷調查的方式得到如下資料,展示了大學和研究所學生收入是否過萬的人數。

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

首先,假設學曆和收入過萬兩個變量不想關,我們先計算收入過萬和不過萬人數的分布。

收入過萬人數 = 收入過萬人數/(收入過萬人數 + 收入不過萬人數)=501/813=62%

然後計算大學收入過萬和研究所學生收入過萬人數的理論值,即大學和研究所學生收入過萬的人數都是總計*62%。

大學收入過萬理論值=581*62%=360

其餘的計算類似。

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇
python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

卡方值 X2=28.797

2 卡方檢驗

卡方檢驗分四步,檢驗兩個變量是否關聯

1 計算卡方值

2 求自由度 (行數 - 1)*(列數 - 1)

3 設定顯著性水準值

4 根據以上計算結果查表

顯著性水準是假設檢驗中的一個概念,是指當原假設為正确時人們卻把它拒絕了的機率或風險。

它是公認的小機率事件的機率值,必須在每一次統計檢驗之前确定,通常取α=0.05或α=0.01。

這表明,當作出接受原假設的決定時,其正确的可能性(機率)為95%或99%。

這裡我們計算的卡方值是28.797

自由度計算為1

顯著性水準為0.05

查表可得28.797 > 3.841,說明原假設在0.05的顯著性水準下是可以拒絕的,就是說原假設不成立,學曆和收入兩個變量相關。

python 卡方檢驗 特征選擇_卡方檢驗進行特征選擇

原文連結:https://blog.csdn.net/weixin_39198406/article/details/100553385