유방암 진단 예제입니다. 입력 변수의 종류는 30가지입니다. 환자의 30가지 정보를 입력하고, 유방암 여부를 판별해주는 신경망을 만드는 것이 목적입니다.
1. 필요한 패키지 설치하기
pip install sklearn
pip install scikit-neuralnetwork
pip install matplotlib
pip install pandas
pip install numpy
2. 패키지 불러오기
사용할 패키지들을 불러옵니다. 코드는 아래와 같습니다.
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
import pandas as pd
import matplotlib.pyplot as plt
3. 데이터 불러오기
cancer= load_breast_cancer()
불러온 데이터는 bunch 라는 클래스로 만들어져 있습니다. 딕셔너리와 비슷하게 key:value 쌍을 가집니다. 먼저 key를 불러오면 아래와 같습니다.
cancer.keys()
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module’])
cancer.data 로 입력변수에 접근할 수 있습니다. cancer.feature_names 로 입력 이름에 접근할수 있습니다. 데이터의 차원을 확인해봅시다.
cancer.data.shape
(569, 30)
4. 데이터를 그래프로 그려보기
데이터를 그래프로 그려봅시다. 판다스 데이터프레임 형태로 입력하고, 상자수염그림을 그렸습니다. tight_layout( ) 은 padding 자동조절 옵션입니다. 코드와 그래프는 아래와 같습니다.
#데이터를 그래프로 그려보기
df=pd.DataFrame(cancer.data)
df.columns=cancer.feature_names
df.boxplot().plot()
plt.xticks(rotation=90)
plt.tight_layout()
plt.show()
5. 트레이닝셋, 테스트셋 나누기
트레이닝에 사용할 데이터와 테스트에 사용할 데이터를 나눠줍니다. train_test_split 함수를 사용합니다. stratify=y 로 설정 시, target 의 비율을 유지해줍니다. random_state 값을 지정하면 수행시 마다 동일한 값이 추출됩니다. seed 를 고정하는 것입니다. test_size 는 테스트셋의 비율을 결정합니다.
코드는 아래와 같습니다.
#트레인셋 테스트셋 분리
x_train, x_test, y_train, y_test =train_test_split(cancer.data,cancer.target, stratify=cancer.target, random_state=42, test_size=0.25)
6. 모델 훈련
MLPClassifier 함수로 객체를 생성하고, fit 메소드로 모델을 훈련합니다. score 메소드로 트레인셋의 정확도를 계산합니다.
코드는 아래와 같습니다.
#객체 생성
mlp = MLPClassifier(hidden_layer_sizes=(100,),solver='adam') #options : 'lbfgs','sgd','adam'
#모델 훈련
mlp.fit(x_train,y_train)
#트레인셋 정확도
score=mlp.score(x_train,y_train)
print(score)
7. 평가
테스트셋을 이용하여 모델을 평가합니다. 코드는 아래와 같습니다.
#테스트셋 정확도
score=mlp.score(x_test,y_test)
print(score)
# 모든코드 모아보기
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
import pandas as pd
import matplotlib.pyplot as plt
cancer= load_breast_cancer()
#cancer.keys()
#dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
#cancer.data.shape
#(569, 30)
#데이터를 그래프로 그려보기
df=pd.DataFrame(cancer.data)
df.columns=cancer.feature_names
df.boxplot().plot()
plt.xticks(rotation=90)
plt.tight_layout()
plt.show()
#트레인셋 테스트셋 분리
x_train, x_test, y_train, y_test =train_test_split(cancer.data,cancer.target, stratify=cancer.target, random_state=42, test_size=0.25)
#객체 생성
mlp = MLPClassifier(hidden_layer_sizes=(100,),solver='adam') #options : 'lbfgs','sgd','adam'
#모델 훈련
mlp.fit(x_train,y_train)
#트레인셋 정확도
score=mlp.score(x_train,y_train)
print(score)
#테스트셋 정확도
score=mlp.score(x_test,y_test)
print(score)
'딥러닝 > 분류' 카테고리의 다른 글
[파이썬 사이킷런 딥러닝] 분류 예제 (make_moons) (0) | 2022.11.02 |
---|
댓글