반응형

Python에서 JSON(JSON(JavaScript Object Notation))은 데이터를 구조적으로 표현하기 위한 포맷으로, 웹 애플리케이션에서 자주 사용됩니다. Python에서 JSON을 처리하는 방법은 json 모듈을 사용하여 쉽게 다룰 수 있습니다. 이 모듈을 통해 JSON 데이터를 파싱하거나 직렬화(serialize)할 수 있습니다.

 

다음은 Python을 활용한 JSON 처리 방법 3가지와 예시입니다:

1. JSON 문자열을 Python 객체로 변환 (JSON 파싱)

json.loads() 함수를 사용하여 JSON 형식의 문자열을 Python 객체로 변환할 수 있습니다. 이 함수는 JSON 문자열을 파싱하여 Python의 데이터 타입(딕셔너리, 리스트 등)으로 변환합니다.

import json

# JSON 형식의 문자열
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'

# JSON 문자열을 Python 객체로 변환
data = json.loads(json_string)

# 변환된 데이터 출력
print(data)  # {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(type(data))  # <class 'dict'>

 

2. Python 객체를 JSON 문자열로 변환 (직렬화)

json.dumps() 함수를 사용하여 Python 객체를 JSON 형식의 문자열로 변환할 수 있습니다. 이 함수는 Python 객체(예: 딕셔너리, 리스트 등)를 JSON 문자열로 직렬화합니다.

import json

# Python 객체 (딕셔너리)
data = {
    "name": "Bob",
    "age": 25,
    "city": "San Francisco"
}

# Python 객체를 JSON 문자열로 변환
json_string = json.dumps(data, indent=4)

# JSON 문자열 출력
print(json_string)
# 출력
{
    "name": "Bob",
    "age": 25,
    "city": "San Francisco"
}

indent 인자를 사용하여 출력 형식을 더 읽기 쉽게 할 수 있습니다.

 

3. JSON 파일 읽기 및 쓰기

Python에서 json.load()와 json.dump()를 사용하여 JSON 파일을 읽고 쓸 수 있습니다.

 

예시 1: JSON 파일 쓰기

import json

# Python 객체 (딕셔너리)
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Los Angeles"
}

# JSON 파일에 데이터 쓰기
with open('data.json', 'w') as file:
    json.dump(data, file, indent=4)

 

예시 2: JSON 파일 읽기

import json

# JSON 파일에서 데이터 읽기
with open('data.json', 'r') as file:
    data = json.load(file)

# 읽은 데이터 출력
print(data)
# 출력
{'name': 'Charlie', 'age': 35, 'city': 'Los Angeles'}

 

요약

  1. json.loads() : JSON 문자열을 Python 객체로 변환.
  2. json.dumps() : Python 객체를 JSON 문자열로 변환.
  3. json.load() : JSON 파일을 읽어 Python 객체로 변환.
  4. json.dump() : Python 객체를 JSON 파일에 저장.

이렇게 json 모듈을 사용하면 JSON 데이터를 쉽고 효율적으로 처리할 수 있습니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] 예외처리 try, except  (0) 2024.11.14
[Python] map  (0) 2024.11.13
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

파이썬에서 예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 오류를 처리하기 위한 기법입니다. 예외 처리 덕분에 오류가 발생해도 프로그램이 비정상적으로 종료되지 않고, 지정된 대체 작업을 수행하거나 오류 메시지를 사용자에게 적절히 제공할 수 있습니다.

기본적인 예외 처리 구문

파이썬에서 예외 처리는 try, except, else, finally 구문을 사용합니다.

  • try: 예외가 발생할 수 있는 코드를 작성합니다.
  • except: 예외가 발생했을 때 처리할 코드를 작성합니다.
  • else: 예외가 발생하지 않았을 때 실행할 코드를 작성합니다.
  • finally: 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성합니다.

 

기본 구조

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType as e:
    # 예외 처리 코드
else:
    # 예외가 발생하지 않았을 경우 실행되는 코드
finally:
    # 항상 실행되는 코드 (자원 정리 등)

 

 

예시 1: 0으로 나누기 예외 처리

try:
    x = 10 / 0  # 0으로 나누기 시도
except ZeroDivisionError as e:
    print(f"오류 발생: {e}")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("예외 처리 완료.")

 

설명: 0으로 나누기를 시도하면 ZeroDivisionError가 발생하고, 예외 처리 코드가 실행됩니다.

 

 

예시 2: 파일 열기 예외 처리

try:
    with open("non_existent_file.txt", "r") as f:
        content = f.read()
except FileNotFoundError as e:
    print(f"파일을 찾을 수 없습니다: {e}")
else:
    print("파일 읽기 성공")
finally:
    print("파일 처리 완료.")

설명: non_existent_file.txt라는 파일이 존재하지 않아 FileNotFoundError가 발생합니다. 예외 처리에서 오류 메시지가 출력됩니다.

 

 

예시 3: 사용자 입력에 대한 예외 처리

try:
    number = int(input("숫자를 입력하세요: "))  # 숫자로 변환
except ValueError as e:
    print(f"유효하지 않은 숫자 입력: {e}")
else:
    print(f"입력한 숫자는 {number}입니다.")
finally:
    print("입력 처리 완료.")

설명: 사용자가 숫자가 아닌 값을 입력할 경우 ValueError가 발생하고 예외 처리 코드가 실행됩니다.

 

예외 처리에서 주의할 점

  • 구체적인 예외를 처리하는 것이 좋습니다. except Exception처럼 모든 예외를 처리하면, 어떤 오류가 발생했는지 추적하기 어려울 수 있습니다.
  • 예외 처리 코드 내에서 불필요한 로직을 작성하지 않도록 하여 코드가 복잡해지지 않도록 합니다.
  • finally 구문은 자원 해제나 파일 닫기 등, 반드시 실행되어야 하는 코드에 유용합니다.

이러한 예외 처리 기법을 활용하면 프로그램이 예기치 않은 오류로 종료되지 않고 안정적으로 동작할 수 있습니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] JSON 처리  (0) 2024.11.15
[Python] map  (0) 2024.11.13
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

map() 함수는 주어진 함수를 iterable의 각 항목에 적용하여 새로운 iterable을 반환하는 함수입니다. 특히 반복문을 사용할 때 보다 간결한 코드로 변환할 수 있어 유용합니다.

 

map() 함수

map() 함수는 다음과 같은 구문을 가집니다:

map(function, iterable)

 

 

  • function: 각 항목에 적용할 함수.
  • iterable: 반복 가능한 객체(리스트, 튜플 등).

map() 함수는 function을 iterable의 모든 요소에 적용하고, 그 결과를 새로운 iterable로 반환합니다. 결과는 map 객체로 반환되므로, 이를 리스트나 다른 자료형으로 변환해야 사용할 수 있습니다.

 

 

예시 1: 리스트의 모든 값을 제곱하기

map() 함수와 lambda 함수를 사용하여 리스트의 모든 값을 제곱할 수 있습니다.

numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares))

 

 

출력:

[1, 4, 9, 16, 25]

 

 

예시 2: 문자열 리스트에서 대문자로 변환하기

map()을 사용하여 문자열 리스트의 모든 요소를 대문자로 변환할 수 있습니다.

words = ["apple", "banana", "kiwi"]
uppercase_words = map(str.upper, words)
print(list(uppercase_words))

 

출력:

['APPLE', 'BANANA', 'KIWI']

 

 

예시 3: 두 리스트의 각 항목 더하기

map()을 사용하여 두 개의 리스트에서 같은 위치의 항목을 더할 수 있습니다. 이때 zip()과 결합하여 사용할 수 있습니다.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed = map(lambda x, y: x + y, list1, list2)
print(list(summed))

 

출력:

[5, 7, 9]

 

 

요약

  • map() 함수는 주어진 함수를 iterable의 각 요소에 적용할 때 유용합니다.
  • 코드가 간결해지고, 반복문을 사용하지 않고도 같은 작업을 할 수 있어 가독성이 높아집니다.
  • lambda 함수와 결합하여 짧고 효율적으로 사용할 수 있습니다.
반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] JSON 처리  (0) 2024.11.15
[Python] 예외처리 try, except  (0) 2024.11.14
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

파이썬에서 자주 사용하는 기능 중 하나는 리스트 컴프리헨션(List Comprehension) 입니다. 이 기능은 기존의 리스트를 기반으로 새로운 리스트를 간결하고 효율적으로 생성할 수 있게 해줍니다.

# 1부터 10까지의 숫자 중 짝수만 추출하여 새로운 리스트 생성
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]

print(even_numbers)  # 출력: [2, 4, 6, 8, 10]

 

이 코드에서는 x for x in numbers if x % 2 == 0를 사용하여 리스트의 각 요소를 순회하면서 짝수인 값만 필터링하여 새로운 리스트를 만듭니다. 리스트 컴프리헨션을 사용하면 for문을 이용해 새로운 리스트를 만드는 것보다 코드가 간결하고 읽기 쉬워집니다.

 

리스트 컴프리헨션을 활용한 다양한 예시를 소개할게요. 각각의 예시는 파이썬에서 자주 사용되는 패턴을 기반으로 만들었습니다.

 

 

1. 1부터 20까지의 숫자 중 제곱수가 50 이하인 숫자 리스트 만들기

squares = [x**2 for x in range(1, 21) if x**2 <= 50]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49]

 

여기서는 1부터 20까지의 숫자 중 제곱한 값이 50 이하인 숫자들만 포함하는 리스트를 생성합니다.

 

 

2. 문자열 리스트에서 길이가 5 이상인 단어만 필터링하기

words = ['apple', 'bat', 'banana', 'cherry', 'date']
long_words = [word for word in words if len(word) >= 5]
print(long_words)  # 출력: ['apple', 'banana', 'cherry']

 

이 예시에서는 문자열 리스트에서 길이가 5 이상인 단어들만 뽑아내는 리스트 컴프리헨션을 사용했습니다.

 

 

3. 주어진 리스트에서 각 숫자에 10을 더한 값으로 새로운 리스트 만들기

numbers = [1, 2, 3, 4, 5]
incremented_numbers = [x + 10 for x in numbers]
print(incremented_numbers)  # 출력: [11, 12, 13, 14, 15]

 

이 코드는 주어진 numbers 리스트의 각 숫자에 10을 더하여 새로운 리스트를 만드는 예시입니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] 예외처리 try, except  (0) 2024.11.14
[Python] map  (0) 2024.11.13
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
[연결 리스트] 두 수의 덧셈  (0) 2021.03.03
반응형

Veterans Day는 미국에서 매년 11월 11일에 기념되는 날로, 미국 군인들의 서비스와 희생을 기리기 위한 날입니다. 이 날은 전 세계적으로 두 가지 중요한 기념일이 겹치는 날이기도 합니다.

  1. 제1차 세계대전 종전일 (Armistice Day):
    • 1918년 11월 11일은 제1차 세계대전의 종전을 의미하는 날로, 독일과 연합국 사이에 휴전 협정이 체결되었습니다. 이 날, 전투는 11월 11일 오전 11시에 종료되었고, 그로 인해 "11월 11일"은 전쟁의 종식을 상징하는 중요한 날짜가 되었습니다.
    • 이후 많은 나라에서 이 날을 Armistice Day(휴전기념일)로 기념했으나, 미국은 나중에 이를 Veterans Day로 변경했습니다.
  2. Veterans Day로의 변화:
    • 1954년, 미국 의회는 Armistice Day를 군 복무를 마친 모든 미국 전역의 퇴역 군인을 기리는 날로 확장하고, 이를 Veterans Day로 명명했습니다.
    • 이 변화는 제2차 세계대전과 한국전쟁을 포함해 여러 전쟁에서 복무한 모든 군인들을 대상으로 한 것입니다. 그 이전에는 오직 제1차 세계대전의 군인들만을 기념하는 날이었으므로, Veterans Day는 전쟁에 상관없이 모든 군인의 희생을 기리는 날로 변하게 되었습니다.

Veterans Day의 주요 의미:

  • 군인의 헌신과 희생을 기림: 이 날은 전쟁에서 복무한 군인들의 헌신과 희생을 인정하고 감사하는 날입니다. 또한, 현역 군인들에게도 감사를 표하는 의미를 담고 있습니다.
  • 국가적 존경의 표시: Veterans Day는 미국 전역에서 군인들을 존경하고 기리기 위한 행사들이 열립니다. 많은 도시에서 퍼레이드, 기념식, 참배 등의 행사가 진행됩니다.
  • 국기 게양: 이날 미국의 모든 정부 기관과 군사 기지는 성조기를 게양하며, 종종 국기 하강식도 이루어집니다.

Veterans Day와 다른 기념일들의 차이점:

  • Memorial Day (추모의 날): Memorial Day는 군인들이 전쟁 중에 전사한 희생자들을 기리는 날로, 5월 마지막 월요일에 기념됩니다. Veterans Day는 전사자뿐만 아니라 모든 퇴역 군인들을 기리기 때문에 다릅니다.
  • Armed Forces Day (군인의 날): Armed Forces Day는 5월 셋째 주 토요일로, 현재 군 복무 중인 군인들을 기리는 날입니다. 따라서 Veterans Day는 퇴역 군인을 위한 날로 구분됩니다.

주요 행사:

  • 퍼레이드: 미국 전역에서 주요 도시들에서는 퍼레이드가 열립니다. 특히 **워싱턴 D.C.**에서는 대규모 퍼레이드가 열리며, 많은 전역 군인들과 그 가족들이 참여합니다.
  • 기념식: 국가적인 기념식에서는 대통령을 비롯한 고위 정치인들이 연설을 하며, 전역 군인들에게 감사의 뜻을 전합니다.
  • 학교와 정부기관의 휴일: Veterans Day는 미국의 공식 휴일로, 많은 학교와 공공기관들이 이 날을 기념하여 휴무일을 갖습니다. 다만, 민간 부문에서는 기업이나 상점들이 여전히 운영되기도 합니다.

Veterans Day의 의미:

Veterans Day는 미국 역사에서 군인들의 역할을 강조하는 중요한 날입니다. 이 날은 단순히 군인들의 서비스를 기리는 것을 넘어서, 미국의 자유와 민주주의를 지키기 위한 군인들의 희생을 기억하고 그들에게 감사하는 날입니다. 또한, 사회적으로 군인들이 겪는 심리적, 신체적 고통에 대한 인식도 제고하는 계기가 되기도 합니다.


Veterans Day는 미국 전역에서 깊은 의미를 지닌 날이며, 이를 통해 군인들의 헌신과 희생을 되새기며, 그들에게 감사하는 마음을 전하는 날입니다.

반응형
반응형

Ⅰ. 머신러닝 모델 개발 자동화, AutoML의 개요

가. AutoML 개념

- 머신러닝 모델을 학습하고 배포하는 과정을 자동화하여 필요한 인력, 비용, 시간을 줄이고 최적의 성능을 찾아내는 프로세스

 

나. AutoML 등장배경

1. 머신러닝 생선성 강화 필요: AI 플랫폼 기반 머신러닝 파이프라인 서비스 생산성 강화

2. 도메인 전문가 부족: 알고리즘 개선에 필요한 도메인 전문가 부족

3. 전이학습 기반 한계: 학습 모델 재사용에 따른 오류 방지

 

Ⅱ. AutoML 구성 및 구성요소

가. AutoML 구성도

- 데이터 특징 추출, 하이퍼파라미터 최적화, 신경망 아키텍처 탐색 프로세스 자동화

 

나. AutoML 구성요소별 주요기법

구성요소 주요 기법 설명
하이퍼파라미터
최적화
- 그리드 탐색
- 랜덤 탐색
- 베이지안 탐색
- 학습률, 배치크기, 학습 반복 횟수, 손실함수, 등 학습에 영향주는 하이퍼파라미터 최적화
데이터 특징 추출 - 도메인 엔지니어링
- 차원 축소
- 탐색적 데이터 분석
- 학습 데이터를 그대로 사용하지 않고 유의미한 특징을 추출하여 입력
- 통계적 기법 또는 시각화 기법 활용하여 데이터 분석
신경망 아키텍처 탐색 - 진화 알고리즘 기반
- 강화학습 기반
- 모델링 전체 프로세스를 직접 설계하는 대신 학습을 통해 최적의 아키텍처를 설계

 

Ⅲ. AutoML 종류 및 특징

구분 종류 특징
Open Source Software - Auto-sklearn
- AutoKeras
- AdaNet
- 커스터마이징 자유로움
- 높은 컴퓨팅 자원 필요
- 모델 평가, 배포 등 기능 미흡
Cloud Provider Solution - Cloud AutoML
- Sagemaker Autopilot
- Azure
- 데이터 전처리, 피처 엔지니어링
- 자동 기계학습 모형 선택
- 모형 해석 지원
Enterprise solution - DataRobot
- H2O
- 자동 모델 생성, 모델 검증
- 모델 배포, 모니터링
반응형

'IT 기술 > 인공지능' 카테고리의 다른 글

전이학습  (0) 2024.10.24
XAI(eXplainable AI)  (1) 2024.10.24
초거대 AI  (1) 2024.10.24
RAG(Retrieval Augmented Generation)  (0) 2024.10.24
sLLM  (1) 2024.10.24
반응형

Ⅰ. 지식 이전을 통한 학습, 전이학습의 개념

- 기존의 학습된 모델과 비슷한 유형의 다른 모델로 학습된 결과를 옮겨서 부족한 데이터나 학습 시간을 보완하는 머신러닝 기법

 

Ⅱ. 전이학습의 유형

구분 유형 설명
적용 범위 과업 전이 - 영상인식에서 음성인식으로 Task 변경
- Feature extraction:  기존 학습모델의 일부 계층 재사용
- Fine Tuning: 기존 학습모델 전체 또는 일부 재학습
도메인 전이 - 영불번역기를 영한번역기로 전이하는 것 처럼 데이터 확률분포가 다른 경우
데이터셋
레이블 여부
귀납 - Multi-task: 하나의 학습데이터로 여러가지 분류 문제 처리
- Self-taught: 원본 데이터 Labeled 변환
변형 - source data의 label 이용하여 target data에 맞도록 학습
자율 - Unlabeled Data간 학습 진행

 

Ⅲ. 전이학습의 주요학습 기법

학습 기법 설명
Fine-tuned - 미리 학습된 모델의 마지막 Fully Connected Layer만 변경
Pre-trained Model - 미리 학습된 모델의 가중치를 새로운 모델에 적용
Layer Re-use - 모델의 일부 Layer를 재사용하여 부족 Data Domain 모델 구축에 활용
반응형

'IT 기술 > 인공지능' 카테고리의 다른 글

AutoML  (0) 2024.10.24
XAI(eXplainable AI)  (1) 2024.10.24
초거대 AI  (1) 2024.10.24
RAG(Retrieval Augmented Generation)  (0) 2024.10.24
sLLM  (1) 2024.10.24
반응형

Ⅰ. 설명 가능한 인공지능, XAI의 개요

가. XAI의 개념

- 인공지능 모델의 최종 결과물에 대해서 추론 과정과 원인에 대한 설명이 가능하도록 하여 사용자가 쉽게 이해할 수 있도록 하는 인공지능 기술

 

나. XAI의 등장 배경

인공지능 영향력 확산 - 국가의 경제성장 기여
- 금융, 교통, 교육 등 전 분야 의사결정 지원
인공지능 역기능 사례 증가 - 블랙박스 모델에 의한 결과 해석 불가
XAI로 문제 해결 - 의사결정 투명성 확보
- 공정성, 신뢰성 보장

 

Ⅱ. XAI 구현 기술

구분 세부 기술 설명
기존 학습모델
변경 기술
역 합성곱 신경망 - 기존 학습 모델에 역산 과정 추가 및 수정
추론 및 시각화 - 합성곱 신경망의 학습 과정 역산으로 결과 영향 요소 추론 및 시각화
새로운 학습모델
기술
확률적 AND-OR 그래프 - 원인, 결과 도출 과정이 표현 가능한 학습 모델
- 입력 데이터의 특징을 관계 그래프로 생성
학습 모델 간
비교 기술
상호 대조 및 추론 - 설명 가능한 다른 분류 모델과의 상호 대조로 최종 결과물 설명

 

Ⅲ. XAI가 인공지능에 미치는 영향

구분 영향 설명
사회적
측면
사용자의 신뢰 확보 - 다양한 분야의 사용자로부터 신뢰 확보
공감대 형성 - 편향된 결과 제거, 문제에 타당한 설명
기술적
측면
고성능 학습모델 도출 - 학습 모델 간 비교로 적합한 학습 모델 도출
새로운 AI 전략 도출 - 학습 과정 다양한 패턴 추출, 분석하여 새로운 전략 도출
법/제도
측면
분쟁에 대한 원인 파악 - 인공지능 시스템의 잘못된 판단에 의한 원인 파악 가능
GDPR등 규정준수 여부 판단 - 개인정보보호 규정과 같은 규정 준수 여부 판단 가능
인공지능산업
측면
인공지능 산업 활성화 - 인공지능에 대한 부정적 인식 제거로 산업 활성화
비즈니스 활용수요 증가 - 설명가능한 효과적인 의사결정으로 수요 증가
반응형

'IT 기술 > 인공지능' 카테고리의 다른 글

AutoML  (0) 2024.10.24
전이학습  (0) 2024.10.24
초거대 AI  (1) 2024.10.24
RAG(Retrieval Augmented Generation)  (0) 2024.10.24
sLLM  (1) 2024.10.24

+ Recent posts