๋ ํ๋ก
import joblib
from evalml.demos import load_fraud
from evalml.preprocessing.data_splitters import BalancedClassificationDataCVSplit
splitter = BalancedClassificationDataCVSplit(n_splits=3, random_seed=0, shuffle=True)
X, y = load_fraud(5000)
X = X.to_dataframe()
y = y.to_series().astype("int")
for train, test in splitter.split(X, y):
print((joblib.hash(train), joblib.hash(test)))
# Output
('75f1b95d7ce307ac6c793055330969aa', '8c89fe1a592c50a700b6d5cbb02dba8b')
('f8c849bbfbed37c13f66c5c742e237cb', '9c4879fb550fded8be9ac03e95a1bf95')
('cdc21f0d6bbf45459c9695258f7f04dc', '5b575765bbe176e732b8eb4dc1bf2822')
for train, test in splitter.split(X, y):
print((joblib.hash(train), joblib.hash(test)))
# Output
('bf462b82af243c552ac48acad2dfd748', '8c89fe1a592c50a700b6d5cbb02dba8b')
('b8341b536c63c7957c099b05e315f49c', '9c4879fb550fded8be9ac03e95a1bf95')
('780e74673b601790037fc0b17dde56fe', '5b575765bbe176e732b8eb4dc1bf2822')
for train, test in splitter.split(X, y):
print((joblib.hash(train), joblib.hash(test)
# Output
('385f6c538568ad3a33cf84f61d94144c', '8c89fe1a592c50a700b6d5cbb02dba8b')
('8db65d0a3bdf87ae0f135b9766a260dd', '9c4879fb550fded8be9ac03e95a1bf95')
('2a7293fc1308b8a572091d7c76d20205', '5b575765bbe176e732b8eb4dc1bf2822')
์ด๊ฒ์ sklearn ์คํ๋ฆฌํฐ์ ๋์๊ณผ ๋ค๋ฆ ๋๋ค.
from sklearn.model_selection import StratifiedKFold
kfold = StratifiedKFold(n_splits=3, random_state=0, shuffle=True)
for train, test in kfold.split(X, y):
print((joblib.hash(train), joblib.hash(test)))
#Output
('6c30ee6a11803927024354405389506a', '8c89fe1a592c50a700b6d5cbb02dba8b')
('df0a70e2e6ca783f12461e8c82a26ad4', '9c4879fb550fded8be9ac03e95a1bf95')
('2898e4b3d3621b436641016499f4aafb', '5b575765bbe176e732b8eb4dc1bf2822')
for train, test in kfold.split(X, y):
print((joblib.hash(train), joblib.hash(test)))
# Output
('6c30ee6a11803927024354405389506a', '8c89fe1a592c50a700b6d5cbb02dba8b')
('df0a70e2e6ca783f12461e8c82a26ad4', '9c4879fb550fded8be9ac03e95a1bf95')
('2898e4b3d3621b436641016499f4aafb', '5b575765bbe176e732b8eb4dc1bf2822')
๋๋ ์ด๊ฒ์ด ๋ ๊ฐ์ง ์ด์ ๋ก ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
split
๋ ๋ฐ์ดํฐ ์คํ๋ฆฌํฐ์ ์ํ๋ฅผ ์์ ํ๋ฏ๋ก ์์ฐจ ์์ง๊ณผ ๋ณ๋ ฌ ์์ง ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฆ
๋๋ค.์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก, ์ด ํ๋์ ์ ๋ฅผ ๊ดด๋กญํ์ง ์์ต๋๋ค. ํน์ ์๋๋ก ์ด๊ธฐํํ ๋๋ง๋ค ๊ทธ ์์ ์ดํ์ ๋์ผํ ์ถ๋ ฅ ์ํ์ค๋ฅผ ์ป๋ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌด์์ ์๋๋ฅผ ์กด์คํ์ง ์๋๋ค๋ฉด ๊ฑฑ์ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด ๋ฌธ์ ๊ฐ ์ถ์ ํ๋ ๋ด์ฉ์ด ์๋๋๋ค.
๋ด ๊ถ์ฅ ์ฌํญ: ์๋ฌด๊ฒ๋ ํ์ง ๋ง์ญ์์ค. ๋ง๊ทธ๋๋ก ํ์.
@freddyaboulton ์ด ํ๋์ ๋ํด ๋์ํ์ง ์๋๋ค๋ฉด ๋ง์ ๋์.
@dsherry ๋๋ ์ด๊ฒ์ด ๋ ๊ฐ์ง ์ด์ ๋ก ๋ณ๊ฒฝํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ณ๋ ฌ ์๋ ๊ฒ์์ ์ข์ง ์์ต๋๋ค.
2์ ๋ํด ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ํ์ฌ ๋์์ผ๋ก ์์ฐจ ์์ง์ ๊ฒ์ ์ ๋ฐ์ ๊ฑธ์ณ ๋ฐ์ดํฐ ์คํ๋ฆฌํฐ์ ์ํ๋ฅผ ์์ ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ณ๋ ฌ evalml์์ ๋ฐ์ดํฐ ์คํ๋ฆฌํฐ๋ฅผ ํผํดํ๊ณ ์์ ์์๊ฒ ๋ณด๋ด ๋ถํ ์ ๊ณ์ฐํฉ๋๋ค. ์์ ์๋ ์คํ๋ฆฌํฐ์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์๋ ๋ฐ์ดํฐ ์คํ๋ฆฌํฐ์ ์ํ๋ฅผ ์์ ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ํ์ดํ๋ผ์ธ์ด ํ๊ฐ๋๋ ์์์ ๋ฐ๋ผ ๋ถํ ์ด ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ฐจ ์์ง๊ณผ ๋ณ๋ ฌ ์์ง ์ฌ์ด์ ๋์์ ์ฐจ์ด๋ฅผ ๊ฐ์ ธ์ต๋๋ค! ์ด๋ ๋์ผํ ํ์ดํ๋ผ์ธ/ํ๋ผ๋ฏธํฐ ์ฝค๋ณด๊ฐ ์์ฐจ ์์ง๊ณผ ๋ณ๋ ฌ ์์ง์์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ์ด๋ ๋ฐ๋์งํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ์๊ฐ์๋ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์๋ฏธ ์๊ฒ ๋น๊ตํ ์ ์์ผ๋ ค๋ฉด ๋์ผํ ๋ฐ์ดํฐ์ ๋ํด ํ๊ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ 1๋ฒ ํญ๋ชฉ์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ ์ถฉ๋ถํ ์ด์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ณ๋ ฌ evalml๋ก ์ด๋ํ ๋ ์ ์ญ ์ํ๋ฅผ ์์ ํ๋ ๊ฒ์ด ์์๋๋ ๋์์ ์ผ๋ถ๊ฐ ์๋์ ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ผ๋ก์ ๊ณํ:
BalancedClassificationDataCVSplit
๋ฅผ ์์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ธ์.ํ ๋ก ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!