머신러닝 활용분야
머신러닝 종류
머신러닝 : 데이터에서 규칙을 찾아내는 것
1. 지도학습
문제, 정답을 학습
문제가 정답을 출력하기 위한 규칙을 찾아냄.
-분류 : 정답의 종류가 정해져 있음
-회귀 : 정답의 종류가 정해져 있지 않음. 정답의 미묘한 차이가 크게 중요하지 않다.
2. 비지도 학습
문제만 학습
문제가 가지고 있는 특징(규칙, 패턴)을 찾음
-클러스터링(군집): 문제만 학습시켜서 특징이 비슷한 것끼리 그룹을 지어줌
-차원축소 : 의미있는 데이터만 남김으로 인한 데이터의 차원을 줄여줌
3. 강화학습
문제와 완벽하지 않은 정답을 학습
스스로 학습을 통해 정답을 찾음
### AND 연산
- 문제정의
훈련데이터와 테스트 데이터 이해하기
AND 연산의 결과 도출하는 머신러닝 모델 학습하고 이해하기
### 데이터 만들기
import pandas as pd
dic = {'A':[0,0,1,1,1,0,1,0], 'B':[0,1,0,1,0,0,1,1], 'AandB':[0,0,0,1,0,0,1,0]}
df = pd.DataFrame(dic)
df
- 'A', 'B' : 문제데이터, 특성, feature, 독립변수, X, 속성
- 'AandB' : 정답데이터, target, Label, 종속변수, y
### 데이터 전처리
- 컬럼인덱싱으로 문제데이터(X), 정답데이터(y)로 분리하기
# 문제데이터
X = df[['A', 'B']]
X = df.loc[:,['A', 'B']]
X = df.loc[:, 'A':'B']
X = df.iloc[:, [0,1]]
X = df.iloc[:, 0:2]
X
# 정답데이터
y = df[['AandB']]
y = df.loc[:, ['AandB']]
y = df.iloc[:, [2]]
y
display(X)
display(y)
#### 학습을 위해 훈련용 데이터와 테스트용 데이터로 분할
- 학습(훈련) : X_train, y_train
- 검증(테스트) : X_test, y_test
# 훈련데이터 : 0 ~ 5번까지 행 슬라이싱
X_train = df.iloc[:6, :2]
y_train = df.iloc[:6, [2]]
display(X_train)
display(y_train)
# 테스트데이터 : 6 ~ 7번까지 행 슬라이싱
X_test = df.iloc[6:, :2]
y_test = df.iloc[6:, [2]]
display(X_test)
display(y_test)
# 데이터 크기 확인 : shape
print("훈련용 문제 : ", X_train.shape)
print("훈련용 정답 : ", y_train.shape)
print("테스트용 문제 : ", X_test.shape)
print("테스트용 정답 : ", y_test.shape)
- 전처리 다음 단계가 탐색적 데이터 분석단계(EDA)이지만 데이터가 간략하기 때문에 생략
### 머신러닝 모델 학습하기
#### 학습을 위한 머신러닝 모델 불러오기
# scikit_learn 머신러닝용 패키기 라이브러리 불러오기
from sklearn.neighbors import KNeighborsClassifier # KNN 분류 모델
#### 모델 생성 및 하이퍼 파라미터 정의
knn_model = KNeighborsClassifier(n_neighbors=1)
# 클래스이므로 소괄호, 속성확인 --> shift + tab
# 가장 가까운 이웃 1개의 실제답을 확인하겠음.
# n_neighbors => 하이퍼 파라미터 : 사용자가 입력하는 매개변수
# 하이퍼 파라미터에 따라서 모델 학습이 달라짐
# 가장 가까운 이웃들의 실제 답을 확인하고 그 답이 내 것인 것처럼 사용
#### 모델 학습
# 모델 학습 => 데이터의 패턴, 성향 파악해서 규칙 생성
# fit() 사용
# fit(훈련용 문제, 훈련용 정답)
knn_model.fit(X_train, y_train) # 훈련용 데이터에 맞춰서 학습 => 지도하습(분류)
#### AND 연산 예측
# warning 무시하기
import warnings
warnings.filterwarnings('ignore')
# and 연산 예측
# A : 1, B : 1 ==> 1
# A : 0, B : 1 ==> 0
# predict(테스트용 문제)
pre = knn_model.predict(X_test)
pre
y_test
### 평가
#### 모델 평가하는 모듈 불러오기
from sklearn.metrics import accuracy_score # 정확도 점수(모델 성능을 평가하는 지표)
# 정확도 : 0 => 0 정답
# 1 => 0 오류
# accuracy_score : 모델이 가지고 있는 함수가 아니고 그냥 함수 자체적인 역할
# accuracy_score(실제 답, 예측값)
accuracy_score(y_test, pre) # 확률정보로 값을 표시, 100% 맞췄다는 의미
# 0.0(모델 성능이 좋지 못함) < accuracy_score(실제 답, 예측값) < 1.0(모델 성능이 나름대로 괜찮다.)
'Computer Engineering > 머신러닝' 카테고리의 다른 글
타이타닉 데이터 실습_앙상블 (0) | 2023.06.15 |
---|---|
타이타닉 데이터 분류 (0) | 2023.06.13 |
Decision Tree_버섯데이터 분류 실습 (0) | 2023.06.08 |
KNN-iris 분류 실습 (2) | 2023.06.07 |
머신러닝 학습 7단계 (0) | 2023.06.05 |
댓글