일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 명령형프로그래밍
- 모두의딥러닝
- Navigation
- Flutter공부
- 딥러닝
- 플러터앱개발
- BottomTabNavigation
- 플러터앱개발공부
- 알고리즘
- react
- RectQuery
- 플러터공부
- BottomTabBarNavigator
- 웹해킹
- Object~
- 데이터베이스의기본
- Flutter
- 면접을위한CS전공지식노트
- 플러터
- 날짜포맷팅
- tabBarBadge
- 하단탭바알림
- date-fns
- ReactNative
- OpenWeatherApi
- 앱개발공부
- 정보보호
- 앱개발
- 선언형프로그래밍
- 화면이동
- Today
- Total
기록하기
[모두의 딥러닝] 다중 분류 문제 해결하기 본문
Iris 시각화하기
lrist를 시각화 하는 방법은 대표적으로 산점도가 있습니다. 산점도는 x축과 y축에 각각 변수를 놓고 데이터를 점으로 나타내는 그래프입니다. 이를 통해 두 변수 간의 관계를 시각적으로 파악할 수 있습니다.
또한, Iris 데이터셋에서는 품종이 3가지이므로 산점도를 그릴 때 각 품종마다 다른 색깔을 지정하여 구분해주는 것이 좋습니다. 이를 통해 각 품종의 특성을 비교하고 분류를 쉽게 할 수 있습니다.
또한, 다른 시각화 방법으로는 박스 플롯(Box Plot)이 있습니다. 이는 데이터의 분포를 상자와 선으로 나타내는 그래프로, 품종별로 변수의 분포를 비교할 때 유용합니다.
원핫인코딩
원핫인코딩(One-Hot Encoding)은 범주형(categorical) 데이터를 숫자형 데이터로 변환하는 방법 중 하나입니다. 이 방법은 해당 데이터의 카테고리 값 중 하나만 1로 나타내고 나머지는 모두 0으로 표현합니다.
예를 들어, 색상을 빨강(red), 파랑(blue), 녹색(green)으로 구분하는 경우, 각각의 색상에 대해 다음과 같이 원핫인코딩을 적용할 수 있습니다.
빨강 : 100
파랑 : 010
녹색 : 001
이처럼 원핫인코딩은 카테고리 값의 개수만큼 0과 1로 이루어진 벡터로 변환하는 것입니다. 이 방법은 범주형 데이터를 다룰 때 유용하게 사용됩니다. 예를 들어, 머신러닝 알고리즘에서 범주형 데이터를 다루는 경우, 원핫인코딩을 통해 데이터를 수치형으로 변환하고 모델링할 수 있습니다.
소프트맥스
모델을 만들어줍니다. 다음 코드를 보면서 이전에 실행혔던 피마 인디언의 당뇨병 예측과 무엇이 달라졌는지 찾아보기 바랍니다.
# 모델 설정
model = Sequential()
midel.add(Dense(12, input_dim=4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.summary()
#모델 컴파일
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
- 출력층의 노드 수가 3으로 바뀌었습니다.
- 활성화 함수가 softmax로 바뀌었습니다.
- 컴파일 부분에서 손실 함수 부분이 caterogrical_crossentropy로 바뀌었습니다.
출력이 0~1 중 하나의 값으로 나왔습니다. 예를 들어 당뇨인지 아닌지에 대한 예측 값이 시그모이드 함수를 거치며 0~1 사이의 값 중 하나로 변환되어 0.5 이상이면 당뇨로, 이하이면 정상으로 판단했습니다. 이항 분류의 경우 출력 값이 하나면 되었습니다. 그런데 이번 예제에서는 예측해야 할 값이 세 가지로 늘어났습니다. 각 샘플마다 이것이 setosa일 확률, versicolor일 확률, 그리고 virginica일 확률을 따로 구해야 한다는 것 입니다.
아이리스 품종 예측의 실행(소스코드)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
!git clone https://github.com/taehojo/data.git
df = pd.read_csv('./data/iris3.csv')
X = df.iloc[:,0:4]
y = df.iloc[:, 4]
y = pd.get_dummies(y)
model = Sequential()
model.add(Dense(12, input_dim=4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam',
metrics=['accuracy'])
history = model.fit(X, y, epochs=50, batch_size=5)
결과
'AI 수업' 카테고리의 다른 글
[모두의 딥러닝] K겹 교차 검증 (0) | 2023.04.24 |
---|---|
[모두의 딥러닝] Train Set, Test Set, 모델 성능 검사하기 (0) | 2023.04.24 |
[모두의 딥러닝] 피마 인디언의 당뇨병 예측 실행 (0) | 2023.04.10 |
[모두의 딥러닝] 히트맵 그리기 (0) | 2023.04.10 |
뉴런과 퍼셉트론의 차이 (0) | 2023.03.27 |