●머신러닝
- 머신러닝은 규칙을 하나하나 코딩하지 않아도 데이터에서 자동으로 패턴을 학습하는 것입니다.
- 머신러닝은 아래의 과정을 반복하여 개선하는 것입니다.
->데이터 수집 → 전처리 → 모델링 → 평가 → 최적화 → 배포 → 유지보수
- 모델을 학습시키고, 학습시킨 모델을 restAPI 화하여 서비스하는 것이 머신러닝의 핵심입니다.
●'모델을 학습하다' 뜻
- AI가 데이터에서 패턴을 배우는 과정이라고 생각하면 됩니다.
- 쉽게 비유하면 데이터(교과서)를 모델(학생)이 학습(공부) 하고 예측(시험)을 해서 손실(틀린개수)을 보고 최적화(공부법 개선)를 통해 개선한다고 보면 됩니다.
●사이킷런(scikt-learn)
- 대표적인 머신러닝 라이브러리입니다.
- 머신러닝 개념이 사이킷런 라이브러리에 녹아져 있기 때문에 해당 라이브러리만 제대로 공부해도 머신러닝의 핵심 개념을 익히고 실무에 적용할 수 있습니다.
- 물론 머신러닝의 모든 알고리즘이 구현되어 있지는 않지만, 많은 사람들이 사용하고 검증된 알고리즘이 구현되고 있고, 관련 알고리즘을 테스트할 수 있게 데이터셋도 제공하고 있습니다.
●머신러닝 알고리즘
- 지도학습 : 레이블(정답) 이 있는 데이터를 사용해 학습하는 방법
ex)회귀(선형회귀, 다항회귀,랜덤 포레스트), 분류(로지스틱 회귀, 의사결정트리,KNN)
-비지도학습 : 레이블이 없는 데이터를 사용해 학습하는 방법
ex)군집(K평균, DBSCAN, 계층적 군집), 차원축소(PCA, t-SNE)
-강화학습 : 에이전트가 환경과 상호작용하며 학습하는 방법
●데이터셋(Dataset)
- 머신러닝 모델을 훈련시키기 위해 사용되는 데이터 집합입니다.
- 예를 들어 개, 고양이 사진을 구분하는 모델을 만든다고 할 때, 개와 고양이 사진 몇백 장, 몇천 장이 데이터셋입니다.
- 실무에서는 데이터셋을 구하는 것이 가장 큰 과제입니다. 양질의 데이터가 모델 성능을 좌우하기 때문입니다.
- 우리가 공부를 할 땐 이러한 데이터를 구하기 힘들기 때문에, 사이킷런에서는 샘플 데이터셋을 제공하고 있습니다.
- Kaggle ,Google Dataset Search 등과 같은 곳에서도 다양한 데이터셋을 구할 수 있습니다.
- 보통 데이터셋은 특성(Features)과 레이블(Labels)로 구성됩니다.
- 특성은 데이터의 특징을 말합니다.
- 레이블은 모델이 예측하려는 목표, 쉽게 말해서 정답을 뜻합니다.
- 예를 들어 주택가격 예측에서 주택의 면적, 방개수 등이 특성이고, 주택 가격이 레이블입니다.
●사이킷런 기초
- load_*** : 사이킷런에서 제공하는 샘플 데이터를 가지고 옵니다. 사이킷런에서는 여러 알고리즘을 공부할수 있게 데이터셋을 제공합니다.
- train_test_split() : 훈련/테스트 데이터를 분리합니다.
- fit() : 데이터를 학습하여 모델을 만드는 함수입니다.
- predict() : 만든 모델을 이용해서 예측하는 함수입니다.
- score() : 만든 모델을 정확도 테스트하는 함수입니다.
- joblib.dump(), joblib.load() : 만든 모델을 파일로 저장하고, 모델파일을 불러오는 함수입니다.
ex)샘플
from sklearn.datasets import load_iris
# 샘플 데이터 로드
iris = load_iris()
X = iris.data # 입력 데이터 (특성)
y = iris.target # 정답 (클래스)
# 데이터 확인
print("입력 데이터 크기:", X.shape)
print("클래스 개수:", len(set(y)))
###################################################
from sklearn.model_selection import train_test_split
# 데이터 분할 (훈련 80%, 테스트 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
###################################################
from sklearn.linear_model import LogisticRegression
# 모델 생성 및 학습
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train) # 모델 학습
# 테스트 데이터 예측
y_pred = model.predict(X_test)
# 예측 결과 확인 (일부만 출력)
print("예측값:", y_pred[:5])
print("실제값:", y_test[:5])
# 모델 평가 (정확도 계산)
accuracy = model.score(X_test, y_test)
print(f"모델 정확도: {accuracy:.4f}") # 소수점 4자리까지 출력
###################################################
import joblib
# 모델 저장
joblib.dump(model, "logistic_model.pkl")
# 저장된 모델 불러오기
loaded_model = joblib.load("logistic_model.pkl")
# 불러온 모델로 예측 수행
y_loaded_pred = loaded_model.predict(X_test)
# 불러온 모델의 정확도 확인
loaded_accuracy = loaded_model.score(X_test, y_test)
print(f"불러온 모델 정확도: {loaded_accuracy:.4f}")
'프로그래밍 > AI 머신러닝,LLM' 카테고리의 다른 글
파이썬 머신러닝 train_test_split() (0) | 2025.03.29 |
---|---|
머신러닝 회귀(regression) 개념 (0) | 2025.03.29 |
주피터 노트북 개념, 사용이유 (0) | 2025.03.23 |
파이썬 가상환경 사용이유, 사용법 (0) | 2025.03.18 |
리눅스 머신러닝 개발환경 세팅 (0) | 2025.03.15 |
댓글