### 문제정의
- 붓꽃의 품종을 구분하는 머신러닝 모델 만들기
- 지도학습, 분류
### 데이터 수집
- sklearn에서 제공하는 Iris 데이터 셋을 사용
from sklearn.datasets import load_iris
iris_data = load_iris()
iris_data
# 어떤 타입의 데이터?
# 전체적으로는 딕셔너리 타입 - numpy 배열, String 등이 포함
# bunch라는 객체 형식으로 되어 있음.
iris_data.keys()
# 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비
iris_data['data']
# 어떤 품종을 가지고 있는지
# 숫자로 3개의 품종을 구분
iris_data['target']
# 0 : 'setosa', 1: 'versicolor', 2 : 'virginica'
iris_data['target_names']
# 데이터셋이 어려울 때 어떤 형태를 가지고 있는지 - 엑셀파일, 워드파일인지를 표시
# 최신버전으로 업데이트되면서 None으로 변경, 분석에 필요없는 정보
iris_data['frame']
# 데이터셋에 대한 상세 정보
iris_data['DESCR'] # 변수명으로 출력하면 이스케이프 코드를 실행하지 못함
print(iris_data['DESCR']) # print는 이스케이프 코드를 실행하여 깔끔하게 출력을 해줌
i = '\ttest\n'
print(i)
iris_data['feature_names']
# 파일의 위치
iris_data['filename']
iris_data['data_module']
### 데이터 전처리
- 학습용으로 제작된 데이터이기 때문에 전처리와 탐색적 데이터 분석은 생략
### 탐색적 데이터 분석(EDA)
### 모델생성 및 하이퍼 파라미터 튜닝
#### KNN 모델 불러오기
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier()
#### 데이터 분리하기
# 데이터프레임을 만들 때 필요한 요소
# 행, 열
iris_data
# 문제에 해당하는 데이터 프레임 만들기
# 컬럼이름 - feature_names, data - iris_data['data'], 인덱스 - 자동부여
import pandas as pd
# 문제데이터 생성
X = pd.DataFrame(data=iris_data['data'],
columns=iris_data['feature_names'])
X
# 정답 데이터 생성
y = iris_data['target']
y
# train(7) : test(3) 데이터 분리
# 150 => 105 : 45
# 데이터를 섞어서 분리해주는 함수
from sklearn.model_selection import train_test_split
# 4개의 결과가 나옴(X_train, X_test, y_train, y_test)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=6, test_size=0.3)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
### 학습
# fit
knn_model.fit(X_train, y_train)
### 평가
import warnings
warnings.filterwarnings('ignore')
# 훈련용 데이터 성능
knn_model.score(X_train, y_train)
# 평가용 데이터 성능
knn_model.score(X_test, y_test)
# 새로운 데이터로 예측
knn_model.predict([[5.0, 3.0, 1.0, 1.0]])
### iris 데이터의 각 특성간 관계를 시각화 해보기
# 산점도 행렬(scatterplot matrix) : 한꺼번에 변수간 관계를 일목요연하게 보여주는 기능
# pandas의 산점도 행렬에서 불필요한 텍스트를 삭제하고 싶을때 matplotlib을 사용
import matplotlib.pyplot as plt
pd.plotting.scatter_matrix(X,
figsize=(10, 10),
alpha=0.8,
c=y)
plt.show()
'Computer Engineering > 머신러닝' 카테고리의 다른 글
타이타닉 데이터 실습_앙상블 (0) | 2023.06.15 |
---|---|
타이타닉 데이터 분류 (0) | 2023.06.13 |
Decision Tree_버섯데이터 분류 실습 (0) | 2023.06.08 |
머신러닝 학습 7단계 (0) | 2023.06.05 |
머신러닝 기초_AND 연산 (0) | 2023.06.02 |
댓글