Evalml: 데이터 검사: JSON μΉœν™”μ μΈ λ©”μ‹œμ§€ fmt, μœ ν˜• μ—΄κ±°ν˜• 및 영ν–₯을 λ°›λŠ” μ—΄ 이름 포함

에 λ§Œλ“  2020λ…„ 11μ›” 12일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: alteryx/evalml

μ΄λ ‡κ²Œ ν•˜λ©΄ νŠΉμ • 였λ₯˜λ‚˜ κ²½κ³ κ°€ μžˆλŠ” κΈ°λŠ₯을 ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œ μ‰½κ²Œ 식별할 수 μžˆμŠ΅λ‹ˆλ‹€.

enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@angela97lin으둜 이것을 μ‘°μ •ν•˜μ‹­μ‹œμ˜€. μ΅œμ‹ :

{
  "message": "Warning: too many null values present in column 'foobar'",
  "code": "TOO_MANY_NULLS",
  "data_check_name": "HighlyNullDataCheck",
  "level": "warning",
  "details": {
    "columns": ["foobar"]
  }
}

μ—¬κΈ°μ„œ "details" ν‚€λŠ” 데이터 κ²€μ‚¬μ—μ„œ λ°˜ν™˜ν•˜λ €λŠ” λͺ¨λ“  정보λ₯Ό λ³΄μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 포함할 λ‚΄μš©μ΄ μ—†μœΌλ©΄ μƒλž΅ν•©λ‹ˆλ‹€.

검사에 μ‹€νŒ¨ν•œ 열을 ν¬ν•¨ν•˜λ„λ‘ λ‹€μŒ 데이터 검사λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. 높은 null, ID 및 λŒ€μƒ λˆ„μΆœ. λ‹€λ₯Έ 데이터 검사도 μ—…λ°μ΄νŠΈν•˜λ©΄ λ³΄λ„ˆμŠ€ :)

이것은 기본적으둜 @BoopBoopBeepBoop이 μ œμ•ˆν•œ κ²ƒμž…λ‹ˆλ‹€! ✨ @Cmancuso

λͺ¨λ“  9 λŒ“κΈ€

μ•½κ°„μ˜ ν™•μž₯: λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ ν˜•μ‹ν™” 및 κ΅­μ œν™”λ₯Ό ν™œμ„±ν™”ν•˜λ €λ©΄ EvalML이 μ§€κΈˆ λ°˜ν™˜ν•˜λŠ” λ©”μ‹œμ§€μ™€ ν•¨κ»˜ ν˜•μ‹ν™”λ˜μ§€ μ•Šμ€ 정보λ₯Ό λ°˜ν™˜ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 것:

{
  "message": "Warning: too many null values present in column 'foobar'",
  "check": "NullCheck",
  "code": "TOO_MANY_NULLS",
  "detail": {
    "level": "warning",
    "columns": ["foobar"]
  }
}

μ΄λ ‡κ²Œ ν•˜λ©΄ code λ₯Ό κ΅­μ œν™” λ¬Έμžμ—΄μ— λ‹€μ‹œ μ—°κ²°ν•˜μ—¬ 결과에 λŒ€ν•΄ μ–Έμ–΄ 독립적 ν˜•μ‹μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 μ„ΈλΆ€ μ •λ³΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 메타데이터λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή 정보λ₯Ό κ΅¬μ‘°ν™”λœ λ°©μ‹μœΌλ‘œ ν‘œμ‹œλ˜λŠ” λ©”μ‹œμ§€λ‘œ μ„ νƒμ μœΌλ‘œ λ‹€μ‹œ ν˜•μ‹ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λ°˜ν™˜λ˜λŠ” μ‹€μ œ μ½”λ“œμ—μ„œ 검사λ₯Ό λΆ„λ¦¬ν•˜λ©΄ 단일 검사 μΈμŠ€ν„΄μŠ€μ—μ„œ μƒμ„±λ˜λŠ” λ‹€μ–‘ν•œ ꢌμž₯ 사항/였λ₯˜/κ²½κ³  μ„ΈνŠΈλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” 검사λ₯Ό 섀계할 수 μžˆμŠ΅λ‹ˆλ‹€.

@BoopBoopBeepBoop κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚˜λŠ” κ·Έ μ œμ•ˆμ„ μ’‹μ•„ν•œλ‹€.

"μ½”λ“œ"κ°€ μ—΄κ±°ν˜•μ΄κ±°λ‚˜ 데이터 검사 λ‚΄λΆ€ μ–΄λ”˜κ°€μ— μ •μ˜λœ λ¬Έμžμ—΄μΌ κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜μ‹­λ‹ˆκΉŒ?

λ‚΄κ°€ μ œμ•ˆν•  수 μžˆλŠ” ν•œ 가지 쑰정은 ꡬ쑰λ₯Ό ν‰ν‰ν•˜κ²Œ μœ μ§€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

{
  "message": "Warning: too many null values present in column 'foobar'",
  "code": "TOO_MANY_NULLS",
  "level": "warning",
  "columns": ["foobar"]
}

μ—¬κΈ°μ„œ μš°λ¦¬λŠ” JSON의 κ΄€μ μ—μ„œ μ΄μ•ΌκΈ°ν•˜κ³  μžˆμ§€λ§Œ 제 μƒκ°μ—λŠ” μ΄λŸ¬ν•œ 각 ν•„λ“œκ°€ DataCheckWarning / DataCheckError κ°œμ²΄μ— μ—°κ²°λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

그것은 κ³΅ν‰ν•©λ‹ˆλ‹€. detail κ°€ "본질적으둜 지도"인 κ²ƒμ²˜λŸΌ 거기에 ν•΄λ‹Ή μš”μ†Œλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 그것듀은 μ•„λ§ˆλ„ λͺ¨λ“  검사에 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 쒋은 μ˜ˆλŠ” μ•„λ‹™λ‹ˆλ‹€ ...

기본적으둜 "λ©”μ‹œμ§€λ³„" κΈ°μ€€μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” μΆ”κ°€ 메타데이터λ₯Ό λ©”μ‹œμ§€μ— 포함해야 ν•˜λŠ” 상황이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄κ°€ 이전에 λ³Έ μ˜ˆλŠ” νŠΉμ • 값을 예둜 ν˜ΈμΆœν•˜κ±°λ‚˜ λ©”μ‹œμ§€μ˜ 동적 ν•˜ν•œ/μƒν•œμ„ ν˜•μ‹ν™”ν•˜κ±°λ‚˜ 이와 μœ μ‚¬ν•œ κ²ƒμž…λ‹ˆλ‹€. 일반적으둜 detail (λ˜λŠ” λ‹€λ₯Έ 이름 선택) 지도λ₯Ό μ‚¬μš©ν•˜λ©΄ 이점이 μžˆμŠ΅λ‹ˆλ‹€.

"μ½”λ“œ"κ°€ μ—΄κ±°ν˜•μ΄κ±°λ‚˜ 데이터 검사 λ‚΄λΆ€ μ–΄λ”˜κ°€μ— μ •μ˜λœ λ¬Έμžμ—΄μΌ κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜μ‹­λ‹ˆκΉŒ?

μ•ˆμ •λ˜κΈ°λ§Œμ„ λ°”λž„ λΏμž…λ‹ˆλ‹€ - 그것이 μ‚¬λŠ” 곳은 🀷

"μ½”λ“œ"κ°€ μ—΄κ±°ν˜•μ΄κ±°λ‚˜ 데이터 검사 λ‚΄λΆ€ μ–΄λ”˜κ°€μ— μ •μ˜λœ λ¬Έμžμ—΄μΌ κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜μ‹­λ‹ˆκΉŒ?

μ•ˆμ •λ˜κΈ°λ§Œμ„ λ°”λž„ λΏμž…λ‹ˆλ‹€ - 그것이 μ‚¬λŠ” 곳은 🀷

λͺ¨λ“  것이 λ™μΌν•˜λ‹€λ©΄ μ—΄κ±° ν˜•μ„ μ„ ν˜Έν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” ν˜„μž¬ μž‘μ—…μ˜ μΌλΆ€λ‘œ μ‹€ν–‰ν•  검사λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄ 자체 λ¬Έμžμ—΄μ„ μ •μ˜ν•˜κ³  있으며 EvalMLκ³Ό μΌμΉ˜ν•˜λŠ” μ—΄κ±°ν˜•μ„ μ‚¬μš©ν•˜μ—¬ 자체적으둜 μƒμ„±ν•˜λŠ” λŒ€μ‹  ν™œμš©ν•˜λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€.

이와 ν•¨κ»˜ @BoopBoopBeepBoop 이 μ„ΈλΆ€ 사항과 ν•¨κ»˜ μ–ΈκΈ‰ν•œ λ‚΄μš©μ— λŒ€ν•΄ μ–΄λ–€ μœ ν˜•μ˜ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€ μ•„λŠ” 것이 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ID μ—΄ κ²€μ‚¬μ—μ„œ EvalML은 μ—΄ 이름에 "id"κ°€ μžˆλŠ”μ§€ λ˜λŠ” 값이 N% κ³ μœ ν•œμ§€ ν™•μΈν•©λ‹ˆλ‹€. μ „μžλ₯Ό κ±ΈλŸ¬λ‚΄κ±°λ‚˜ λ‹€λ₯΄κ²Œ ν‘œν˜„ν•˜κΈ°λ₯Ό 원할 수 μžˆμœΌλ―€λ‘œ 이 μˆ˜μ€€μ˜ 세뢄성은 더 μ„ΈλΆ„ν™”λœ μ—΄κ±°ν˜•μ„ 톡해 λ˜λŠ” μœ„μ—μ„œ μ„€λͺ…ν•œ μ„ΈλΆ€ ꡬ쑰와 μœ μ‚¬ν•œ 것을 톡해 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@dsherry @freddyaboulton κ³Ό 방금 λ…Όμ˜ν–ˆμŠ΅λ‹ˆλ‹€: κ²½κ³  및 였λ₯˜ λͺ©λ‘ λŒ€μ‹  사전을 λ°˜ν™˜ν•˜λ„λ‘ 데이터 검사 APIλ₯Ό μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ https://github.com/alteryx/evalml/pull/1444 λ₯Ό μ˜¬λ ΈμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό 염두에 두고 errors 및 warnings κ°€ 속성인 DataCheckResults λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ PR을 μ—…λ°μ΄νŠΈν•˜κ³  to_json λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. @BoopBoopBeepBoop 이 μ œμ•ˆν•œ κ²ƒμ²˜λŸΌ JSON ν˜•μ‹μ˜ λ©”μ‹œμ§€λ₯Ό λ°˜ν™˜ν•  ν΄λž˜μŠ€μ— λŒ€ν•΄ μ΅œμ†Œν•œμ˜ μ •λ³΄λ‘œ μ§€κΈˆμ€ λ©”μ‹œμ§€μ™€ μˆ˜μ€€λ§Œ μ œκ³΅ν•©λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” JSON 좜λ ₯에 더 λ§Žμ€ ν•„λ“œ(예: "μ½”λ“œ") μΆ”κ°€λ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•΄ 계속 μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€.

@angela97lin κ°μ‚¬ν•©λ‹ˆλ‹€!

μ΅œμ‹  μ œμ•ˆμ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • DataCheck.validate 및 DataChecks.validate λ₯Ό μ—…λ°μ΄νŠΈν•˜μ—¬ λ‘˜ λ‹€ λ‹€μŒ ν˜•μ‹μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.
{'errors': [...], 'warnings': [...]}

μœ„μ˜ 각 ν•­λͺ©μ€ ν˜•μ‹μž…λ‹ˆλ‹€.

{
  "message": "Warning: too many null values present in column 'foobar'",
  "code": "TOO_MANY_NULLS",
  "level": "warning",
  "columns": ["foobar"]
}
  • DataCheckMessageCode 의 code ν•„λ“œλ₯Ό μ±„μš°κΈ° μœ„ν•΄ DataCheckMessageCode μ—΄κ±°ν˜•μ„ μ •μ˜ν•©λ‹ˆλ‹€.
  • μœ„μ˜ dict ν˜•μ‹μ„ μœ„ν•΄ DataCheckMessage , DataCheckError 및 DataCheckWarning 클래슀λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.

μš°λ¦¬κ°€ 이것을 κ΅¬μΆ•ν•˜κΈ° 전에 μ–΄λ–€ λ°˜λŒ€/의견이 μžˆμŠ΅λ‹ˆκΉŒ? @tyler3991 @Cmancuso @BoopBoopBeepBoop @angela97lin @freddyaboulton

( @angela97lin @freddyaboulton DataCheckResults 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 μ œμ•ˆμ˜ 버전을 μž…λ ₯ν•˜κΈ° μ‹œμž‘ν•œ λ‹€μŒ, λ‹€λ₯Έ 클래슀λ₯Ό μ •μ˜ν•˜λŠ” λŒ€μ‹  μœ„μ—μ„œ JSON-ified dictλ₯Ό λ°˜ν™˜ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. κΈ°λŠ₯적으둜 λ™λ“±ν•˜μ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 κ°„λ‹¨ν•©λ‹ˆλ‹€. κ²°κ³Ό ν΄λž˜μŠ€κ°€ μˆ˜ν–‰ν•˜λŠ” λͺ¨λ“  κ²°κ³ΌλŠ” λ™μΌν•œ 정보λ₯Ό μœ μ§€ν•˜κ³  λ‹€λ₯Έ κΈ°λŠ₯을 μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚˜μœ 생각이라고 μƒκ°ν•˜λ©΄ LMKμž…λ‹ˆλ‹€.)

이 RE PR #1444에 λŒ€ν•΄ @angela97linκ³Ό λŒ€ν™”ν–ˆμŠ΅λ‹ˆλ‹€ . κ·Έλ…€κ°€ λ‚΄λΆ€μ μœΌλ‘œ DataCheckMessage 클래슀λ₯Ό μœ μ§€ν•˜λ„λ‘ 선택할 수 μžˆλ‹€λŠ” 점을 μ œμ™Έν•˜κ³  μœ„μ˜ κ³„νšμ€ λ³€κ²½λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ validate λŠ” μœ„μ— μ •μ˜λœ JSON κ°€λŠ₯ dictsλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

( @angela97lin μš°λ¦¬κ°€ 방금 λ…Όμ˜ν•œ λ‚΄μš©κ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ μ €λ₯Ό μˆ˜μ •ν•˜μ‹­μ‹œμ˜€!)

@angela97lin으둜 이것을 μ‘°μ •ν•˜μ‹­μ‹œμ˜€. μ΅œμ‹ :

{
  "message": "Warning: too many null values present in column 'foobar'",
  "code": "TOO_MANY_NULLS",
  "data_check_name": "HighlyNullDataCheck",
  "level": "warning",
  "details": {
    "columns": ["foobar"]
  }
}

μ—¬κΈ°μ„œ "details" ν‚€λŠ” 데이터 κ²€μ‚¬μ—μ„œ λ°˜ν™˜ν•˜λ €λŠ” λͺ¨λ“  정보λ₯Ό λ³΄μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 포함할 λ‚΄μš©μ΄ μ—†μœΌλ©΄ μƒλž΅ν•©λ‹ˆλ‹€.

검사에 μ‹€νŒ¨ν•œ 열을 ν¬ν•¨ν•˜λ„λ‘ λ‹€μŒ 데이터 검사λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. 높은 null, ID 및 λŒ€μƒ λˆ„μΆœ. λ‹€λ₯Έ 데이터 검사도 μ—…λ°μ΄νŠΈν•˜λ©΄ λ³΄λ„ˆμŠ€ :)

이것은 기본적으둜 @BoopBoopBeepBoop이 μ œμ•ˆν•œ κ²ƒμž…λ‹ˆλ‹€! ✨ @Cmancuso

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰