Numpy: μ •κ·œν™”λœ μƒν˜Έ 상관(Trac #1714)

에 λ§Œλ“  2012λ…„ 10μ›” 20일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

_trac μ‚¬μš©μž bublaκ°€ 2011-01-15에 원본 ν‹°μΌ“ http://projects.scipy.org/numpy/ticket/1714 , unknown에 ν• λ‹Ήν–ˆμŠ΅λ‹ˆλ‹€._

μ•ˆλ…•ν•˜μ‹­λ‹ˆκΉŒ,
이제 μ •κ·œν™”λœ μƒν˜Έ 상관을 계산할 수 μžˆλ„λ‘ correlate ν•¨μˆ˜λ₯Ό ν™•μž₯ν•˜λŠ” 패치λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
[ http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross -correlation the Wikipedia 기사]λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

λ¬Όλ‘  λ¬Έμ„œμ™€ κ°„λ‹¨ν•œ doctest도 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
νŒ¨μΉ˜λŠ” μ΅œμ‹  λ§ˆμŠ€ν„° Git에 λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€.

01 - Enhancement Patch numpy.core

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

μ—¬κΈ°λ₯Ό κ°€λ¦¬ν‚€λŠ” SO에 λŒ€ν•œ 닡변이 μžˆμŠ΅λ‹ˆλ‹€. https://stackoverflow.com/a/5639626/5392420

λ˜ν•œ κ°€μž₯ 관련성이 높은 μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ 첨뢀 νŒŒμΌμ€ 더 이상 μ‚¬μš©ν•  수 μ—†μœΌλ―€λ‘œ(적어도 λ‚˜μ—κ²ŒλŠ”) κ΅¬ν˜„μ„ μœ„ν•œ μ‹œμž‘μœΌλ‘œ 이것을 κ°–λŠ” 것이 도움이 될 수 μžˆλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 적어도 제 κ²½μš°μ—λŠ” 이와 같이 np.correlate λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 μž…λ ₯ 벑터λ₯Ό "μ •κ·œν™”"ν•˜κ³  합리적인 값이 [-1,1] λ²”μœ„ λ‚΄μ—μ„œ λ°˜ν™˜λœλ‹€λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

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

2011-01-15에 trac μ‚¬μš©μž bublaκ°€ μΆ”κ°€ν•œ 첨뢀 파일: correlation.parch

__@rgommers λŠ” 2011-03-29에 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

이것은 μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ―€λ‘œ 포함할 수 μžˆλŠ”μ§€ 메일링 λ¦¬μŠ€νŠΈμ— λ¬Έμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ ν•„μš”ν•˜λ©° doctestλŠ” ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈμ—μ„œ 기본적으둜 μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이것은 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λˆ„κ΅°κ°€ 이것이 μ˜¬λ°”λ₯Έμ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

mode='full' 와 μ‘°ν•©ν•˜μ—¬ 무엇이 μ˜³μ€μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

이 κΈ°λŠ₯이 ν•„μš”ν•˜κ²Œ λ˜μ—ˆμ§€λ§Œ mode='valid'이고 두 λ°°μ—΄μ˜ 크기가 같은 경우λ₯Ό μ œμ™Έν•˜κ³  μ˜¬λ°”λ₯Έμ§€ ν™•μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 즉, μ •κ·œν™”λ₯Ό 각 창에 μ μš©ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?
νŒ¨μΉ˜κ°€ λͺ¨λ“  상관 λͺ¨λ“œμ— λŒ€ν•΄ ν…ŒμŠ€νŠΈλ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

@VlamV , μ—¬κΈ°μ—λŠ” 아무것도 μ—†κΈ° λ•Œλ¬Έμ— μ•„λ‹ˆμš”, κ·Έλ ‡κ²Œ 믿지 μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ λͺ¨λ“œμ— λŒ€ν•΄ μˆ˜μ •ν•  μ‹œκ°„μ΄ 있으면 μΆ”κ°€ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

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

μ‹€μ œλ‘œ μ‚¬μš©λ˜λŠ” a λΆ€λΆ„μ˜ ν‘œμ€€νŽΈμ°¨λ‘œ λ‚˜λˆ„λŠ” 것이 더 합리적이지 μ•ŠμŠ΅λ‹ˆκΉŒ( mode=same λ˜λŠ” mode=full )

λ‹¨μˆœνžˆ len(a) λ‚˜λˆ„λŠ” λŒ€μ‹  numpy.corrcoef 의 bias 및 ddof μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것도 μ˜λ―Έκ°€ μ—†μŠ΅λ‹ˆλ‹€

μ—¬κΈ°λ₯Ό κ°€λ¦¬ν‚€λŠ” SO에 λŒ€ν•œ 닡변이 μžˆμŠ΅λ‹ˆλ‹€. https://stackoverflow.com/a/5639626/5392420

λ˜ν•œ κ°€μž₯ 관련성이 높은 μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ 첨뢀 νŒŒμΌμ€ 더 이상 μ‚¬μš©ν•  수 μ—†μœΌλ―€λ‘œ(적어도 λ‚˜μ—κ²ŒλŠ”) κ΅¬ν˜„μ„ μœ„ν•œ μ‹œμž‘μœΌλ‘œ 이것을 κ°–λŠ” 것이 도움이 될 수 μžˆλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 적어도 제 κ²½μš°μ—λŠ” 이와 같이 np.correlate λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 μž…λ ₯ 벑터λ₯Ό "μ •κ·œν™”"ν•˜κ³  합리적인 값이 [-1,1] λ²”μœ„ λ‚΄μ—μ„œ λ°˜ν™˜λœλ‹€λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

μ‹€μ œλ‘œ μ‚¬μš©λ˜λŠ” μ‹ ν˜Έ a 뢀뢄에 μ˜ν•œ μ •κ·œν™”( @wilberth 의 주석 μ°Έμ‘°)λŠ” 이 μ €μž₯μ†Œμ˜ correlation_template ν•¨μˆ˜μ—μ„œ numpy λ©”μ„œλ“œλ‘œ κ΅¬ν˜„λ©λ‹ˆλ‹€. https://github.com/trichter/xcorr

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