#파이썬 프로젝트
1. 문제 정의
다이아몬드의 가격을 결정하는 요소는 다양하다. 그렇기에 소비자는 다이아몬드의 가격을 알기가 어려운데 이에 도움을 줄 수 있는 AI를 만들자(가상으로 설정한 내용입니다)
2. 데이터 탐색
캐글의 Diamonds Price Dataset 활용
https://www.kaggle.com/datasets/amirhosseinmirzaie/diamonds-price-dataset
3. 데이터 확인
(1) Head() 함수
데이터 안에는 흔히 알고 있는 '캐럿', '색', '커팅정도' 외에도 'depth'나 'x', 'y', 'z' 등 일반인이 잘 사용하지 않는 데이터들이 있었다.
(2) info() 함수
null 값은 없음을 확인하였다.
4. 데이터 전처리
우선 일반인들이 쉽게 고려할 수 있는 요소인 'carat', 'cut', 'color', 'clarity'이 4가지로 'price'를 예측할 예정이다. 그리고 머신 러닝 모델을 사용할 예정이므로 요소들을 'object'에서 'int64'로 바꿔줘야 한다. 처리는 아래와 같은 순서로 진행했다.
(1) 사용하지 않을 열인 'x', 'y', 'z', 'depth', 'table' 삭제
(2) 'object'형 요소들을 'int64'형 요소로 변경
(3) 모델을 학습할 수 있도록 학습-정답 쌍 분리
(4) 훈련, 테스트 데이터를 7:3으로 분리(보통 7:3 ~ 8:2로 설정)
5. KNN 모델 적용
우선 KNN 모델을 불러온 뒤 파라미터(n_neighbors)를 설정하고 학습시킨다. 처리 순서를 나열해 보았다.
(1) KNeighborsClassifier 모델 초기화
(2) x값과 y값을 추출한다. 이때 x는 특성이고 y는 클래스이다.
(3) x와 y값으로 fit 메소드를 통해 KNN 모델을 훈련시킨다.
(4) knn.score를 사용해 정확도를 평가한다.
6. 의사 결정 트리 모델 적용
(1) DescisionTreeRegressor 모델 초기화
(2) x값과 y값을 추출한다. 이때 x는 특성이고 y는 클래스이다.
(3) x와 y값으로 fit 메소드를 통해 모델을 훈련시킨다.
(4) dt.score를 사용해 정확도를 평가한다.
7. 모델 평가
(1) 정확도
KNN | 0.09 |
DT | 0.97 |
KNN은 정확하지 않은 반면 DT는 정확한 것을 넘어 과적합으로 판단할 수 있다.
(2) MSE, MAE, R-squared
MSE, MAE 모두 매우 높은 수치가 나왔다. 하지만 R-squared 만은 모델이 데이터를 잘 설명하고 있다고 평가한다.
(3) 임의의 값 평가
임의로 테이블 6개를 가지고 온 뒤 각 모델의 예측값을 토대로 얼마나 오차가 있는지 평가해 보았다. 유의미한 오차가 있는 데이터도 있지만 모델 2가지를 같이 고려하여 예측하면 꽤 근사치를 추정할 수 있는 것으로 보인다.
8. 결론
값으로 도출되는 수가 범위도 넓으며 모델은 소수점까지 값을 표현하기에 정확도가 낮다고 생각된다. 하지만 두 모델만으로도 종합하여 값을 예측한다면 신뢰할 수 있는 값을 도출해 낼 수 있다고 평가된다.
'파이썬 > 프로젝트' 카테고리의 다른 글
파이썬 프로젝트 - 지하철 승객 분석 (0) | 2023.08.01 |
---|