Python 21

데이터 전처리: 데이터 정규화와 표준화 (비선형 변환 포함)

데이터 변환 및 전처리 데이터 변환은 머신러닝과 데이터 분석에서 중요한 과정으로, 데이터가 모델 학습에 적합하도록 변환하여 성능을 향상시키는 역할을 합니다. 1. 정규화 (Normalization) 정규화는 데이터를 특정 범위(일반적으로 0과 1 사이)로 변환하여 데이터의 스케일을 맞추는 과정입니다. 1.1 Min-Max 정규화 Min-Max 정규화는 아래 공식을 사용하여 데이터를 변환합니다: $$ x' = \frac{x - \text{min}(x)}{\text{max}(x) - \text{min}(x)} $$ 예제: import pandas as pd from sklearn.preprocessing import MinM..

Python 2024.12.03

데이터 전처리: 인코딩 (Encoding)

인코딩(Encoding)은 범주형 데이터를 숫자형 데이터로 변환하는 과정입니다. 머신러닝 모델은 대부분 숫자 데이터를 다룰 수 있기 때문에, 데이터가 문자, 텍스트, 혹은 범주형 값으로 이루어져 있다면 이를 숫자로 변환해야 합니다.왜 인코딩이 필요한가?머신러닝 모델은 수치형 데이터만 처리할 수 있습니다.범주형 데이터를 숫자로 변환하면 모델이 데이터의 패턴을 학습할 수 있습니다.데이터 분석 및 전처리 과정에서 필수적인 작업입니다.인코딩의 기본 목적데이터를 머신러닝 모델에 적합한 형식으로 변환예: '남자', '여자' → 0, 1범주 간 관계를 모델이 올바르게 이해할 수 있도록 보장예: 순서가 있는 데이터는 순서를 유지하면서 변환, 순서가 없는 데이터는 편향 없이 변환.인코딩의 종류레이블 인코딩 (Label ..

Python 2024.12.03

데이터 전처리: 데이터 정규화와 표준화

1. 데이터 정규화 (Normalization)정규화란? 데이터를 0과 1 사이의 값으로 변환하는 과정입니다. 목적: 서로 다른 범위를 가진 데이터를 동일한 스케일로 맞춰 비교 가능하게 만듭니다.1) Min-Max 정규화공식:\[X' = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}}\] \( X \): 원래 데이터 값 \( X_{\text{min}} \): 최소값 \( X_{\text{max}} \): 최대값예제 코드import pandas as pdfrom sklearn.preprocessing import MinMaxScaler# 데이터 생성data = { '특성1': [10, 20, 30, 40, 50], '특성2': [..

Python 2024.12.03

데이터 전처리: 이상치 탐지 및 처리

1. 이상치(Outlier)란?이상치는 데이터의 일반적인 패턴에서 벗어난 값을 의미합니다.문제점:분석 결과에 부정적인 영향을 미침.모델 학습 과정에서 왜곡 발생 가능.해결 필요성:탐지 후 적절히 제거하거나 처리해야 합니다.2. 이상치 탐지 방법1) 기술 통계 기반 탐지describe() 함수: 데이터의 기본 통계량 확인.이상치 의심 기준:평균(mean)과 최대값(max)이 지나치게 차이 나는 경우.표준편차(std)가 지나치게 큰 경우.import pandas as pd# 데이터 생성data = { '이름': ['철수', '영희', '민수', '지수', '상수'], '나이': [25, 30, 22, 35, 120], # 120은 이상치로 의심됨 '점수': [90, 85, 95, 80, 8..

Python 2024.12.03

데이터 전처리: 결측치 탐지와 처리 방법

1. 결측치란 무엇인가요?결측치의 정의결측치(Missing Value): 데이터셋에서 값이 누락된 경우를 말합니다.결측치를 제대로 처리하지 않으면 분석 결과의 신뢰성이 크게 떨어질 수 있습니다.2. 결측치 탐지결측치 탐지 방법Pandas를 활용하면 데이터프레임에서 결측치를 쉽게 탐지할 수 있습니다.1) isna() / isnull() 함수 데이터프레임의 각 요소가 결측치인지 여부를 반환합니다.isna()사용 방법: 데이터프레임에서 .isna()를 붙이면 끝!결과: 결측치(True)와 아닌 값(False)을 확인할 수 있습니다. import pandas as pd# 데이터 준비data = { '이름': ['철수', '영희', '민수', '지수'], '나이': [25, 30, None, 35], ..

Python 2024.12.03

4.2.4 연습 문제: 각 자리 숫자의 합을 구하는 함수(리스트를 이용)

문제정수 num을 매개변수로 받아 각 자리 숫자(digit)의 합을 계산하는 sumOfDigits() 함수를 작성하세요. 단, 나눗셈을 이용하지 말고 리스트를 사용해서 풀어보세요.예 1입력:643출력(6 + 4 + 3 = 13):13예 2입력:47253출력:21코드 설명리스트 컴프리헨션입력받은 문자열 num에서 각 문자를 정수로 변환하여 리스트 digits를 생성합니다.예: "12345" → [1, 2, 3, 4, 5]digits = [int(digit) for digit in num]리스트의 합 계산sum(digits)는 리스트 digits의 요소를 모두 더한 값을 반환합니다.예: [1, 2, 3, 4, 5] → 15return sum(digits)사용자 입력사용자가 입력한 숫자는 문자열로 저장됩니다...

Python 2024.11.29

4.2.3 연습 문제: 회문 판별 함수 만들기

문제거꾸로 배열해도 같은 단어 혹은 문장이 되는 것을 회문(palindrome)이라고 합니다. 다음은 회문의 예입니다.AnnaCivicKayakLevel...문제 1주어진 단어가 회문인지 판별하는 함수 palindrome()을 작성하세요. 단, 문자열 입력은 모두 소문자로 이뤄지며 공백을 포함하지 않는다고 가정합니다.>>> palindrome('anna')True>>> palindrome('banana')Falsex[::-1] #문자열을 뒤집는다x == x[::-1]  #원래 문자열과 뒤집은 문자열이 같은지 비교한다  문제 2대문자와 소문자가 섞여 있더라도 회문으로 판정하도록 함수를 개선하세요.>>> palindrome('Anna')Truex = x.lower()  #대문자를 소문자로 변환 -> 대문자가..

Python 2024.11.29

4.2.2 슬라이싱

파이썬 슬라이싱(Slicing) 정리슬라이싱은 문자열, 리스트 등에서 특정 부분을 추출하는 기능입니다."데이터를 자르는 것"이라고 이해하면 쉬워요.1. 문자열 슬라이싱기본 문법문자열[시작:끝:단계]시작: 어디서부터 잘라낼지 (포함).끝: 어디까지 잘라낼지 (포함하지 않음).단계: 몇 칸씩 건너뛸지 (기본값은 1).예시 1: 문자열 일부 추출text = "Python"print(text[0:2]) # 출력: 'Py'print(text[2:]) # 출력: 'thon'print(text[:4]) # 출력: 'Pyth'예시 2: 음수 인덱스 사용음수 인덱스는 문자열의 뒤에서부터 위치를 셉니다.print(text[-1]) # 출력: 'n' (마지막 글자)print(text[-3:]) # 출력: ..

Python 2024.11.29

4.2.1. 연습 문제: 아이돌 팬 (1)

문제다음과 같은 사람들이 있습니다.뉴진스를 좋아하는 사람: 철수, 영희, 민수, 지현, 서연아이브를 좋아하는 사람: 영희, 민수, 지수, 서연, 하나에스파를 좋아하는 사람: 철수, 지현, 지수, 서연, 나영이 중에서 뉴진스와 아이브를 모두 좋아하지만 에스파는 좋아하지 않는 사람은 누구일까요?힌트in 키워드를 사용하여 항목이 목록에 있는지 확인할 수 있습니다.# 책 목록에 특정 책이 있는지 확인하는 예시books = ["해리포터", "반지의 제왕", "셜록 홈즈"]if "해리포터" in books: print("해리포터가 목록에 있습니다.")append 메서드를 사용하여 결과 목록에 새로운 항목을 추가할 수 있습니다.# 장바구니에 물건을 추가하는 예시shopping_cart = []shopping_c..

Python 2024.11.29

4.2 문자열과 리스트

1. 문자열(String)문자열은 문자나 문장을 표현하는 자료형이에요. 작은 따옴표(')나 큰 따옴표(")로 감싸서 만듭니다.1-1. 문자열 기본 사용법greeting = "Hello, Python!"print(greeting) # 출력: Hello, Python!1-2. 인덱싱 (Indexing)문자열은 글자마다 번호(인덱스)가 있어요.인덱스는 0부터 시작합니다.뒤에서부터는 음수 인덱스를 사용해요.예시text = "Python"print(text[0]) # 출력: 'P' (첫 번째 글자)print(text[-1]) # 출력: 'n' (마지막 글자)1-3. 슬라이싱 (Slicing)문자열의 일부분을 가져오는 방법이에요.문법: 문자열[시작:끝]끝은 포함되지 않습니다.예시text = "Hello, P..

Python 2024.11.29