인공지능 : 기계가 인간처럼 사고하고 행동하도록 만드는 기술
머신러닝(기계학습) : 데이터를 이용해 스스로 학습하는 기술
딥러닝 : 인공 신경망(ANN)을 이용하여 정보 처리
인공지능 > 머신러닝 > 딥러닝
로봇 프로세스 자동화(RPA) : sw 로봇을 이용하여 단순, 복잡한 활동을 사람 대신 수행
머신러닝 3요소
- 데이터
- 학습
- 모델 : 머신러닝의 객체
데이터(Data) : 머신러닝의 출발점
-숫자, 텍스트, 이미지, 소리 등 모든 형태의 정보
-머신러닝 모델은 사람처럼 스스로 생각 x, 주어진 데이터에서 규칙과 패턴을 찾아 학습함
데이터의 중요성
-머신러닝의 성능은 데이터의 질에 따라 결정됨
좋은 데이터의 조건
- 충분한 양 : 너무 적으면 충분한 학습 불가
- 정확함 : 데이터의 오류가 많으면 모델도 잘못된 패턴 학습
- 다양함 : 편향된 데이터(특정 유형의 데이터만 포함)는 모델이 일반적인 예측을 못함
학습(Learning) : 데이터에서 패턴을 찾는 과정
- 모델이 데이터를 통해 패턴을 찾고, 새로운 데이터를 예측하도록 만드는 과정
- 사람이 가르쳐주지 않아도, 주어진 데이터를 분석하여 스스로 규칙을 찾음
학습 과정
- 데이터 입력 : 모델에 학습데이터 제공
- 특징 추출 : 의미있는 데이터 추출
- 패턴 학습 : 모델이 데이터를 분석 후 패턴 찾음
- 모델 평가 : 모델이 얼마나 정확한지 평가
- 최적화 : 성능 향상을 위해 추가 학습
모델(Model) : 데이터와 학습을 연결하는 핵심 요소
- 데이터에서 학습한 패턴을 기반으로 새로운 데이터를 예측하는 역할
모델의 역할
- 학습한 내용을 바탕으로 입력값을 분석하고 적절한 출력 생성
- 모델은 데이터를 입력받아 일정한 규칙을 적용하여 결과를 도출하는 역할
좋은 모델의 조건
- 일반화 능력(Generalization) : 새로운 데이터를 잘 예측해야함
- 과적합 방지(Overfitting Prevention)
: 학습한 데이터에만 과도하게 맞춰져서 새로운 데이터에서 성능이 떨어지지 않아야 함
- 효율성(Efficiency) : 너무 복잡하지 않고 빠르게 실행되어야 함
데이터 분할
머신러닝 모델을 훈련하고 평가하기 위해 전체 데이터를 용도별로 나누는 과정
ex) 힌트(문제)데이터&정답데이터
목적 - 모델이 보지 못한 새로운 데이터에도 잘 작동하도록 일반화 성능 확보
- 학습(train) : 모델이 패턴을 학습하는데 사용
- 검증(validation) : 하이퍼파라미터 튜닝 및 성능 확인
- 테스트(test) : 최종 성능 평가용
연속형 데이터 특징
- 숫자로 표현, 연산 가능
- 특정 범위에서 연속적인 값을 가짐
- 평균, 표준편차 등 수학적 연산 가능
분할 방법 1
train data : test data = 8:2 or 7:3
분할 방법 2
train data : valid data : test data
머신러닝에서는 보통 1번 방법 사용
실전에서는 train / test만 나누고 교차검증으로 validation을 대신하기도 함
train_test_split을 활용한 데이터 분할
힌트데이터(x) 독립변수
정답데이터(y) 종속변수
y = f(x)
학습용
X_train(힌트) , y_train(정답)
테스트용
X_test(힌트) , y_test(정답)
라이브러리 불러오기
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
예제 생성
# 가상의 데이터 생성
np.random.seed(42) # 재현성을 위해 고정, 42는 규칙 고유번호
X = pd.DataFrame({
'feature1': np.random.rand(100),
'feature2': np.random.rand(100)
})
y = pd.Series(np.random.choice([0, 1], size=100)) # 0 또는 1 라벨
데이터 셋 살펴보기
display(X.head())
y.head()
# 기본적인 분할
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=1234 #stratify 비율 고정
)
# 분할 결과 확인
print(f" X_train shape: {X_train.shape}")
print(f" X_test shape: {X_test.shape}")
print(f" y_train label 분포:\n{y_train.value_counts()}")
print(f" y_test label 분포:\n{y_test.value_counts()}")
x , y 순서 중요
- train_test_split은 머신러닝에서 가장 기초적이고 중요한 함수
- 테스트 데이터는 반드시 훈련에 사용되지 않아야 함, 모델 평가를 위해 보존해야 함
- 일반적인 분할 비율은 8:2 또는 7:3
머신러닝 학습 프로세스
- 데이터 수집
- 데이터 탐색 및 전처리
- 데이터 분할
- 모델 선택 및 학습
- 예측 및 평가
sckit-learn은 머신러닝 모델을 쉽게 구축, 학습할 수 있도록 도와주는 파이썬 라이브러리
모델 학습 과정
- 데이터 준비
- 데이터 분할 : model_selection.train_test_split
- 모델 선택
- 학습 : fit
- 평가
<사이킷런을 이용한 붓꽃데이터 품종 예측>
0.라이브러리 불러오기
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
1.데이터 불러오기
- 사이킷런에서 제공하는 붓꽃 데이터 사용
데이터 확인
import pandas as pd
# 붓꽃 데이터 세트를 로딩합니다.
iris = load_iris()
# iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있습니다.
iris_data = iris.data # X
# iris.target은 붓꽃 데이터 세트에서 레이블(결정 값) 데이터를 numpy로 가지고 있습니다.
iris_label = iris.target #y
print('iris target값:', iris_label)
print('iris target명:', iris.target_names)
# 붓꽃 데이터 세트를 자세히 보기 위해 DataFrame으로 변환합니다.
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
iris_df['label'] = iris.target
iris_df.head(3)
2.데이터 탐색 및 전처리(EDA & Preprocessing)
- 데이터 특징 파악, 결측치나 이상치 확인
- 범주형 데이터를 숫자로 바꾸거나, 스케일 조정이 필요한 경우 전처리
다양한 함수로 확인
# 결측지 확인 isnull()
iris_df.isnull().sum()
#데이터 살펴보기 : head(), shape, info(), isnull().sum()
iris_df.shape
iris_df.info()
3.데이터 분할(Train / Test Split)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.3, random_state=1234)
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
print('-----------------------')
#iris_df
# X = iris_df.drop('label', axis = 1)
# y = iris_df['label']
# print(X.shape)
# print(y.shape)
# print('-----------------------')
# print(iris_data.shape)
# print(iris_label.shape)
4. 모델 선택 및 학습(Model Training)
- 사용할 알고리즘 선택 후 학습
- 의사결정나무(Decision Tree) 모델 적용 ->스무고개라 보면 됨
# 0. 모델 라이브러리를 불러오세요
from sklearn.tree import DecisionTreeClassifier
# 1. 모델을 객체화 하세요
model = DecisionTreeClassifier() #모델 객체화
# 2. 학습을 수행하세요
model.fit(X_train, y_train)
5. 예측 및 평가(Precition & Evaluation)
- 학습된 모델로 테스트 데이터 예측, 정확도 등의 지표로 성능평가
- 성능 측정 중 정확도를 기준으로 모델평가를 해보자
-> sklearn.metrics.accuracy_score
pred = model.predict(X_test) #성능 예측
from sklearn.metrics import accuracy_score
score = accuracy_score(pred, y_test) # 결과값과 비교
print(score)
남들과 다르게 결과가 나온다면 데이터 분할 당시 test_size와 random_state 값을 다르게 설정했기 때문
'[KT AIBLE SCHOOL]에이블스쿨' 카테고리의 다른 글
[KT에이블스쿨] 04.09 머신러닝 회귀 (1) | 2025.04.09 |
---|---|
[KT에이블스쿨] 04.08 전처리, 머신러닝 (1) | 2025.04.08 |
[KT에이블스쿨]04.04 이변량 분석 , 데이터 수집 (1) | 2025.04.04 |
[KT 에이블스쿨] 04.03 시각화 , 데이터 분석 (0) | 2025.04.03 |
[KT 에이블스쿨] 04.02 데이터 전처리 (0) | 2025.04.03 |