머신러닝이란?
- 기계 학습
- 입력된 데이터를 학습하고 그에 따른 패턴과 규칙을 찾아 예측하는 것
- 지도학습(교사학습) : 문제데이터 + 답데이터(교사)
- 유형 종류2: 분류 : 여러 클래스 중에서 하나를 찾는 것 회귀 : 연속적인 수치값을 예측하는 것
- 비지도학습(비교사학습) : 문제데이터
- 데이터의 의미를 파악, 비슷한 데이터끼리 묶음 군집화(clustering)
- 강화학습(reinforcement learning) : 로봇(행동 주체자)에게 환경에 대해 학습하게 하는 일련의 과정
문제정의
- 훈련 데이터와 테스트 데이터 이해하기
- 머신러닝의 일련의 과정 이해하기
- AND 연산의 결과를 도출하는 머신러닝 모델 학습하기
In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
데이터 준비
- 연산 데이터 생성하기
In [2]:
# 방법 1. 이중리스트 [[0, 0, 0],[0, 1, 0]...]
# 방법 2. 딕셔너리 {컬럼명:[0, 0, .... ], 컬럼명:[...], 컬럼명:[...]}
data_dic = {'A': [0, 0, 1, 1, 1, 0, 1, 0],
'B': [0, 1, 0, 1, 0, 0, 1, 1],
'A and B':[0, 0, 0, 1 , 0, 0, 1, 0]}
df = pd.DataFrame(data_dic)
In [3]:
df
Out[3]:
ABA and B01234567
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 0 | 0 |
1 | 1 | 1 |
0 | 1 | 0 |
데이터 전처리
In [4]:
# X 문제(A, B컬럼), Y 답(실제적인 답, A and B) 분리
# 넘파이 > 2차원배열[행] , 배열[행][열], 배열[행, 열], 배열[행:행, 열]
# 판다스 > DF.loc[행,열] , DF.iloc[행:행,열:열]
# X =
df.loc[:,['A','B']]
df.loc[:,'A':'B'] # 끝값 포함
df.iloc[:,0:2] # 끝값 포함x
X = df[['A','B']] # 컬럼 인덱싱(슬라이싱) 설정되어짐
# df[0:5] # : 행 인덱싱(슬라이싱)
X # 2차원
y = df['A and B'] # 1차원 시리즈로
# df.iloc[:,2] , df.loc[:, 'A and B']
# 크기확인
print('문제크기:', X.shape)
print('답 크기:', y.shape)
문제크기: (8, 2)
답 크기: (8,)
In [5]:
# 훈련용(학습과정), 테스트용(평가 및 예측 과정) 분리
# X_train - 훈련용 (0~5행 접근), X_test = 테스트용 (6~7행 접근)
X_train = X.iloc[0:6]
X_test = X.iloc[6:]
X_test
# y_train - 훈련용(0~5행 접근), y_test - 테스트용(6~7행 접근)
y_train = y.iloc[:6]
y_test = y.iloc[6:]
y_test
# 훈련용 데이터 크기 확인
print('훈련용 데이터:', X_train.shape, y_train.shape)
# 테스트용 데이터 크기 확인
print('테스트용 데이터:', X_test.shape, y_test.shape)
# X_train 훈련용 문제, y_train 훈련용 답데이터
# X_test 테스트용 문제, y_test용 답데이터
훈련용 데이터: (6, 2) (6,)
테스트용 데이터: (2, 2) (2,)


In [6]:
x_train = df[0:5]
df
Out[6]:
ABA and B01234567
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 0 | 0 |
1 | 1 | 1 |
0 | 1 | 0 |
데이터 탐색(탐색적 데이터 분석)
- a 컬럽 int 데이터
- b 컬럼 int 데이터
- a and b 컬럼 int 데이터, 0/1
- 결측치x, 이상치x
모델링
- 모델 선택 및 하이퍼 파라미터 조정
- 모델 학습
- 모델 예측 및 평가
In [7]:
# 모델 불러오기
# 분류하는 모델 중 knn 모델을 불러오기
# sklearn(scikit-learn) 머신러닝 패키지 : 머신러닝에 사용되는 도구를 담은 패키지
# 지도/ 비지도/ 강화, 분류/회귀, 평가 공식(기능), 데이터 전처리하는 기능
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
In [8]:
# 모델 객체 생성
# 모델마다 하이퍼 파라미터명 다름, 쓰임 다름
# knn 에서는 n_neighbors가 하이퍼 파라미터(사람이 설정하는 값)
knn_model = KNeighborsClassifier(n_neighbors=1)
# 사람이 설정하는 하이퍼 파라미터에 따라 결과가 바뀜
# 예측이 잘되는 값이 있고 안 될 때가 있음
In [9]:
# 모델 학습
# 모델이 학습할 때 사용하는 함수 : fit(훈련용 문제, 훈련용 답)
knn_model.fit(X_train, y_train)
Out[9]:
KNeighborsClassifier
KNeighborsClassifier(n_neighbors=1)
In [10]:
# 모델 예측
# knn.model.predict(테스트용 문제)
pre = knn_model.predict(X_test)
pre # 예측 결과를 담은 변수
Out[10]:
array([1, 0], dtype=int64)
In [11]:
# 모델 평가
# accuracy_score - 예측이 실제 값과 비교했을 때 몇개나 잘 맞췄는지 표현하는 점수 척도
accuracy_score(y_test, pre) # 1.0 * 100 = 100% 전체 다 맞춘 상황
# accuracy_score : 0~1 로 출력, 1에 가까울수록 잘 맞춤
# 1.0 --> (100% 다 맞춤)
Out[11]:
1.0
'Study > MachineLearning' 카테고리의 다른 글
[MachineLearning] Ensemble 모델을 활용한 유방암 분류 실습 (0) | 2023.09.14 |
---|---|
[MachineLearning] titanic 분류 실습 (2) | 2023.09.12 |
[MachineLearning] mushroom_tree 분류 (0) | 2023.09.11 |
[MachineLearning] iris 분류(knn모델) (0) | 2023.09.08 |
[MachineLearning] bmi 학습하기 (0) | 2023.09.07 |