7월, 2026의 게시물 표시

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고 엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석 의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다. 1. Python Programming 문법 가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다. (1) Python 핵심 문법 정리 - 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행 - 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리 - 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화 # 자료구조와 함수 활용 예시 def process_data(data_list): result = {} for item in data_list: if item not in result: result[item] = 1 else: result[item] += 1 return result data = ['apple', 'banana', 'apple', 'orange', 'banana'] count_result = process_data(data) print(count_re...

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

이미지
[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고 엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석 의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다. 1. Python Programming 문법 가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다. (1) Python 핵심 문법 정리 - 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행 - 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리 - 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화 # 자료구조와 함수 활용 예시 def process_data(data_list): result = {} for item in data_list: if item not in result: result[item] = 1 else: result[item] += 1 return result data = ['apple', 'banana', 'apple', 'orange', 'banana'] count_result = process_data(data) print(count_re...

Day006 - Pandas 라이브러리와 데이터 분석

이미지
Day006 - Pandas 라이브러리와 데이터 분석 오늘은 Python 데이터 분석의 핵심 도구인 판다스(Pandas) 라이브러리를 활용하여 데이터프레임(DataFrame)을 조회, 선택, 정렬하고 결측치∙이상치 정제 및 파생 변수를 생성하는 전체 데이터 전처리 흐름을 학습 했다. Pandas DataFrame 및 Series 구조 1. 데이터 분석 : Pandas 라이브러리와 데이터프레임 기초 순수 Python의 반복문(for문 또는 while문)과 리스트(List) 기반 작업에서 벗어나 2차원 표(Table) 형태 구조를 효율적으로 다루기 위해 Pandas 를 사용한다. Pandas 의 핵심 자료구조는 1차원 열 구조인 Series 와 2차원 표 구조인 DataFrame 이다. (1) 데이터 구조 확인 및 탐색 데이터를 블러온 후 데이터의 전체적인 윤곽을 파악하기 위해 다음 메서드(Method)들을 필수적으로 사용한다. - df.head(n) / df.tail(n) : 상단 및 하단 n개 행 미리보기 - df.shape : (행 수, 열 수) 형태의 차원 확인 - df.info() : 각 열의 자료형, 결측치(Non-Null) 수 요약 - df.describe() : 수치형 열의 기술통계량(평균, 표준편차, 중앙값 등) 확인 import pandas as pd import numpy as np # CSV 파일 읽기 및 기초 탐색 df = pd.read_csv("data/cafe_sales.csv")[cite: 3] print("데이터 차원:", df.shape)[cite: 3] print(df.info())[cite: 3] display(df.describe())[cite: 3] (2) 열/행 선택 및 필터링 - 열(Column) 선택 : 단일 대괄호 df['열'] 은 Series 로 반환 되고, 이중 대괄호 df[['열1', '열2']] 는 DataFra...

Day005 - 데이터 수집(Data Acquisition)

이미지
Day005 - 데이터 수집(Data Acquisition) 오늘은 데이터 분석의 첫 단계인 '데이터 수집(Data Acquisition)' 기법 전반을 학습했다. 네이버(Naver)와 공공데이터 포털(Data.go.kr)의 공개 API를 활용부터 브라우저 내장 개발자 도구 분석, 정적∙동적 웹 크롤링(Web Crawling)까지 데이터 수집의 대표적인 방법을 실습 했다. Naver Developers 1. 공개 API 활용 먼저 Open API(Application Programming Interface) 를 활용해 안전하고 정형화된 데이터를 수집했다. API Key 관리를 위해 보안에 유의하며, python-dotenv 라이브러리로 .env 파일에 비밀 Key를 격리 했다. - 네이버 API : requests 모듈(Module) 로 블로그 검색 및 이미지 검색을 수행하고, 특수 문자를 제거하는 정규식 함수를 작성해 이미지 파이프라인을 구축 했다. - 공공데이터 포털 API : 출입국 관광 통계 API를 활용해 국적/월별 방한 외래 관광객 수치 데이터를 JSON 형태로 수집 했다. import os import requests from dotenv import load_dotenv # 환경 변수로 API KEY 보안 관리 load_dotenv() NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID") NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET") 2. 브라우저 내장 개발자 도구(F12)를 통한 내부 API 분석 공개된 API가 없는 경우, 브라우저의 Network 탭(F12)을 활용해 웹페이지 내부에서 주고 받는 API 요청을 역추적(Networking Sniffing) 하는 기법을 익혔다. XHR/Fetch 요청을 분석하여 숨겨진 JSON 데이터 URL을 찾아 직접 요청을 보냄으로써 크롤링 보다 빠른 효율성을 경험 했...

Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class)

이미지
Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class) 오늘은 예외처리(Exception Handling) 및 모듈(Module), 패키지(Package), 그리고 클래스(Class)와 파일 처리(CSV/JSON)를 학습했다. 에러에 대비해 안정적으로 구동되고 데이터를 영속적으로 저장하며 구조화하는 방법에 대해 학습한 내용을 정리해 본다. 1. 예외 처리(Exception Handling) 및 모듈(Module), 패키지(Package) 프로그램 실행 중 발생하는 에러(Error) 로 인해 시스템이 중단되는 현상을 방지하기 위해 try-except 문법을 사용했다. 발생 가능한 예외 형태(ValueError, ZeroDivisonError, FileNotFoundError 등) 를 명확히 지정하여 대처하고, else 와 finally 블록을 활용해 상황별 로직을 분기하는 흐름을 정립했다. 또한 직접 예외를 발생시키는 raise 구문과 모든 예외의 최상위 클래스인 Exception 의 활용법을 학습했다. 예외 처리(try - except - else - finally) 실행 흐름도 더불어 코드의 재사용성을 높이는 모듈(Module)과 패키지(Package) 구조를 습득했다. Python 표준 라이브러리(math, random, datetime) 활용법과 더불어 패키지 폴더 내 __init__.py 의 역할을 이해하고 외부 라이브러리( rich )를 설치하여 터미널 출력을 시각적으로 개선하는 실습도 진행했다. # 예외 처리 및 다중 except 적용 예시 def safe_division(a, b): try: result = a / b except ZeroDivisionError: print("[오류] 0으로 나눌 수 없습니다.") return None except TypeError: print("[오류] 숫자형 데이...

Day003 - 함수와 자료구조

이미지
Day003 - 함수와 자료구조 오늘 학습한 함수(Function), 람다(Lambda), 자료 구조(Data Structures) 그리고 코드의 가독성을 한 단계 올려 주는 컴프리헨션(Comprehension)까지 정리해 본다. 1. 함수(Function) 함수는 반복되는 코드를 재사용 가능하게 만드는 도구다. def 키워드를 사용해 정의하고, 매개변수(Parameter) 로 값을 받아 return 으로 결과를 돌려 받는다. 파이썬 함수 정의와 호출 흐름 - print vs return : print 는 결과를 화면에 보여주기만 하지만, return 은 값을 함수 밖으로 반환하여 재사용 가능한 형태로 만든다. - 다중 반환: return a, b 처럼 여러 개의 값을 한 번에 반환할 수 있으며, 이 반환 값은 튜플(Tuple) 형식을 갖고 있다. - 변수 스코프: 함수 내부에서 선언된 변수는 지역변수 , 외부에서 선언된 변수는 전역 변수(global)  이다. # 함수 정의 및 다중 반환 예시 def min_max(a, b, c): """최솟값과 최댓값을 구하여 튜플로 반환"""[cite: 1] return min(a, b, c), max(a, b, c)[cite: 1] smallest, largest = min_max(7, 2, 9)[cite: 1] print(f"최소: {smallest}, 최대: {largest}")[cite: 1] 2. 자료구조(Data Structures) 데이터의 특성에 맞춰 올바른 구조(자료구조)를 선택하는 법을 학습한다. 자료 구조 비교 요약 (1) 리스트(List) & 튜플(Tuple) - 리스트 [ ] : 순서가 존재하며, 요소를 변경 & 수정할 수 있는 가변(Mutable) 구조이다. - 튜플 ( ) : 순서는 있지만, 한 번 생성되면 수정이 불가능 한 불변(Immutable) 구조이다. (2) 딕셔너리(Dic...

Day002 - 변수 및 제어문

이미지
 Day001 - 변수 및 제어문 1. 나를 소개합니다. 이름, 나이, 취미를 각각 변수에 담고, f-string 한 줄로 소개 문장을 출력하라. (1) 요구사항 - 변수 3개 : name (문자열), age (정수), hobby (문자열) - f-string 으로 한 줄 출력 (2) 예시 저는 김파이이고, 25살이며, 취미는 등산입니다. (3) 코딩/결과 코딩/결과 2. 두 수의 사칙연산 두 정수를 입력 받아 덧셈, 뺄셈, 곱셈, 나눗셈 결과를 각각 한 줄씩 출력하라. (1)요구사항 - int(input()) 으로 두 수 a , b 입력 - a+b , a-b , a*b , a/b 를 각각 출력 (2) 예시 첫 번째 수: 10 두 번째 수: 3 10 + 3 = 13 10 - 3 = 7 10 * 3 = 30 10 / 3 = 3.3333333333333335 (3) 코딩/결과 코딩/결과 3. 섭씨 → 화씨 변환기 섭씨 온도를 입력 받아 화씨로 변환해 출력하라. 공식 : 화씨 = 섭씨 x 9 / 5 + 32 (1) 예시 섭씨 온도: 25 섭씨 25도는 화씨 77.0도 입니다. (2) 코딩/결과 코딩/결과 4. 짝수∙홀수 판별기 정수를 입력 받아 짝수인지, 홀수인지 판별하라. (1) 예시 숫자: 7 7은(는) 홀수 입니다. (2) 코딩/결과 코딩/결과 5. 놀이공원 요금 안내 나이에 따라 입장료가 다르다. 나이를 입력 받아 구분과 요금을 출력하라. 요금 안내 (1) 예시 나이: 15 청소년: 20,000원 나이: 5 미취학: 무료 (2) 코딩/결과 코딩/결과 6. 세 수 중 최댓값 세 개의 수 a , b , c 가 아래처럼 미리 주어진다. max() 함수 없이 if   문만으로 가장 큰 값을 찾아 변수 result 에 저장하라. a = 17 b = 42 c = 33 (1) 요구사항 - result 에 세 수 중 가장 큰 값을 담는다.( if 만 사용) - print(result) 로 확인 (2) 코딩/결과 코딩/결과 7. 1부터 100까지의 ...

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 3주차 회고

이미지
[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 3주차 회고 1주차 : AI 리터러시와 개발 환경 구축 완료 이번 주차의 목표는 앞으로의 전체 과정에 필요한 AI 개발 프로세스의 기반 환경을 구축 하는 것이다. 그리고, 개발 기술을 넘어 AI를 올바르게 이해하고 활용하는 AI 리터러시(AI Literacy) 의 중요성을 알게 되었다. 👉 AI 리터러시(AI Literacy) 관련 글 보기 ( https://aidatacontext.blogspot.com/2026/07/ai-ai-literacy.html ) 학습 환경 구축 (Learning Environment) 개발의 절반은 환경 구축이라고 해도 과언은 아닐 것이다. 여러가지 익숙하지 않은 툴을 설치하고 익히는 데 더욱 집중해야 할 것 같다. (1) 마크다운(Markdown) 문서화의 기본 문법으로 보고서 뿐만 아니라, 앞으로의 WIL(Weekly I Learned) 기록에 활용할 예정이다. (2) VS code MS(Micro Soft)사가 개발해서 무료로 배포 중인 코드 에디터이다. VS Code install (3) UV(Python Package Manager) Python 프로그래밍에 필요한 패키지를 설치할 때 사용하는 패키지 매니저 프로그램으로 기존 PIP(Package Install for Python)보다 빠른 속도가 장점이다. (4) Git & GitHub 버전 관리의 기본인 Git을 설치하고 name, email, editor 등 Global 설정을 마쳤다. Git install (5) Codex CLI OpenAI의 GUI 개발 환경인 Codex를 터미널 환경에서 효율적으로 작업을 수행하기 위한 설정을 완료했다. Codex CLI install (6) Live Sharing VS code에서 실시간으로 코드를 공유하고 피드백을 주고받을 수 있는 확장 프로그램을 설치했다. (7) Algorithm 추천 및 GitHub 자동 제출 Programmers 문제를...

Day001 - AI 리터러시(AI Literacy)와 사용 전략

이미지
Day001 - AI 리터러시(AI Literacy)와 사용 전략 우리는 매일 새로운 AI 도구 와 LLM(거대 언어 모델, Large Language Model) 이 쏟아져 나오는 시대를 살아가고 있다. 이제 AI는 단순한 유행이나 검색 도구를 넘어, 업무와 학습 환경에서 우리와 함께 달리는 '가장 똑똑한 파트너' 로 자리 잡았다. 하지만, 뛰어난 도구가 도처에 깔려 있음에도, 이를 제대로 활용하는 사람과 그렇지 못한 사람의 격차는 점점 더 벌어지고 있다. 그 차이를 만드는 핵심 역량이 바로 AI 리터러시(AI Literacy) 이다. AI를 단순한 답안지로 쓰는 것을 넘어, 깊이 있게 이해 하고 검증 하며, 협업 하는 구체적인 방법에 대해 알아보자. 1. AI 리터러시(AI Literacy)란? '리터러시(Literacy)'는 글을 읽고 쓸 줄 아는 능력을 뜻한다. 이를 AI에 대입한 'AI 리터러시'는 단순히 챗봇(ChatBot)에 질문을 던지는 수준을 넘어, AI의 작동 원리를 이해하고, 알맞는 질문(프롬프트)을 하며, 그 답변을 비판적으로 검증하고, 책임감 있게 활용하는 전반적인 능력 을 의미 한다. (1) 동기와 문제의식 AI에게 한 번만 질문 하면 완벽해 보이는 답을 얻을 수 있다. 내용을 복사와 붙여 넣기(Ctrl + S, Ctrl + V) 몇 번이면 과제나 보고서가 완성된다. 하지만, 편해진 만큼 AI가 내놓은 답변의 내용을 정작 사용자는 이해하지 못하는 경우가 많다. 이렇듯 많은 사람들이 AI에게 의존하다 보니, 정작 스스로 문제를 해결하는 능력이 감소 하게 되었다. (2) 협업의 관점 AI는 지시하는 대로 기계적으로 답을 뱉는 도구는 아니다. 내게 부족한 부분을 보완해 주고, 함께 아이디어를 Build-up 하는 상호작용 파트너로 대할 때 비로소 시너지(Synergy)가 발생한다. AI Literacy 2. 생성형 AI(Generative AI)와 에이전트(Agent) 용어 AI 기술은 텍스트를 단...

오리엔테이션(Orientation) - AI 활용해 샘플 이미지와 유사한 이미지 생성하기

이미지
오리엔테이션(Orientation) - AI 활용해 샘플 이미지와 유사한 이미지 생성하기 오늘 오리엔테이션에 참석한 자리에서 마지막 프로그램으로 가벼운 과제를 풀고 참가자들과 즐거운 팀프로젝트 를 했다. 문제 이미지를 제시 받고, AI를 활용해 문제 이미지와 가장 흡사한 이미지를 생성해 내는 팀에게 상품을 제공하는 프로그램이었다. 3인 1팀으로 Google Gemini 를 활용했고, 몇 번의 시도 후에 최종 결과물을 얻을 수 있었다. 상품을 받지는 못해 아쉽지만, 이런 과정을 통해 팀원들과의 협업 을 하며, 앞으로 팀 프로젝트에서 필요한 점 에 대해서도 생각해 보는 기회가 되었다. Gemini 프롬프트 작성 전략은 생성에 필요한 핵심 항목을 정하고, 항목별 특징을 구체적이지만, 간결하되, 최대한 마크다운(Mark Down) 형식으로 작성했다. 1. 문제 이미지 문제 이미지 2. Gemini를 활용한 이미지 생성 (1) 첫번째 시도 Gemini 활용 생성 이미지 - 1 프롬프트(Prompt) 1. 시간 : 늦은 밤 2. 장소 : 개인 서재    (1) 오른쪽에 원색의 책 10권이 꽂힌 2단 책장    (2) 책장 왼쪽에 격자 창문, 창문 밖으로 불켜진 견물 몇개와 초승달    (3) 화면 중앙에 책상에 앉아 상체만 보이는 헤드폰을 낀 사람 (보라색 착용)    (4) 책상 오른쪽에 작은 화분, 캔음료가 있고, 왼쪽에 흰색 머그컵 (커피), 흰색 메모지    (5) 왼쪽 벽면에 흰색 배경의 GraphRAG 관련 단순 다이어그램 화면, 2개의 검은색 배경의 모니터 화면(프로그래밍 코드 화면, 원색의 막대그래프와 작은 원그래프 화면) 3. 형식 : 벡터 일러스트 (2) 두번째 시도 Gemini 활용 생성 이미지 - 2 프롬프트(Prompt) 1. 시간 : 늦은 밤 2. 장소 : 개인 서재    (1) 오른쪽에 원색의 책 10권이 꽂힌 2단...

로또 당첨 확인 프로그램 코드 분석

이미지
로또 당첨 확인 프로그램 코드 분석 매주 토요일 밤, 누구나 한 번쯤 꿈꾸는 로또 1등의 행운을 파이썬 코드를 구현해 본다면 어떨까? 아래 전체 코드는 단순히 난수 를 생성하는 것을 넘어, 파이썬의 모듈화(Modularity) 개념과 조건문(Conditional Statement) 을 활용해 실제 로또 당첨 로직을 구현해서 사용자의 입력 값을 받아 기계가 뽑은 번호와 비교하고, 당첨 등수를 판별하는 체계적인 구조를 갖추고 있다. # exercise_09.py # 모듈 import random userNums = []; randNums = []; collNums = []; randBonuNum = 0 def setUserNums(ns): global userNums userNums = ns def getUserNums(): return userNums def setRandNums(): global randNums randNums = random.sample(range(1, 46), 6) def getRandNums(): return randNums def setBonuNums(): global randBonuNum while True: randBonuNum = random.randint(1, 45) if randBonuNum not in randNums: break def getBonuNums(): return randBonuNum def lottoResult(): global userNums global randNums global collNums collNums = [] for un in userNums: if un in randNums: collNums.append(un) if len(collNums) == 6: print(...