A A
[ML] K-Means Clustering (K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง)
์•ž์— ๊ธ€์—์„œ ๋น„์ง€๋„ํ•™์Šต์˜ ๊ธฐ๋ฒ•๋“ค์— ๋ฐํ•˜์—ฌ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ์—๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜์ธ  K-Means Clustering (K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง)์— ๋ฐํ•˜์—ฌ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๋ฐ์ดํ„ฐ๋ฅผ K๊ฐœ์˜ ๊ตฐ์ง‘์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์œ ์‚ฌํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๋Š” ๊ตฐ์ง‘ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


K-Means Clustering์˜ ํŠน์ง•

K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ํŠน์ง•์€ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

https://towardsdatascience.com/k-means-a-complete-introduction-1702af9cd8c?gi=d3aab66db208

 

1. ๊ตฐ์ง‘ ์ˆ˜ K: ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฐ์ง‘ ์ˆ˜ K๋ฅผ ์‚ฌ์ „์— ์ •์˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ๊ฐ’์€ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์— ์ง๊ฒฐ๋˜๋Š” ์ค‘์š”ํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค.

  • ์ ์ ˆํ•œ K๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ตฐ์ง‘ํ™”์˜ ์„ฑ๊ณต ์—ฌ๋ถ€์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

2. ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ(Euclidean Distance)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ„์˜ ์œ ์‚ฌ์„ฑ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ตฐ์ง‘ ์ค‘์‹ฌ(centroid)์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

3. ํ‰๊ท  ์ค‘์‹ฌ: ๊ฐ ๊ตฐ์ง‘์˜ ์ค‘์‹ฌ์€ ํ•ด๋‹น ๊ตฐ์ง‘์— ์†ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์˜ ํ‰๊ท  ๊ฐ’์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  • ์ด๋Š” ๊ตฐ์ง‘์˜ ๋Œ€ํ‘œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ดํ›„ ๋‹จ๊ณ„์—์„œ ๊ตฐ์ง‘ ํ• ๋‹น์˜ ๊ธฐ์ค€์ ์ด ๋ฉ๋‹ˆ๋‹ค.

4. ๋ฐ˜๋ณต์  ๊ณผ์ •: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๊ตฐ์ง‘ ํ• ๋‹น๊ณผ ์ค‘์‹ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ตœ์ ์˜ ๊ตฐ์ง‘์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

  • ์ด ๊ณผ์ •์€ ๊ตฐ์ง‘ ์ค‘์‹ฌ์ด ๋” ์ด์ƒ ๋ณ€ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์ •๋œ ๋ฐ˜๋ณต ํšŸ์ˆ˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

5. ๊ณ„์‚ฐ ํšจ์œจ์„ฑ: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๋น„๊ต์  ๊ณ„์‚ฐ ํšจ์œจ์„ฑ์ด ๋†’์•„ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋Š” ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋‚˜ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ถ„์„์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

K-Means Clustering์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

๊ทธ๋Ÿฌ๋ฉด K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์—๋Š” ์–ด๋– ํ•œ ๊ฒƒ๋“ค์ด ์žˆ์„๊นŒ์š”?

https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

 

1. ์ดˆ๊ธฐํ™”: K๊ฐœ์˜ ๊ตฐ์ง‘ ์ค‘์‹ฌ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์ค‘์‹ฌ์€ ์ž„์˜๋กœ ์„ ํƒ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ์ž‘์ ์ด ๋ฉ๋‹ˆ๋‹ค.

2. ํ• ๋‹น ๋‹จ๊ณ„: ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ตฐ์ง‘ ์ค‘์‹ฌ์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์™€ ๊ตฐ์ง‘ ์ค‘์‹ฌ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ตœ์†Œ ๊ฑฐ๋ฆฌ์˜ ์ค‘์‹ฌ์— ํ•ด๋‹น ํฌ์ธํŠธ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

3. ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„: ๊ฐ ๊ตฐ์ง‘์˜ ์ค‘์‹ฌ์„ ํ•ด๋‹น ๊ตฐ์ง‘์— ์†ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์˜ ํ‰๊ท ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  • ์ด ๊ณผ์ •์€ ์ƒˆ๋กœ์šด ์ค‘์‹ฌ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ด์ „ ๋‹จ๊ณ„์—์„œ์˜ ํ• ๋‹น ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • cj๋Š” ๊ตฐ์ง‘ j์˜ ์ƒˆ๋กœ์šด ์ค‘์‹ฌ, Cj๋Š” ๊ตฐ์ง‘ j์— ์†ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

4. ๋ฐ˜๋ณต: ํ• ๋‹น ๋‹จ๊ณ„์™€ ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ด ๊ณผ์ •์€ ๊ตฐ์ง‘ ์ค‘์‹ฌ์ด ๋” ์ด์ƒ ๋ณ€ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ง€์ •๋œ ๋ฐ˜๋ณต ํšŸ์ˆ˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์€ ์ตœ์ ์˜ ๊ตฐ์ง‘์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

K-Means Clustering์˜ ์ˆ˜์‹

  • ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ: ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ (xi)์™€ ๊ตฐ์ง‘ ์ค‘์‹ฌ (cj) ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

  • ๊ตฐ์ง‘ ์ค‘์‹ฌ ์—…๋ฐ์ดํŠธ: ๊ตฐ์ง‘ (Cj)์˜ ์ƒˆ๋กœ์šด ์ค‘์‹ฌ (cj)๋Š” ํ•ด๋‹น ๊ตฐ์ง‘์— ์†ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์˜ ํ‰๊ท  ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

  • ๋ชฉ์  ํ•จ์ˆ˜: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๊ตฐ์ง‘ ๋‚ด ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์™€ ๊ตฐ์ง‘ ์ค‘์‹ฌ ๊ฐ„์˜ ์ด ๊ฑฐ๋ฆฌ ์ œ๊ณฑํ•ฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ์  ํ•จ์ˆ˜ (J)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  • J๋Š” ๋ชฉ์ ํ•จ์ˆ˜ ๊ฐ’, K๋Š” ๊ตฐ์ง‘์˜ ์ˆ˜, Cj๋Š” ๊ตฐ์ง‘ j์— ์†ํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋“ค์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

K-Mean Clustering์˜ ์žฅ,๋‹จ์ 

https://www.kaggle.com/code/heeraldedhia/kmeans-clustering-for-customer-data

K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ์žฅ์ 

1. ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฆ„: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋งŽ์€ ์‹ค์ œ ์‘์šฉ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2. ํ•ด์„ ์šฉ์ด: ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ๊ทธ๋ฃนํ™” ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ ์‹œ๊ฐํ™”๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ํ™•์žฅ์„ฑ: ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•ด ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ๋‹จ์ 

1. K์˜ ๊ฒฐ์ • ์–ด๋ ค์›€: ์ ์ ˆํ•œ ๊ตฐ์ง‘ ์ˆ˜ K๋ฅผ ์‚ฌ์ „์— ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ K๋ฅผ ์„ ํƒํ•  ๊ฒฝ์šฐ, ๊ตฐ์ง‘ํ™” ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ดˆ๊ธฐ ์ค‘์‹ฌ์— ๋ฏผ๊ฐ: ์ดˆ๊ธฐ ๊ตฐ์ง‘ ์ค‘์‹ฌ์˜ ์„ ํƒ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์ด ์ œ์•ˆ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๊ตฌํ˜• ๊ตฐ์ง‘๋งŒ ์ฐพ์Œ: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๊ตฐ์ง‘์˜ ๋ชจ์–‘์ด ๊ตฌํ˜•(spherical)์— ๊ฐ€๊น๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณต์žกํ•œ ํ˜•ํƒœ์˜ ๊ตฐ์ง‘์„ ์ฐพ๋Š” ๋ฐ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋…ธ์ด์ฆˆ์™€ ์ด์ƒ์น˜์— ๋ฏผ๊ฐ: K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๋…ธ์ด์ฆˆ์™€ ์ด์ƒ์น˜์— ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฐ์ง‘ํ™” ๊ฒฐ๊ณผ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


K-Mean Clustering์˜ ๊ฐœ์„  ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌ๋ฉด, K-ํ‰๊ท  Clustering์„ ๊ฐœ์„  ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.linkedin.com/pulse/k-means-elbow-method-clustering-bogus%C5%82aw-konefa%C5%82/

 

1. K-Means++ ์ดˆ๊ธฐํ™”: ์ดˆ๊ธฐ ๊ตฐ์ง‘ ์ค‘์‹ฌ์„ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•˜์—ฌ, ์ˆ˜๋ ด ์†๋„๋ฅผ ๋†’์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์ค‘์‹ฌ์„ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•œ ํ›„, ๋‚˜๋จธ์ง€ ์ค‘์‹ฌ์€ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

2. ์—˜๋ณด์šฐ ๋ฐฉ๋ฒ• (Elbow Method): ์ตœ์ ์˜ ๊ตฐ์ง‘ ์ˆ˜ K๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋ชฉ์  ํ•จ์ˆ˜ J์˜ ๊ฐ์†Œ์œจ์ด ๊ธ‰๊ฒฉํžˆ ์ค„์–ด๋“œ๋Š” ์ง€์ (์—˜๋ณด์šฐ ํฌ์ธํŠธ)์„ ์ฐพ์•„ ์ตœ์ ์˜ K๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

3. ์‹ค๋ฃจ์—ฃ ๋ถ„์„ (Silhouette Analysis): ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž˜ ๊ตฐ์ง‘ํ™”๋˜์—ˆ๋Š”์ง€๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ์‹ค๋ฃจ์—ฃ ๊ฐ’์€ -1์—์„œ 1 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ๊ฐ’์ด ํด์ˆ˜๋ก ๋” ์ž˜ ๊ตฐ์ง‘ํ™”๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ตฐ์ง‘์˜ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

K-Mean Clustering Example Code

!kaggle datasets download -d mlg-ulb/creditcardfraud
!unzip creditcardfraud.zip
# K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง ์˜ˆ์ œ

# ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ
data = pd.read_csv('/content/creditcard.csv')
data.head()
# ํ•„์š”ํ•œ ํŠน์„ฑ ์„ ํƒ
X = data.drop(['Time', 'Class'], axis=1)

# ๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# K-ํ‰๊ท  ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐ ํ•™์Šต
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X_scaled)

# ํด๋Ÿฌ์Šคํ„ฐ๋ง ๊ฒฐ๊ณผ ์‹œ๊ฐํ™” (PCA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2์ฐจ์›์œผ๋กœ ์ถ•์†Œ)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

plt.figure(figsize=(10, 7))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('K-Means Clustering of Credit Card Fraud Dataset')
plt.show()