๐Ÿ“ฆ๋ถ„์„ ํ”„๋กœ์ ํŠธ/๐Ÿป ์ด๋ชจํ‹ฐ์ฝ˜ ํŠธ๋ Œ๋“œ ๋ฐ ํ†ต๊ณ„ ๋ถ„์„

๐Ÿป ์ด๋ชจํ‹ฐ์ฝ˜ ํŠธ๋ Œ๋“œ ๋ฐ ํ†ต๊ณ„ ๋ถ„์„ (4) - ์ˆ˜์ž‘์—…์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ผ๋ฒจ๋ง

๋ฐ์ดํ„ฐํŒ์Šค 2024. 10. 14. 20:44

์ˆ˜์ž‘์—…์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ : ์ข…๋ฅ˜ ๊ตฌ๋ถ„ํ•˜๊ธฐ

from google.cloud import vision
import io
import os

# ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = r"C:\Users\user\Desktop\google api\emoticon-438506-47c95f919cae.json"


# Vision API ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
client = vision.ImageAnnotatorClient()

# ์ด๋ฏธ์ง€ ์ฝ๊ธฐ
image_path = 'C:\\Users\\user\\Desktop\\google api\\loopy.png'
with io.open(image_path, 'rb') as image_file:
    content = image_file.read()

# Vision API์— ์š”์ฒญ
image = vision.Image(content=content)
response = client.label_detection(image=image)
labels = response.label_annotations

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ
for label in labels:
    print(f"Description: {label.description}, Score: {label.score}")

์ด ์‚ฌ์ง„์„ google vision api๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ•ด ๋ณด์•˜๋Š”๋ฐ์š”

 

Description: Liquid, Score: 0.8188296556472778
Description: Font, Score: 0.7295830845832825
Description: Domestic pig, Score: 0.7196884751319885
Description: Magenta, Score: 0.6961780786514282
Description: Happy, Score: 0.6898753046989441
Description: Fashion accessory, Score: 0.6710424423217773
Description: Saving, Score: 0.6612657904624939
Description: Suidae, Score: 0.6568648815155029
Description: Art, Score: 0.6258362531661987
Description: Toy, Score: 0.6151468753814697

 

๋ถ„์„ ๊ฒฐ๊ณผ ํ•‘ํฌ๋ผ์ง€๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค..^^;;

๊ฒฐ๊ตญ ์ˆ˜์ž‘์—…์œผ๋กœ ํ•ด๋‹น ์บ๋ฆญํ„ฐ ๊ฒ€์ƒ‰ ํ›„ ์‚ฌ๋žŒ,๋™๋ฌผ,์บ๋ฆญํ„ฐ,์Šคํƒ€ ๋กœ ์ข…๋ฅ˜๋ฅผ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค.

 

์ œ๊ฐ€ ๊ธฐํš ๋‹จ๊ณ„์—์„œ ์ˆ˜์ง‘ํ•˜๊ธฐ๋กœ ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€๋ฐ์š”

ํ˜„์žฌ๊นŒ์ง€ ์ˆ˜์ง‘ํ•œ ๊ฒƒ์€ ๋ฐ‘์ค„ ๊ทธ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ชจํ‹ฐ์ฝ˜ ์ด๋ฆ„
  • ์ž‘๊ฐ€๋ช…
  • ์บ๋ฆญํ„ฐ ์œ ํ˜• (๋™๋ฌผ, ์‚ฌ๋žŒ, ์บ๋ฆญํ„ฐ ๋“ฑ)
  • ์ด๋ชจํ‹ฐ์ฝ˜ ์Šคํƒ€์ผ (๊ท€์—ฌ์šด, ์œ ๋จธ๋Ÿฌ์Šคํ•œ, ๊ฐ์„ฑ์ ์ธ ๋“ฑ)
  • ๋ฐœ๋งค์ผ
  • ์ธ๊ธฐ ์ˆœ์œ„
  • ์นดํ…Œ๊ณ ๋ฆฌ (๊ฐ์ • ํ‘œํ˜„, ์ƒํ™ฉ ํ‘œํ˜„, ์—ฐ์• , ํšŒ์‚ฌ, ์นœ๊ตฌ, ๊ณ„์ ˆ/์ด๋ฒคํŠธ ๊ด€๋ จ ๋“ฑ)
  • 10๋Œ€,20๋Œ€,30๋Œ€ ๋ณ„ ์ธ๊ธฐ ์ˆœ์œ„
  • ์ด๋ชจํ‹ฐ์ฝ˜ ์ž‘๊ฐ€์˜ SNS ํŒ”๋กœ์šฐ ์ˆซ์ž(์œ ํŠœ๋ธŒ,์ธ์Šคํƒ€๊ทธ๋žจ,์œ ํŠœ๋ธŒ ๋“ฑ)
  • ๊ฐ ์ด๋ชจํ‹ฐ์ฝ˜์˜ ํƒœ๊ทธ
  • ๋ฐœ๋งค์ผ :  ์นด์นด์˜ค ์ด๋ชจํ‹ฐ์ฝ˜์ƒต์—์„œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•„์„œ ์ œ์™ธ
  • 10๋Œ€,20๋Œ€,30๋Œ€ ๋ณ„ ์ธ๊ธฐ ์ˆœ์œ„ : ๋ชจ๋ฐ”์ผ์—์„œ๋งŒ ์ธ๊ธฐ ์ˆœ์œ„๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์›นํŽ˜์ด์ง€ ์—์„œ๋Š” ์—ฐ๋ น๋Œ€๋ณ„ ์ธ๊ธฐ ์ˆœ์œ„๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ์— ์ˆ˜์ง‘ ๋ถˆ๊ฐ€
  • ์ด๋ชจํ‹ฐ์ฝ˜ ์ž‘๊ฐ€์˜ SNS ์ˆซ์ž : ์ธ์Šคํƒ€๊ทธ๋žจ์„ ํ•˜์ง€ ์•Š๋Š” ์ž‘๊ฐ€๊ฐ€ ๋งŽ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ๊ฒฐ์ธก๊ฐ’์ด ๋งŽ์•„์„œ ์ œ์™ธ
  • ๊ฐ ์ด๋ชจํ‹ฐ์ฝ˜์˜ ํƒœ๊ทธ : ์›๋ž˜ ํฌ๋กค๋ง์„ ํ†ตํ•ด ํƒœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์นด์นด์˜ค๋Š” ์›นํฌ๋กค๋ง์„ ๋ง‰์•„๋†“์•˜๊ธฐ์— ์ œ์™ธ

 

 

์ˆ˜์ž‘์—…์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ : ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ์ค€ ์„ค์ •ํ›„ ๊ตฌ๋ถ„ํ•˜๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ƒ/์—ฐ์• /ํšŒ์‚ฌ ํฌ๊ฒŒ 3๊ฐœ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.

 

์—ฐ์•  ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜ ๊ธฐ์ค€

1. ์ด๋ชจํ‹ฐ์ฝ˜ ์ œ๋ชฉ์ด ์—ฐ์• ,์ปคํ”Œ,ํ•˜ํŠธ,์‚ฌ๋ž‘ ๋“ฑ ์—ฐ์• ์™€ ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ

2. ์ด๋ชจํ‹ฐ์ฝ˜์— ์ปคํ”Œ๋กœ ๋ณด์ด๋Š” ๋‘ ์Œ์˜ ์บ๋ฆญํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ

3. ์ด๋ชจํ‹ฐ์ฝ˜์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ํ•˜ํŠธ, ์—ฐ์•  ๊ด€๋ จ ๋‚ด์šฉ์ผ ๊ฒฝ์šฐ

์—ฐ์• ์™€ ์‚ฌ๋ž‘, ๋กœ๋งจ์Šค ๊ด€๋ จ ์ด๋ชจํ‹ฐ์ฝ˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ•˜ํŠธ, ์‚ฌ๋ž‘ ํ‘œํ˜„, ์—ฐ์ธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์€ ์—ฐ์•  ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•ฉ๋‹ˆ๋‹ค.

 

ํšŒ์‚ฌ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜ ๊ธฐ์ค€

์ด๋ชจํ‹ฐ์ฝ˜ ์ œ๋ชฉ์ด ํšŒ์‚ฌ,์‚ฌํšŒ์ƒํ™œ,์ง์žฅ ๋“ฑ ํšŒ์‚ฌ ๊ด€๋ จ ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ

์—…๋ฌด, ์ŠคํŠธ๋ ˆ์Šค, ์„ฑ๊ณผ ๋“ฑ ์ง์žฅ๊ณผ ์‚ฌํšŒ ์ƒํ™œ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ด๋ชจํ‹ฐ์ฝ˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ง์žฅ์—์„œ ํ”ํžˆ ๊ฒช๋Š” ๊ฐ์ •๊ณผ ์ƒํ™ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

 

์ผ์ƒ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜ ๊ธฐ์ค€

์—ฐ์• ,ํšŒ์‚ฌ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ด๋ชจํ‹ฐ์ฝ˜์€ ์ผ์ƒ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฐ์ •์ด๋‚˜ ์ผ์ƒ ํ™œ๋™์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋“  ์ด๋ชจํ‹ฐ์ฝ˜์ด ์ด ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•ฉ๋‹ˆ๋‹ค.

์ผ์ƒ์ ์ธ ๋Œ€ํ™”์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ • ๋ฐ ์ƒํ˜ธ์ž‘์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฐ์ดํ„ฐ ๋ผ๋ฒจ๋ง : google vision api๋ฅผ ํ™œ์šฉํ•ด ์ด๋ฏธ์ง€ ํŠน์„ฑ ๋ฝ‘์•„๋‚ด๊ธฐ

์ด๋ชจํ‹ฐ์ฝ˜ ์Šคํƒ€์ผ์„ ์ฃผ๊ด€์ ์œผ๋กœ ํ•  ์ˆœ ์—†๊ธฐ์— google cloud vision api๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ชจํ‹ฐ์ฝ˜์˜ ํ‘œ์ •๊ณผ ๊ฐ์ •์„ ๊ฐ์ง€ํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›ƒ์Œ, ๋ˆˆ๋ฌผ, ํ™”๋‚จ, ์‚ฌ๋žŒ ๋“ฑ์˜ ๊ธฐ๋ณธ ๊ฐ์ • ๋ ˆ๋ฒจ์„ ๊ฐ์ง€ํ•ด ์ด๋ชจํ‹ฐ์ฝ˜์˜ ์ฃผ์š” ๊ฐ์ • ํŒŒ์•…ํ›„ ํ•ด๋‹น ์ด๋ชจํ‹ฐ์ฝ˜์ด ์œ ๋จธ๋Ÿฌ์Šคํ•œ์ง€,  ๊ฐ์„ฑ์ ์ธ์ง€,๊ท€์—ฌ์šด์ง€ ๋“ฑ์„ ๋ถ„๋ฅ˜ ํ–ˆ์Šต๋‹ˆ๋‹ค.

import pandas as pd
from google.cloud import vision
import io
import os

# Google Cloud Vision API ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = r"C:\Users\user\Desktop\google api\emoticon-438506-47c95f919cae.json"

# Vision API ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ
client = vision.ImageAnnotatorClient()

# ์ด๋ฏธ์ง€ ํด๋” ๊ฒฝ๋กœ
image_folder = 'C:\\Users\\user\\Desktop\\google api\\'

# ๋ผ๋ฒจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ชจํ‹ฐ์ฝ˜ ์Šคํƒ€์ผ ๋ถ„๋ฅ˜ ํ•จ์ˆ˜
def classify_style(labels):
    for label in labels:
        if label.score >= 0.7:  # ํ™•์‹  ์ ์ˆ˜๊ฐ€ 0.7 ์ด์ƒ์ธ ๋ผ๋ฒจ๋งŒ ์‚ฌ์šฉ
            description = label.description.lower()
            if 'cute' in description or 'adorable' in description:
                return '๊ท€์—ฌ์šด'
            elif 'funny' in description or 'humor' in description:
                return '์œ ๋จธ๋Ÿฌ์Šคํ•œ'
            elif 'emotional' in description or 'heart' in description:
                return '๊ฐ์„ฑ์ ์ธ'
    return '๊ธฐํƒ€'

# ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
data = []

# 1๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ PNG ํŒŒ์ผ์„ ์ฒ˜๋ฆฌ
for i in range(1, 201):
    image_filename = str(i).zfill(4) + '.png'  # ํŒŒ์ผ๋ช…์„ 0001, 0002, ..., 0200 ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ
    image_path = os.path.join(image_folder, image_filename)
    
    # ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
    if os.path.exists(image_path):
        with io.open(image_path, 'rb') as image_file:
            content = image_file.read()

        # Vision API์— ์š”์ฒญ
        image = vision.Image(content=content)
        response = client.label_detection(image=image)
        labels = response.label_annotations
        
        # 0.7 ์ด์ƒ์˜ ๋ผ๋ฒจ๋งŒ ์ถ”์ถœ (ํ™•๋ฅ ์„ ์ œ์™ธํ•˜๊ณ  ์„ค๋ช…๋งŒ ์ถ”์ถœ)
        selected_labels = [label.description for label in labels if label.score >= 0.7]
        
        # ์Šคํƒ€์ผ ๋ถ„๋ฅ˜
        style = classify_style(labels)
        
        # ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
        data.append({
            'Image': image_filename,
            'Labels': ', '.join(selected_labels),  # ๋ผ๋ฒจ์„ ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅ
            'Style': style
        })

# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋ณ€ํ™˜
df = pd.DataFrame(data)

# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ CSV ํŒŒ์ผ๋กœ ์ €์žฅ
df.to_csv('C:\\Users\\user\\Desktop\\emoticon_labels_and_styles.csv', index=False, encoding='utf-8-sig')

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ (์›ํ•œ๋‹ค๋ฉด)
print(df)

 

์ด๋ชจํ‹ฐ์ฝ˜์„ ์ˆ˜์ž‘์—…์œผ๋กœ ์ผ์ผ์ด ์ฐ๊ณ  ํŒŒ์ผ๋ช…์„ ์ˆœ์œ„์™€ ๋งž์ถฐ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ดํ„ฐ๋„ ๋ฆฌํ„ด ์ด๋ชจํ‹ฐ์ฝ˜์„ ์ฐ๊ณ  ํŒŒ์ผ๋ช…์„ 0001, ๋“€..๊ฐ€๋‚˜๋‹ค ์ด๋ชจํ‹ฐ์ฝ˜์„ ์Šคํฌ๋ฆฐ์ƒท ์ฐ๊ณ  ํŒŒ์ผ๋ช…์„ 0002

์ด๋Ÿฐ์‹์œผ๋กœ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.  ํ•ด๋‹น ์Šคํฌ๋ฆฐ์ƒท ์ด 200๊ฐœ๋ฅผ google api๋ผ๋Š” ํด๋”์— ์ €์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค..ใ…Žใ…Ž

 

๊ทธ๋ฆฌ๊ณ  for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ 1~200 ๊นŒ์ง€์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ฝ๊ณ  ์ด๋ฏธ์ง€ ๋ถ„์„ํ•˜์—ฌ csv ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

import pandas as pd
from collections import Counter  # Counter๋ฅผ ์ž„ํฌํŠธ

# 'Labels' ์—ด์—์„œ ๋ชจ๋“  ๋ผ๋ฒจ์„ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„๋ฆฌ
labels = combined_df['Labels'].str.split(', ').explode()

# ๊ฐ ๋ผ๋ฒจ์˜ ๋นˆ๋„ ๊ณ„์‚ฐ
label_counts = Counter(labels)

# ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋ณ€ํ™˜
label_counts_df = pd.DataFrame(label_counts.items(), columns=['Label', 'Count'])

# ๋นˆ๋„ ์ˆœ์œผ๋กœ ์ •๋ ฌ
label_counts_df = label_counts_df.sort_values(by='Count', ascending=False)

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ
print(label_counts_df)

import matplotlib.pyplot as plt

# ์ƒ์œ„ N๊ฐœ์˜ ๋ผ๋ฒจ๋งŒ ํ‘œ์‹œ (์˜ˆ: ์ƒ์œ„ 20๊ฐœ)
top_n = 20
label_counts_top = label_counts_df.head(top_n)

# ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
plt.figure(figsize=(10, 6))
plt.bar(label_counts_top['Label'], label_counts_top['Count'])
plt.title('Label Frequency')
plt.xlabel('Labels')
plt.ylabel('Count')

# x์ถ• ๋ผ๋ฒจ์„ 90๋„๋กœ ํšŒ์ „
plt.xticks(rotation=90)

# ๊ทธ๋ž˜ํ”„ ๋ณด์—ฌ์ฃผ๊ธฐ
plt.tight_layout()
plt.show()

 

์นด์นด์˜ค ์ด๋ชจํ‹ฐ์ฝ˜ ์ƒ์œ„ 200๊ฐœ๋ฅผ ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ†ตํ•ด ๋ผ๋ฒจ๋ง ํ•ด์ฃผ๊ณ  ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ธ ๋ผ๋ฒจ๋“ค์„

20๊ฐœ๋งŒ ๋ฝ‘์•„์„œ ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์‰ผํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์นผ๋Ÿผ๊ฐ’์„ ๋‚˜๋ˆ„์–ด ์ƒˆ ์นผ๋Ÿผ์— ์ €์žฅ

import pandas as pd

# 'Labels' ์—ด์„ ์‰ผํ‘œ๋กœ ๋‚˜๋ˆ„๊ณ , ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ๋ผ๋ฒจ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅ
label_split = combined_df['Labels'].str.split(', ', expand=True)

# ์ƒˆ๋กœ์šด ์—ด ์ด๋ฆ„ ์„ค์ • (๋ผ๋ฒจ1, ๋ผ๋ฒจ2, ๋ผ๋ฒจ3, ...)
label_split.columns = [f'๋ผ๋ฒจ{i+1}' for i in range(label_split.shape[1])]

# ์›๋ž˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ๋ถ„๋ฆฌ๋œ ๋ผ๋ฒจ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์น˜๊ธฐ
df_combined = pd.concat([combined_df, label_split], axis=1)

# ๊ฒฐ๊ณผ ํ™•์ธ
print(df_combined)

# ์ƒˆ๋กœ์šด CSV ํŒŒ์ผ๋กœ ์ €์žฅ
df_combined.to_csv('C:\\Users\\user\\Desktop\\split_label_df.csv', index=False, encoding='utf-8-sig')

 

ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ํƒœ๋ธ”๋กœ์—์„œ๋„ ์ ์šฉํ•˜๊ณ ์ž ์‰ผํ‘œ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๋ธ”๋กœ์—๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ์— ํŒŒ์ด์ฌ์—์„œ ๋‚˜๋ˆ ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ž˜ ๋‚˜๋ˆ„์–ด์กŒ์Šต๋‹ˆ๋‹ค.

 

์ด๋กœ์จ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๋ถ„๋ฅ˜ ์ž‘์—…์ด ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€ ๋ถ€ํ„ด ํƒœ๋ธ”๋กœ์™€ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.