-
멋쟁이 사자처럼 7주차 회고카테고리 없음 2022. 10. 27. 17:26
이번 주는 머신러닝에 대해 처음 배우며 기본 개념과 간단한 실습을 진행하였다.
1. 머신러닝
범주형 수치형 지도 학습 분류 회귀 비지도 학습 군집화 차원축소 머신러닝에는 크게 지도 학습과 비지도 학습이 있는데 지도 학습이란 정답을 제공해주는 것이고 반대로 비지도 학습은 정답이 따로 없는 학습이다.
범주형 데이터와 수치형 데이터에 따라 머신러닝 방식이 다르게 진행되는데 방식의 위의 표와 같다.
머신러닝을 해주기 위해서는 이전에 배웠던 데이터 전처리를 진행해주어야 더 좋은 모델을 만들 수 있다.
데이터 전처리에는 이상치 제거, 스케일링, 샘플링, 결측치 처리, 정규화 등의 방법이 있을 수 있으며 로지스틱 회귀분석과 같은 분석을 진행할 경우 범주형 데이터를 수치형 데이터로 변화시켜주는 방법도 있다.
2. 지도학습
지도학습은 크게 학습(training) - 예측 - 평가의 순으로 진행된다.
- 학습(training)
학습을 하기 위해서는 데이터를 학습용 데이터와 테스트용 데이터로 나눠줄 필요가 있다. 보통은 8:2의 비율로 많이 나누는 편이지만 상황마다 다르다.
여기서 데이터를 한 번 더 나눠주게 되는데 문제가 되는 데이터와 정답이 되는 데이터이다.
예를 들어 뇌졸중환자의 환경변수를 통해 뇌졸중 발병 여부를 알고싶다면 환경변수는 문제가 되는 feature가 되고 뇌졸중 발병 여부는 정답이 되는 feature가 된다.
이렇게 데이터를 두번 나누어 주게 되면 아래와 같이 데이터가 구분되게 된다.
X_train: 학습(훈련)에 사용할 데이터 셋
y_train: 학습(훈련)에 사용할 정답 값
X_test: 예측에 사용할 데이터 셋
y_test: 예측에 사용할 정닶 값
데이터 전처리와 분류가 끝났다면 fit을 통해 학습을 진행하면된다.
* model.fit(X_train, y_train)
- 예측(predict)
학습이 끝난 모델에 test용 데이터를 이용하여 예측을 실시하게 된다.
* y_predict = model.predict(X_test)
- 평가(Evaluation)
예측으로 나온 데이터와 실제 정답 값인 y_test 값을 비교하여 모델의 정확도를 평가한다.
*from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict)
3. 모델링 실습
- 데이터 분류 (feature_names = 문제가 되는 칼럼, label_name = 정답이 되는 칼럼)
split_count = int(df.shape[0] * 0.8)
train = df[:split_count] #데이터의 80퍼센트 할당
test = df[split_count:] #데이터의 20퍼센트 할당
X_train = train[feature_names]
y_train = train[label_name]
X_test = test[feature_names]
y_test = test[label_name]
- 머신러닝 알고리즘 가져오기 (의사결정나무, 분류, 지도학습)
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(* 주요파라미터)
* 주요 파라미터
* criterion: 가지의 분할의 품질을 측정하는 기능입니다.
* max_depth: 트리의 최대 깊이입니다.
* min_samples_split:내부 노드를 분할하는 데 필요한 최소 샘플 수입니다.
* min_samples_leaf: 리프 노드에 있어야 하는 최소 샘플 수입니다.
* max_leaf_nodes: 리프 노드 숫자의 제한치입니다.
* random_state: 추정기의 무작위성을 제어합니다. 실행했을 때 같은 결과가 나오도록 합니다.
- 학습(훈련)
model.fit(X_train, y_train)
- 예측
y_predict = model.predict(X_test)
- 평가from sklearn.metrics import accuracy_scoreaccuracy_score(y_test, y_predict)- 결론
모델 정확도는 0.733 정도로 비교적 낮은 점수를 나타내었다. 위에 기재된 필수 파라미터의 값을 조정하거나 데이터 전처리를 수정하는 방법, 머신러닝 알고리즘을 변경하는 방법을 이용하면 더 정확도 높은 모델을 구현할 수 있음을 알 수 있었지만 현재로써는 때려맞추기 식의 조정밖에 하지 못하였다.