第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

卡方檢驗(yàn)的計(jì)算

卡方檢驗(yàn)的計(jì)算

明月笑刀無(wú)情 2023-10-18 21:03:58
我試圖了解如何針對(duì)以下輸入計(jì)算 chi2 函數(shù)。sklearn.feature_selection.chi2([[1, 2, 0, 0, 1],                                 [0, 0, 1, 0, 0],                                 [0, 0, 0, 2, 1]], [True, False, False])我得到 chi2 的以下結(jié)果[2, 4, 0.5, 1, 0.25]。我已經(jīng)在維基百科上找到了以下計(jì)算公式(x_i 也被稱(chēng)為觀察值,m_i 被稱(chēng)為預(yù)期值),但我不知道如何應(yīng)用它。我的理解是,我有三個(gè)類(lèi)別的輸入(行)和四個(gè)特征(列),chi2 函數(shù)返回特征和類(lèi)之間是否存在相關(guān)性。第一列表示的特征在第一個(gè)類(lèi)別中出現(xiàn)兩次,并且 chi2 值為 4。我想我已經(jīng)弄清楚的是這些列是相互獨(dú)立的,這是有道理的如果我省略第三行,預(yù)期值將是列的總和,觀察值只是相應(yīng)單元格中的值,但這不適用于最后一列這兩列False似乎以某種方式組合在一起,但我還沒(méi)有弄清楚如何組合。如果有人可以幫助我,我將不勝感激。謝謝!
查看完整描述

2 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

該計(jì)算sklearn.feature_selection.chi2?與卡方獨(dú)立性檢驗(yàn)的典型教科書(shū)示例不同(對(duì)于此類(lèi)經(jīng)典的卡方檢驗(yàn),請(qǐng)參閱下面我提供的手動(dòng)計(jì)算)。


sklearn.feature_selection.chi2:假設(shè)我們有一個(gè)目標(biāo)變量 y(分類(lèi),例如 0, 1, 2)和一個(gè)非負(fù)連續(xù)變量 x(例如,0 到 100 之間的任何位置),并且我們想要測(cè)試 x 和 y 之間的獨(dú)立性(例如,y 獨(dú)立于 x 意味著 x 作為預(yù)測(cè)特征沒(méi)有用)。該算法計(jì)算給定 y 的 x 的組和(例如,sum_x_y0、sum_x_y1、sum_x_y2 - 稱(chēng)它們?yōu)?strong>觀察值),并將這些?觀察值與 x 的概率權(quán)重總計(jì)(例如,prob_y0*x_tot、prob_y1*x_tot、prob_y2* x_tot——稱(chēng)它們為預(yù)期),使用卡方檢驗(yàn),對(duì) y 中的 k 類(lèi)別具有 (k-1) 個(gè)自由度。因?yàn)樗褂每ǚ綑z驗(yàn),所以正如我想象的那樣,它的計(jì)算中不能有負(fù)和。(我不確定這是否有學(xué)術(shù)參考,但這種方法似乎是有意義的。)

這是sklearn 用戶(hù)指南中的示例代碼,用于使用chi2.

from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectKBest

from sklearn.feature_selection import chi2

X, y = load_iris(return_X_y=True)

print(X.shape)


X_new = SelectKBest(chi2, k=2).fit_transform(X, y)

X_new.shape

對(duì)于兩個(gè)分類(lèi)變量之間獨(dú)立性的經(jīng)典卡方檢驗(yàn),這是我的手動(dòng)計(jì)算代碼,它似乎與scipy卡方計(jì)算相匹配。我使用的公式與您上面發(fā)布的相同,但dof是(x - 1 中的 var 級(jí)別)和(y - 1 中的級(jí)別)。

from sklearn.feature_selection import chi2

x = [[1, 2, 0, 0, 1],

? ? ?[0, 0, 1, 0, 0],

? ? ?[0, 0, 0, 2, 1]]

y = [True, False, False]


chi2(x,y)[0]

import numpy as np

def is_val_eq(vec, val): return [i==val for i in vec]


def chi_E(vec1, vec1_val, vec2, vec2_val):?

? ? num1 = sum(is_val_eq(vec1, vec1_val))

? ? num2 = sum(is_val_eq(vec2, vec2_val))

? ? return num1*num2/len(vec1)


def chi_O(vec1, vec1_val, vec2, vec2_val):

? ? idx1 = is_val_eq(vec1, vec1_val)

? ? idx2 = is_val_eq(vec2, vec2_val)

? ? return sum(np.logical_and(idx1, idx2))


def chi_inside(O, E): return (O-E)**2/E


def chi_square(Os, Es): return sum([chi_inside(O,E) for O,E in zip(Os, Es)])


def get_col(x, col): return [row[col] for row in x]


def calc_chi(vec_x, vec_y):

? ? val_xs = set(vec_x)

? ? val_ys = set(vec_y)

? ? Es = [chi_E(vec_x, val_x, vec_y, val_y)?

? ? ? for val_x in val_xs for val_y in val_ys]


? ? Os = [chi_O(vec_x, val_x, vec_y, val_y)?

? ? ? for val_x in val_xs for val_y in val_ys]

? ? return chi_square(Os, Es), Es, Os

from scipy.stats import chi2_contingency?

from scipy import stats


chi_calc = dict(manual=[], scipy_cont=[], scipy_stats=[])


for idx_feature in range(5):

? ? chi_sq, Es, Os = calc_chi(get_col(x, idx_feature), y)

? ? chi_calc['manual'].append(chi_sq)

? ??

? ? data = [Os[0:2], Os[2:4]]

? ? stat, p, dof, expected = chi2_contingency(data, correction=False)

? ? chi_calc['scipy_cont'].append(stat)

? ??

? ? result = stats.chisquare(data, f_exp = expected, ddof = 1, axis=None)

? ? chi_calc['scipy_stats'].append(result.statistic)

直觀上,如果您試圖測(cè)試 的分類(lèi)變量列相x對(duì)于 的獨(dú)立性y,則 的前兩列x應(yīng)該給出相同的統(tǒng)計(jì)量(因?yàn)樗鼈冎皇潜舜说目s放版本,因此在分類(lèi)級(jí)別方面是相同的) 。


查看完整回答
反對(duì) 回復(fù) 2023-10-18
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

我剛剛研究了 scikit-learn 的來(lái)源。計(jì)算實(shí)際上相當(dāng)簡(jiǎn)單。在我的示例中,我們有兩個(gè)類(lèi)(True 和 False)。對(duì)于第二類(lèi),我們有兩個(gè)樣本 ([0, 0, 1, 0, 0][0, 0, 0, 2, 1])。

我們首先列出每個(gè)類(lèi)的一些列,其中給出了觀察到的值:

 True: [1, 2, 0, 0, 1]
 False: [0, 0, 1, 2, 1]

為了計(jì)算預(yù)期值,我們計(jì)算所有列的總和(即在所有類(lèi)中觀察到的特征的總數(shù)),得出[1, 2, 1, 2, 2]。如果我們假設(shè)某個(gè)特征與其所在的類(lèi)別之間沒(méi)有相關(guān)性,則這些值的分布必須與我們擁有的樣本數(shù)量相對(duì)應(yīng)。即,應(yīng)該在類(lèi)和類(lèi)1/3中找到值,這給出了預(yù)期值:True2/3False

 True: 1/3 * [1, 2, 1, 2, 2] = [1/3 2/3 1/3 2/3 2/3]
 False: 2/3 * [1, 2, 1, 2, 2] = [2/3 4/3 2/3 4/3 4/3]

現(xiàn)在可以計(jì)算每一列的 chi2,作為最有趣的最后一列的示例:

(1-2/3)^2 / (2/3) + (1-4/3)^2 / (4/3) = 1/6 + 1/12 = 1/4 = 0.25

0.25 的誤差相對(duì)較小,因此,正如人們所期望的那樣,該特征與類(lèi)別無(wú)關(guān)。


查看完整回答
反對(duì) 回復(fù) 2023-10-18
  • 2 回答
  • 0 關(guān)注
  • 207 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)