Scikit-learn: Gower μœ μ‚¬μ„± κ³„μˆ˜ κ΅¬ν˜„

에 λ§Œλ“  2015λ…„ 11μ›” 19일  Β·  51μ½”λ©˜νŠΈ  Β·  좜처: scikit-learn/scikit-learn

@lesshasteμ—μ„œ μ œμ•ˆν•œ λŒ€λ‘œ

λ…Όλ¬Έ - http://cbio.ensmp.fr/~jvert/svn/bibli/local/Gower1971general.pdf

μΆ©λΆ„ν•œ 관심이 있으면 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@jnothman @amueller @agramfort

New Feature

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

μ•ˆλ…•ν•˜μ„Έμš”,

μ–΄λ–»κ²Œλ“  κΈ°μ—¬ν•˜κΈ° μœ„ν•΄ 원본 λ¬Έμ„œμ— 따라 Gower ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν–ˆκ³  pdist λͺ¨λ“ˆμ— ν•„μš”ν•œ 각 μˆ˜μ • 사항을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. pdistλŠ” λ‚΄λΆ€μ μœΌλ‘œ ν˜Όν•© 데이터가 μžˆλŠ” 행렬을 μ‚¬μš©ν•˜λŠ” 경우 μ‹€νŒ¨ν•  μ—¬λŸ¬ 수치 λ³€ν™˜μ„ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ μ΄κ²ƒμœΌλ‘œ 얻은 κ²°κ³ΌλŠ” R의 데이지 ν•¨μˆ˜μ—μ„œμ™€ λ™μΌν•©λ‹ˆλ‹€.

μ†ŒμŠ€ μ½”λ“œλŠ” λ‹€μŒ jupyter λ…ΈνŠΈλΆμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://sourceforge.net/projects/gower-distance-4python/files/

마음껏 μ‚¬μš©ν•˜μ„Έμš”

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

감사 ν•΄μš”.

R의 daisy λŒ€ν•œ 이 λ¬Έμ„œλŠ” https://stat.ethz.ch/R-manual/R-devel/library/cluster/html/daisy.html 에 λŒ€ν•œ 인기 μžˆλŠ” μ‚¬μš© μ‚¬λ‘€μ΄λ―€λ‘œ 관련이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μ›Œ κ³„μˆ˜.

μ–΄λ”” μ œμ•ˆ? μ–΄λ–€ λ§₯λ½μ—μ„œ?

@agramfort gitterμ—μ„œ μ œμ•ˆν–ˆμŠ΅λ‹ˆλ‹€. 이 κ³„μˆ˜μ˜ μ£Όμš” κ΄€μ‹¬μ‚¬λŠ” λ³€μˆ˜μ— ν˜Όν•© μœ ν˜•(즉, λ²”μ£Όν˜•, μˆ«μžν˜•, μˆœμ„œν˜•)이 μžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€. ν•œ 가지 인기 μžˆλŠ” μ‚¬μš© μ‚¬λ‘€λŠ” ν˜Όν•© μœ ν˜•μœΌλ‘œ 데이터λ₯Ό ν΄λŸ¬μŠ€ν„°λ§ν•  λ•Œ μ•žμ—μ„œ μ–ΈκΈ‰ν•œ R νŒ¨ν‚€μ§€ daisy() μž…λ‹ˆλ‹€(https://cran.r-project.org/web/packages/cluster/cluster.pdf의 27νŽ˜μ΄μ§€ μ°Έμ‘°). . 보닀 일반적으둜 http://www.clustan.talktalk.net/gower_similarity.html 은 "Gower의 일반 μœ μ‚¬μ„± κ³„μˆ˜λŠ” β€‹β€‹ν˜Όν•© 데이터 μœ ν˜•μ— λŒ€ν•œ κ°€μž₯ 인기 μžˆλŠ” 근접도 μΈ‘μ • 쀑 ν•˜λ‚˜"라고 μ£Όμž₯ν•©λ‹ˆλ‹€. κ·ΈλŸ΄λ“―ν•œ μ£Όμž₯처럼 λ³΄μž…λ‹ˆλ‹€.

이에 동기λ₯Ό λΆ€μ—¬ν•  벀치마크 λ˜λŠ” 섀득λ ₯ μžˆλŠ” μ˜ˆκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

@agramfort ν˜„μž¬ ν˜Όν•© 데이터 μœ ν˜•μ— λŒ€ν•œ λΉ„μœ μ‚¬μ„± κ³„μˆ˜λ₯Ό κ³„μ‚°ν•˜λŠ” λ‹€λ₯Έ 방법이 μ—†κ³  이것이 ν‘œμ€€μΈ 것 κ°™μŠ΅λ‹ˆλ‹€. μ‚¬λžŒλ“€μ΄ Gower κ³„μˆ˜κ°€ 무엇인지 μ„€λͺ…ν•˜κ±°λ‚˜ ν˜Όν•© 데이터 μœ ν˜•μ— λŒ€ν•œ μ‚¬μš©μ„ μ œμ•ˆν•˜λŠ” μ˜¨λΌμΈμ—μ„œ λ§Žμ€ μ˜ˆμ™€ 질문/닡변을 찾을 수 μžˆμ§€λ§Œ 아직 벀치마크라고 λΆ€λ₯Ό 수 μžˆλŠ” 것은 μ—†μŠ΅λ‹ˆλ‹€. Google ν•™μžμ— λ”°λ₯΄λ©΄ 원본 논문은 2298회 μΈμš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ’‹μ•„, λ‚˜λŠ” ν™•μ‹ ν•œλ‹€ :)

@agramfort 이 변경은 λ‚˜λ¬΄μ— λŒ€ν•œ κΈ°λ³Έ λ²”μ£Όν˜• λ³€μˆ˜ 지원을 λ„μž…ν•˜λŠ” https://github.com/scikit-learn/scikit-learn/pull/4899λ₯Ό ν›Œλ₯­ν•˜κ²Œ λ³΄μ™„ν•©λ‹ˆλ‹€.

κ·Έλ ‡κΈ΄ ν•˜μ§€λ§Œ, λ‚˜λŠ” 이제 scikit-learn이 ν˜„μž¬ μ„œμˆ˜μ— λŒ€ν•œ κΈ°λ³Έ 지원이 μ „ν˜€ μ—†λ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. μ„œμˆ˜μ  νŠΉμ§•μ„ μ§€μ›ν•˜λŠ” 첫 번째 λ‹¨κ³„λ‘œ κΈμ •μ μœΌλ‘œ 생각할 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

@amueller [New Feature] νƒœκ·Έ 지정 μ˜ˆμ • ...

μ•ˆλ…•ν•˜μ„Έμš”,

μ–΄λ–»κ²Œλ“  κΈ°μ—¬ν•˜κΈ° μœ„ν•΄ 원본 λ¬Έμ„œμ— 따라 Gower ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν–ˆκ³  pdist λͺ¨λ“ˆμ— ν•„μš”ν•œ 각 μˆ˜μ • 사항을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. pdistλŠ” λ‚΄λΆ€μ μœΌλ‘œ ν˜Όν•© 데이터가 μžˆλŠ” 행렬을 μ‚¬μš©ν•˜λŠ” 경우 μ‹€νŒ¨ν•  μ—¬λŸ¬ 수치 λ³€ν™˜μ„ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ§€κΈˆκΉŒμ§€ μ΄κ²ƒμœΌλ‘œ 얻은 κ²°κ³ΌλŠ” R의 데이지 ν•¨μˆ˜μ—μ„œμ™€ λ™μΌν•©λ‹ˆλ‹€.

μ†ŒμŠ€ μ½”λ“œλŠ” λ‹€μŒ jupyter λ…ΈνŠΈλΆμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://sourceforge.net/projects/gower-distance-4python/files/

마음껏 μ‚¬μš©ν•˜μ„Έμš”

이것에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€. λ˜ν•œ @marcelobeckmann이 μ–ΈκΈ‰ν•œ λ¬Έμ œκ°€ μ—¬μ „νžˆ 관련성이 μžˆμŠ΅λ‹ˆκΉŒ?

@ ashimb9 μš°λ¦¬κ°€ @marcelobeckmannμ—μ„œ μ½”λ“œλ₯Ό 톡합 ν•  μ‚¬λžŒμ΄ ν•„μš” 보인닀

@agramfort 흠,

μ•ˆλ…•ν•˜μ„Έμš”, κΈ°λ³Έ 데이터가 μ™„μ „νžˆ 숫자라고 κ°€μ •ν•˜λŠ” pdist의 일뢀 λΉ„κ³΅κ°œ ν•¨μˆ˜(예: _convert_to_double, _copy_array_if_base_present)κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ²”μ£Όν˜• 데이터가 μžˆλŠ” 데이터 ν”„λ ˆμž„μ΄ μžˆλŠ” 경우 사싀이 μ•„λ‹™λ‹ˆλ‹€.

μ €λŠ” 이 μ½”λ“œλ₯Ό ν†΅ν•©ν•˜κ³  ν¬ν¬μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μžμ›ν•©λ‹ˆλ‹€. 이 티켓을 μ €μ—κ²Œ ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€.

github ν• λ‹Ή κΈ°λŠ₯은 νŒ€ κ΅¬μ„±μ›μ—κ²Œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€.

2017λ…„ 7μ›” 17일 μ˜€ν›„ 7μ‹œ 32뢄에 "marcelobeckmann" [email protected]이 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, λͺ‡ 가지 개인 κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€(예: _convert_to_double,
κΈ°λ³Έ 데이터가 λ‹€μŒκ³Ό κ°™λ‹€κ³  κ°€μ •ν•˜λŠ” pdist의 _copy_array_if_base_present)
데이터 ν”„λ ˆμž„μ΄ μžˆλŠ” κ²½μš°μ—λŠ” 사싀이 μ•„λ‹Œ μ™„μ „νžˆ μˆ«μžμž…λ‹ˆλ‹€.
λ²”μ£Όν˜• 데이터.

이 μ½”λ“œλ₯Ό ν†΅ν•©ν•˜κ³  ν¬ν¬μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μžμ›ν•©λ‹ˆλ‹€.
이 티켓을 λ‚˜μ—κ²Œ ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€.

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/scikit-learn/scikit-learn/issues/5884#issuecomment-315707830 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AAEz62L3HHzGsSerW5G3n-Z8rrNoV6mwks5sOyoTgaJpZM4Glm0p
.

κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”. λ‚΄κ°€ 그것을 포크할 것이고 당신은 λ‚˜μ€‘μ— μ½”λ“œλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μ €μ—κ²Œ μ€‘μš”ν•œ 것은 κΈ°μ—¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ™„λ£Œλ˜λ©΄ μ•Œλ € λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

이것을 λ°›μ•„ μ£Όμ‹  @marcelobeckmann μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. 당신이 κ·Έκ²ƒμ—μžˆλŠ” λ™μ•ˆ (그리고 그것이 κ°€λŠ₯ν•œ 경우) R의 데이지 νŒ¨ν‚€μ§€μ—μ„œ κ΅¬ν˜„ 된 κ²ƒμ²˜λŸΌ NaN κ°’μ΄μžˆλŠ” 데이터에 λŒ€ν•œ gower 계산에 λŒ€ν•œ 지원을 μΆ”κ°€ν•˜λŠ” 것을 κ³ λ €ν•  것인지 κΆκΈˆν•©λ‹ˆλ‹€ (μœ„μ—μ„œλ„ μ°Έμ‘°) ?

Gowerλ₯Ό sklearn.metrics.pairwise에 ν†΅ν•©ν–ˆμŠ΅λ‹ˆλ‹€(NaN κ°’ μ²˜λ¦¬λ„ κ΄€μ°°). λΆ„κΈ°λœ μ½”λ“œλ₯Ό μ œμΆœν•˜κΈ° 전에 λͺ‡ 가지 λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μ€€λΉ„ν•  κ²ƒμž…λ‹ˆλ‹€.

@marcelobeckmann 특히 NaN 지원을 포함해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! :)

μΆ”μ‹ : μ œκ°€ μ œμ•ˆν•  수 μžˆλŠ” 경우, λ‹¨μœ„ ν…ŒμŠ€νŠΈ 등을 μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆ κ²€ν† μžκ°€ μ½”λ“œλ₯Ό λ³Ό 수 μžˆλ„λ‘ ν’€ μš”μ²­μ„ μ‹œμž‘ν•˜λŠ” 것을 κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ©°μΉ  전에 b5884둜 ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν–ˆμŠ΅λ‹ˆλ‹€.

예, κ²€ν†  λŒ€κΈ° μ€‘μž…λ‹ˆλ‹€.

2017λ…„ 8μ›” 17일 23:40, Marcelo Beckmann μ•Œλ¦Ό @github.com
썼닀:

λ©°μΉ  전에 b5884둜 ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν–ˆμŠ΅λ‹ˆλ‹€.

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/scikit-learn/scikit-learn/issues/5884#issuecomment-323076581 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AAEz69uMu0XsoAUfvwWikkadjGCk5yvKks5sZELKgaJpZM4Glm0p
.

CIμ—μ„œ μš”κ΅¬ν•˜λŠ” 사항을 λ³€κ²½ν–ˆμœΌλ©° λͺ¨λ“  검사λ₯Ό ν†΅κ³Όν–ˆμŠ΅λ‹ˆλ‹€.

@marcelobeckmann μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€ ! ν–‰ 659λ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
ranges_of_numeric[col] = (1 - min / max, 0)[max == 0] if (max!=0) else 0.0

그렇지 μ•ŠμœΌλ©΄ 두 번째 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ—μ„œ 제둜 경고둜 λ‚˜λˆ•λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, Pierre Wessman이 μ œμ•ˆν•œ λŒ€λ‘œ κ²½κ³ λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό λ³€κ²½ν–ˆμœΌλ©° CIλŠ” λ…Ήμƒ‰μž…λ‹ˆλ‹€. λ‚΄ μ½”λ“œλ₯Ό κ²€ν† ν•  μ‚¬λžŒμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

@marcelobeckmann 및 잠재적으둜 λ‹€λ₯Έ μ‚¬λžŒ.

μ•ˆλ…• Marcelo(λ˜λŠ” 잠재적으둜 λ‹€λ₯Έ μ‚¬λžŒ), 여기에 λ°°μΉ˜ν•œ gower κ³„μˆ˜ κ΅¬ν˜„κ³Ό κ΄€λ ¨ν•˜μ—¬ λͺ‡ 가지 κ°„λ‹¨ν•œ 질문이 μžˆμŠ΅λ‹ˆλ‹€: https://sourceforge.net/projects/gower-distance-4python/files/.

  1. μ›λž˜ 데이터λ₯Ό ν•¨μˆ˜μ— κ³΅κΈ‰ν•˜κΈ° μœ„ν•΄ νŒ¬λ” dataFrame이 ν•„μš”ν•©λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ numpy 배열도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

  2. λ‚΄ 데이터λ₯Ό numpy λ°°μ—΄λ‘œ κ°€μ Έμ˜€κ³  μžˆμŠ΅λ‹ˆλ‹€. 고유 ID인 첫 번째 열을 μ œμ™Έν•œ λͺ¨λ“  열은 숫자 μ‹€μˆ˜μž…λ‹ˆλ‹€. 두 가지 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

  • 첫째, ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  λ•Œ dtype U7이 객체둜 λ³€ν™˜λ˜μ—ˆλ‹€λŠ” 데이터 λ³€ν™˜ κ²½κ³ λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€!!. μ–΄λ–€ 이유둜 λ°°μ—΄ ν•­λͺ©μ΄ λ”°μ˜΄ν‘œλ‘œ λ¬Άμ—¬ λ¬Έμžμ—΄μ΄κΈ° λ•Œλ¬Έμ΄λΌκ³  κ°€μ •ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 예λ₯Ό λ“€μ–΄ λ°°μ—΄ ν•­λͺ©μ˜ μœ ν˜•μ„ int32둜 μΊμŠ€νŒ…ν–ˆλŠ”λ° μ—¬μ „νžˆ int32κ°€ 객체둜 λ³€ν™˜λ˜μ—ˆλ‹€λŠ” λ³€ν™˜ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

  • 두 번째둜, μ•„λ§ˆλ„ μœ„μ— λ§ν¬λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό ν”Œλ‘œνŒ…ν•  λ•Œλ§ˆλ‹€ λ‹€λ₯Έ μ‹œκ°ν™”(포인트의 λ‹€λ₯Έ 퍼짐)λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

μœ„ λ‚΄μš©μ— λŒ€ν•΄ μ‘°μ–Έ λΆ€νƒλ“œλ €λ„ λ κΉŒμš”?

맀우 κ°μ‚¬ν•©λ‹ˆλ‹€

μ•ˆλ…• μ•Œλ¦¬,

Gower 거리 κ΅¬ν˜„μ— 관심을 κ°€μ Έμ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‚΄κ°€ ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν•œ μ½”λ“œλŠ” scikit Learn 컀미터에 μ˜ν•΄ μŠΉμΈλ˜μ§€ μ•Šμ•˜μ§€λ§Œ(CIλŠ” 녹색이고 κ²€ν† λ₯Ό 기닀리고 μžˆμŠ΅λ‹ˆλ‹€), μ €λŠ” 이 μ΅œμ‹ μ˜ μ•ˆμ •μ μΈ κ΅¬ν˜„μ„ https://sourceforge.net/projects/gower-distance둜 ν‘Έμ‹œν–ˆμŠ΅λ‹ˆλ‹€.

κ·€ν•˜μ˜ μ§ˆλ¬Έμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. μ›λž˜ 데이터λ₯Ό ν•¨μˆ˜μ— κ³΅κΈ‰ν•˜κΈ° μœ„ν•΄ Panda DataFrame이 ν•„μš”ν•©λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ numpy 배열도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‹΅λ³€: 이 μƒˆ 버전 3μ—μ„œλŠ” DataFrame λ˜λŠ” Numpyλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν¬μ†Œ 행렬도 μ§€μ›λ©λ‹ˆλ‹€.

  1. . λ‚΄ 데이터λ₯Ό numpy λ°°μ—΄λ‘œ κ°€μ Έμ˜€κ³  μžˆμŠ΅λ‹ˆλ‹€. 고유 ID인 첫 번째 열을 μ œμ™Έν•œ λͺ¨λ“  열은 숫자 μ‹€μˆ˜μž…λ‹ˆλ‹€. 두 가지 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.
  • 첫째, ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  λ•Œ dtype U7이 객체둜 λ³€ν™˜λ˜μ—ˆλ‹€λŠ” 데이터 λ³€ν™˜ κ²½κ³ λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€!!. μ–΄λ–€ 이유둜 λ°°μ—΄ ν•­λͺ©μ΄ λ”°μ˜΄ν‘œλ‘œ λ¬Άμ—¬ λ¬Έμžμ—΄μ΄κΈ° λ•Œλ¬Έμ΄λΌκ³  κ°€μ •ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 예λ₯Ό λ“€μ–΄ λ°°μ—΄ ν•­λͺ©μ˜ μœ ν˜•μ„ int32둜 μΊμŠ€νŒ…ν–ˆλŠ”λ° μ—¬μ „νžˆ int32κ°€ 객체둜 λ³€ν™˜λ˜μ—ˆλ‹€λŠ” λ³€ν™˜ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ‹΅λ³€: 이 μƒˆ 버전은 숫자 λ²”μ£Ό 속성을 μ§€μ›ν•©λ‹ˆλ‹€. μΆ”κ°€ λ§€κ°œλ³€μˆ˜ categorical_featuresκ°€ μžˆμŠ΅λ‹ˆλ‹€. 배열을 false(숫자 μ†μ„±μ˜ 경우) λ˜λŠ” true(λ²”μ£Ό μ†μ„±μ˜ 경우)둜 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 두 번째둜, μ•„λ§ˆλ„ μœ„μ— λ§ν¬λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό ν”Œλ‘œνŒ…ν•  λ•Œλ§ˆλ‹€ λ‹€λ₯Έ μ‹œκ°ν™”(포인트의 λ‹€λ₯Έ 퍼짐)λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

λ‹΅λ³€: λ‚΄κ°€ ν‘Έμ‹œν•œ μƒˆ 버전은 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

이 PR을 κ²€ν† ν•  μ˜ˆμ •μ΄μ§€λ§Œ 그닀지 λ†’μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.
μš°μ„  ATM

μ•ˆλ…• μ•Œλ¦¬,

  1. μ΅œμ‹  것은 gower_function-v3.ipynb이며, λ„€, nan을 μ²˜λ¦¬ν•©λ‹ˆλ‹€.
    λ²ˆμ‹

  2. λ²”μ£Όν˜• attκ°€ μ•„λ‹Œ κ²½μš°μ—λ§Œ gower_distance(X)λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    숫자 λ˜λŠ” gower_distance(X, categorical_features=[False, True,
    False,...]), cat attr이 숫자둜 ν‘œμ‹œλ˜λŠ” 경우.

이 κ΅¬ν˜„ λ•Œλ¬Έμ— λ¬Έμ œκ°€ 있으면 개인적으둜 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.
λ‚˜λŠ” 인터넷에 λ°€μ–΄λΆ™μ—¬μ„œ scikit Learn의 관심사가 λ˜μ–΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.
ν•  일이 많으며 여기에 λŒ€ν•΄ λ…Όμ˜ν•˜κΈ°μ— κ°€μž₯ 쒋은 곳은 μ•„λ‹™λ‹ˆλ‹€.

2017λ…„ 11μ›” 30일 11μ‹œ 51뢄에 "Ali-ry" [email protected]μ—μ„œ λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@marcelobeckmann https://github.com/marcelobeckmann

μ•ˆλ…•ν•˜μ„Έμš” Marcelo(λ˜λŠ” 잠재적으둜 λ‹€λ₯Έ μ‚¬λžŒ), κ·€ν•˜μ˜
여기에 λ°°μΉ˜ν•œ gower κ³„μˆ˜μ˜ κ΅¬ν˜„:
https://sourceforge.net/projects/gower-distance-4python/files/

1.

gower_single_function-v2.ipynbλŠ” μ΅œμ’… 버전이며 λ‹€μŒμ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
NaNλ„μš”?
2.

더 μ€‘μš”ν•œ 것은 이 κ΅¬ν˜„μ„ 톡해
ν•˜λ‚˜μ˜ 단일 μƒ˜ν”Œ 데이터 λ‚΄ μœ μ‚¬μ„±? μ™œλƒν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ 경우 당신이
ν•„μš”ν•œ 것은 λ‚΄μ—μ„œ 각 κ΄€μ°° 쌍 μ‚¬μ΄μ˜ κ³ μ–΄ 거리λ₯Ό μ–»λŠ” κ²ƒμž…λ‹ˆλ‹€.
두 개의 λ‹€λ₯Έ μƒ˜ν”Œ 데이터λ₯Ό λΉ„κ΅ν•˜λŠ” κ²ƒκ³ΌλŠ” λŒ€μ‘°μ μœΌλ‘œ ν•˜λ‚˜μ˜ 단일 μƒ˜ν”Œ 데이터.

맀우 κ°μ‚¬ν•©λ‹ˆλ‹€

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/scikit-learn/scikit-learn/issues/5884#issuecomment-348166596 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AA3G79jWVbpBNdAFOAim7wJS92-QGl0dks5s7pa8gaJpZM4Glm0p
.

μ•ˆλ…• μ•Œλ¦¬,

  1. μ΅œμ‹  버전은 gower_function-v3.ipynb이며 scikit learn에 ν‘Έμ‹œν•œ κ²ƒμ˜ λ³΅μ‚¬λ³Έμž…λ‹ˆλ‹€. 예, nan μ „νŒŒλ₯Ό λ‹€λ£Ήλ‹ˆλ‹€.

  2. λ²”μ£Ό 속성이 μˆ«μžκ°€ μ•„λ‹Œ 경우 gower_distance(X)만 μ‚¬μš©ν•  수 있고 λ²”μ£Ό 속성이 숫자둜 ν‘œμ‹œλ˜λŠ” 경우 gower_distance(X, categorical_features=[False, True, False,...])λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œκ°€ 있으면 개인적으둜 μ•Œλ €μ£Όμ‹­μ‹œμ˜€. λ‚΄κ°€ 인터넷에 ν‘Έμ‹œν•œ 이 κ΅¬ν˜„μ€ scikit Learn의 관심사가 μ•„λ‹ˆμ–΄μ•Ό ν•˜κ³ , ν•  일이 많으며 μ—¬κΈ°κ°€ scikit 외뢀에 μžˆλŠ” 것을 λ…Όμ˜ν•˜κΈ°μ— κ°€μž₯ 쒋은 곳이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. ν”„λ‘œμ νŠΈλ₯Ό λ°°μš°μ‹­μ‹œμ˜€.

@marcelobeckmann μ•ˆλ…•ν•˜μ„Έμš” Marcelo,
λ²”μ£Όν˜• λ³€μˆ˜κ°€ 숫자 ν˜•μ‹μœΌλ‘œ μΈμ½”λ”©λœ 경우 categorical_features λ§€κ°œλ³€μˆ˜μ˜ 값이 True λ˜λŠ” Falseμ—¬μ•Ό ν•©λ‹ˆκΉŒ?

λ˜ν•œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
ValueError: 0 μƒ˜ν”Œ(λͺ¨μ–‘=(0, 0))이 μžˆλŠ” 배열을 μ°Ύμ•˜μ§€λ§Œ check_pairwise_arraysμ—λŠ” μ΅œμ†Œ 1이 ν•„μš”ν•©λ‹ˆλ‹€.

μ΄μ „μ—λŠ” λ™μΌν•œ λ°μ΄ν„°μ—μ„œ μ„±κ³΅μ μœΌλ‘œ μž‘λ™ν–ˆμ§€λ§Œ μ΄μ œλŠ” μ΄λŸ¬ν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. μ™œ 그럴 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @bendiste μž…λ‹ˆλ‹€ .

True와 Falseλ₯Ό 1κ³Ό 0으둜 λ‚˜νƒ€λ‚΄λ©΄ λ™μΌν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  λ…ΈνŠΈλΆ gower_function-v6.4.ipynbλ₯Ό μ‚¬μš© μ€‘μž…λ‹ˆκΉŒ?
https://sourceforge.net/projects/gower-distance-4python/files/
?

기사 μž‘μ„±μ„ 마치며 이번 달에 scikit-learn λ§ˆμŠ€ν„°μ—μ„œ λ‚΄ κ΅¬ν˜„μ„ μŠΉμΈν•˜λ„λ‘ μš”μ²­ν•œ λ³€κ²½ 사항을 μ μš©ν•  수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @marcelobeckmannλ‹˜ , λ‹΅λ³€ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 그리고 λ„€, μ•Œλ €μ£Όμ‹  μ΅œμ‹  버전을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ λ‹€μš΄λ‘œλ“œν–ˆμ„ λ•Œ μ„±κ³΅μ μœΌλ‘œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. μ €λŠ” 기계 ν•™μŠ΅μ˜ 초보자이기 λ•Œλ¬Έμ— λͺ‡ 가지 μ§ˆλ¬Έμ„ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
1- KPCAλ₯Ό μ‚¬μš©ν•˜μ—¬ 계측적 ν΄λŸ¬μŠ€ν„°λ§ μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•œ μž…λ ₯으둜 차원을 쀄일 수 μžˆμŠ΅λ‹ˆκΉŒ?
2- μ•„λ‹ˆλ©΄ 계측적 ν΄λŸ¬μŠ€ν„°λ§μ— λŒ€ν•œ μž…λ ₯으둜 차원이 높은 전체 데이터 μ„ΈνŠΈλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @marcelobeckmann ,
κ΅¬ν˜„ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

gower_function-v6.4 버전을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.
λ²”μ£Όν˜• 열을 μ§€μ •ν•˜λ“  μ§€μ •ν•˜μ§€ μ•Šλ“  λ‹¨μœ„ ν…ŒμŠ€νŠΈμ˜ κ±°λ¦¬λŠ” λ™μΌν•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ˜ν•œ 결과에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ” λ‚΄ μžμ‹ μ˜ λ°μ΄ν„°λ‘œ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

이 μ˜¬λ°”λ₯Έμ§€?

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

μ•ˆλ…•ν•˜μ„Έμš” @annelaura ,

닡변이 λŠ¦μ–΄ μ£„μ†‘ν•©λ‹ˆλ‹€. λ„€ λ§žμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή ν…ŒμŠ€νŠΈλŠ” categorical_features=[0, 1] λ§€κ°œλ³€μˆ˜κ°€ 결과에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•œ κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. μˆ«μžκ°€ μ•„λ‹Œ 열도 개체둜 식별할 수 μžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€. μž…λ ₯ 데이터가 λ™μΌν•˜λ―€λ‘œ κ²°κ³Όκ°€ 동일해야 ν•©λ‹ˆλ‹€.

λͺ‡ 가지 논문을 마친 ν›„ scikit master λΈŒλžœμΉ˜μ— λŒ€ν•œ κ΅¬ν˜„μ„ λ§ˆμΉ¨λ‚΄ μ œμ•ˆν•˜κΈ° μœ„ν•΄ λ‹€μ‹œ μΌν•©λ‹ˆλ‹€! :)

@marcelobeckmann 이에 κ΄€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ? :)

μ•ˆλ…• Alex, λ‚˜λŠ” ν’€ λ¦¬ν€˜μŠ€νŠΈμ—μ„œ κ²€ν† μžλ“€μ΄ μ§€κΈˆκΉŒμ§€ μš”μ²­ν•œ λͺ¨λ“  μˆ˜μ •μ„ μ™„λ£Œν–ˆκ³  CIλŠ” λ…Ήμƒ‰μž…λ‹ˆλ‹€. λ˜ν•œ 리뷰어가 λ§Œμ‘±ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 핑을 λ³΄λƒˆμŠ΅λ‹ˆλ‹€. 그러면 이 ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ‹«κ³  ν‘Έμ‹œν•˜μ—¬ λ¦΄λ¦¬μŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? @marcelobeckmann

κ²€ν†  ν›„ μž‘μ—…μ„ μ§„ν–‰ν•©λ‹ˆλ‹€.

PR이 μŠΉμΈλ˜μ—ˆμŠ΅λ‹ˆκΉŒ? @marcelobeckmann

아직, 졜근 μ½”λ“œ κ²€ν† λ₯Ό 거쳐 μž‘μ—…μ΄ 진행 μ€‘μž…λ‹ˆλ‹€.

ν•„μš”ν•΄μ„œ μ•„μ‰½λ„€μš”.

κΈ°λŠ₯만 μ–΄λ”˜κ°€μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 혼자 μ‚¬μš©ν•  수 μžˆλ„λ‘ (연ꡬ λͺ©μ μœΌλ‘œ)

감사 ν•΄μš”

이 PRμ—μ„œ 이 κΈ°λŠ₯의 μ΅œμ‹  컀밋을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
https://github.com/scikit-learn/scikit-learn/pull/9555

λ‚˜λŠ” 그것을 λ‘œμ»¬μ—μ„œ μž‘λ™μ‹œν‚€λŠ” 데 μ„±κ³΅ν–ˆλ‹€. 감사 ν•΄μš”!

이 티켓을 λΉ λ₯΄κ²Œ +1ν•˜μ„Έμš”! λͺ¨λ“  μž‘μ—…μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

좩돌. 이것은 ν›Œλ₯­ν•œ μΆ”κ°€ 사항이 될 κ²ƒμž…λ‹ˆλ‹€. 비ꡐ적 κ°„λ‹¨ν•œ κ³„μ‚°μœΌλ‘œ sklearn으둜 λ§Œλ“œλŠ” 데 4년이 κ±Έλ Έλ‹€λŠ” 것이 믿기지 μ•ŠμŠ΅λ‹ˆλ‹€!!

λ˜λŠ” λ‹€μŒκ³Ό 같이 말할 수 μžˆμŠ΅λ‹ˆλ‹€.
자발적인 λ…Έλ ₯!

λ˜λŠ” λ‹€μŒκ³Ό 같이 말할 수 μžˆμŠ΅λ‹ˆλ‹€. 4λ…„ λ™μ•ˆ μžμ› 봉사λ₯Ό μœ„ν•΄ ν—Œμ‹ μ μœΌλ‘œ 끈기 있게 λ…Έλ ₯ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

λ‹Ήμ‹  말이 λ§žμ•„, λ―Έμ•ˆ. λ¬΄λ‘€ν•˜κ²Œ λ³΄μ΄λ €λŠ” μ˜λ„λŠ” μ•„λ‹ˆμ—ˆμŠ΅λ‹ˆλ‹€. λ…Έλ ₯에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚˜λŠ” 이것을 μž μ‹œ λ™μ•ˆ λ‘œμ»¬μ—μ„œ μ‚¬μš©ν•΄ μ™”μœΌλ©° μΆ”κ°€λ˜λŠ” 것을 λ³΄λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€. ν˜Όν•© 데이터 μœ ν˜•μ— λŒ€ν•΄ λ‚΄κ°€ μ•„λŠ” μœ μΌν•œ 거리 μΈ‘μ •λ²•μž…λ‹ˆλ‹€.

μžμ› 봉사 λ…Έλ ₯을 μ œμ™Έν•˜κ³  핡심 κ°œλ°œμžκ°€ κ³ λ €ν•˜μ§€ μ•Šμ€
이 κΈ΄κΈ‰ν•œ μƒν™©μ—μ„œ μ‹€μ œλ‘œ ν˜Όν•© μœ ν˜•μ„ μ²˜λ¦¬ν•˜λŠ” 방법에 λŒ€ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
그리고 ν›ˆλ ¨ ν…ŒμŠ€νŠΈ μ„€μ •μ—μ„œ μŠ€μΌ€μΌλ§μ„ μˆ˜ν–‰ν•˜λŠ” 방법에 λŒ€ν•΄ μ„€λͺ…ν•©λ‹ˆλ‹€.

sklearnμ—μ„œ κΈ°λŒ€ν•˜κ² μŠ΅λ‹ˆλ‹€.

이 μŠ€λ ˆλ“œμ—μ„œ " 아이디어λ₯Ό λΉŒλ Έλ‹€ "κ³  μ£Όμž₯ν•˜λŠ” λˆ„κ΅°κ°€κ°€ Gower 거리(기술적으둜 μœ μ‚¬μ„±)λ₯Ό κ³„μ‚°ν•˜κΈ° μœ„ν•΄ github 에 νŒ¨ν‚€μ§€λ₯Ό μΆœμ‹œν–ˆμŠ΅λ‹ˆλ‹€. 거리와 μœ μ‚¬μ„±μ— λŒ€ν•΄ λ§ν•˜μžλ©΄ @marcelobeckmann의 μ˜ˆμ‹œμ™€ λ™μΌν•©λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ μ½”λ“œλ§Œ ν›‘μ–΄λ³΄μ•˜μ§€λ§Œ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

@marcelobeckmann 의 λ…ΈνŠΈλΆμ—μ„œ:

    # This is to normalize the numeric values between 0 and 1.
    X_num = np.divide(X_num ,max_of_numeric,out=np.zeros_like(X_num), where=max_of_numeric!=0)

"마이클 μ–€"μ—μ„œ:

    # This is to normalize the numeric values between 0 and 1.
    Z_num = np.divide(Z_num ,num_max,out=np.zeros_like(Z_num), where=num_max!=0)

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, 이것에 관심을 κ°€μ Έ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‚˜λŠ” μ‚¬λžŒλ“€μ΄ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜κ³  그것을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜κ³  μžˆλ‹€λŠ” 것을 기쁘게 μƒκ°ν•©λ‹ˆλ‹€. μ•½κ°„μ˜ κ³΅λ‘œκ°€ μΈμ •λ˜κΈ°λŠ” ν•˜μ§€λ§Œ 그것이 μ˜€ν”ˆ μ†ŒμŠ€μ˜ λͺ©μ μž…λ‹ˆλ‹€.

이 PR #9555 κ°€ μŠΉμΈλœλ‹€λ©΄ 이 μ½”λ“œκ°€ scikit-learn의 일뢀가 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

μΉœμ• ν•˜λŠ”,

마λ₯΄μ…€λ‘œ 베크만

κ·Έ κ³Όμ •μ—μ„œ ν–‰μš΄μ„ λΉ•λ‹ˆλ‹€!!

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