P-값
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 44번째.
p-value는 셔플 결과를 하나의 숫자로 나타냅니다. 즉, 어느 쪽이든 실제 차이만큼 크거나 더 큰 가짜 차이의 비율입니다.
코드에서, 글꼴 연구의 경우:
real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng) # 지난 강의에서 사용한 반복문
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)이것은 0.039를 출력합니다. np.abs는 간격 -7을 크기가 7인 것으로 계산합니다. 여기서 질문은 글꼴이 조금이라도 다른지 여부입니다.
유의수준(흔히 0.05)보다 낮으면, 글꼴이나 모델의 성능 향상을 우연으로 설명하기 어렵습니다. 그렇다고 증명된 것은 아닙니다. 100번의 셔플 중 4번은 여전히 그런 결과가 나왔습니다.
챌린지
중급한 농장에서는 아침이나 저녁에 딸기에 물을 줍니다. 시작 코드는 strawberries.csv를 morning과 evening으로 나누고, columns를 나열하고, level을 읽고, shuffled_diffs를 정의합니다.
- 각 열에 대해 실제 차이(저녁 평균에서 아침 평균을 뺀 값), 섞은 차이(아침 데이터를 먼저 배치)와 p값을 계산합니다.
- 아래와 같이 열마다 한 줄을 출력합니다(차이는 소수점 이하 2자리, p값은 3자리). p값이
level보다 작으면differs를 출력합니다. - 차이가 있는 항목의 수를 셉니다.
다른 농장의 level은 0.05입니다.
berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4직접 해보기
import numpy as np
import pandas as pd
# 순열 검정에서 섞어서 구한 차이들을 반환합니다(lesson 43의 반복문): 가상의 b 평균에서 가상의 a 평균을 뺀 값
def shuffled_diffs(a, b, shuffles, rng):
pooled = np.concatenate([a, b])
diffs = []
for i in range(shuffles):
shuffled = rng.permutation(pooled)
diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
return np.array(diffs)
beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# 아래 줄들을 변경하지 마세요
rng = np.random.default_rng(21)
shuffles = 1000
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러