예측 정확도개선
1.데이터 추가 수집, 2.데이터 전처리, 3.모델 교체, 4.하이퍼 파라미터 튜닝
AdaBoost
-잘못된 데이터에 대한 데이터에 전보다 높은 가중치를 부여 => 이 과정을 반복 해서 정답이 전부 맞아서 분류가 끝날때까지 계속한다. => 나온 모든 데이터들의 결과치를 다시낸다.
트리의 개수 : n_estimators, 선택할 데이터의 시드 : random-state
GBM(Gradient Boosting Machine)
-경사하강법을 이용하여 최적의 가중치(파라미터)를 찾아냄
예시
영상에서 사람탐지후 폭력예측 > CCTV 학교폭력 예방
몽타주 제작 > 몽타주 관련 텍스트 입력받아 > GAN사용 이미지(몽타주) 생성 > 생성된 몽타주와 수배자 리스트를 비교(이미지분류)
감정에 따른 노래 추천 > 셀카로 감정을 입력 > 얼굴사진을 통해서 감정을 인식(딥러닝 메인 기능 ==> 분석)
영상에서 야생동물 탐지 > CCTV 농작물 파괴하는 야생동물 탐지
리뷰 분석 후 구매 예측 > 리뷰(텍스트 데이터) 구매를 예측하기위한 딥러닝 모델 생성
데이터참고사이트
ai hub
github
공공데이터포털
kaggle
google dataset search
roboflow
## 앙상블모델(베깅)을 사용한 랜덤포레스트모델 사용
- 1.문제정의
- 유방암환자를 분류
- 2.데이터 수집
- sklearn에서 학습용 데이터받아오기
- 3.데이터 전처리
- X_train, X_test, y_train, y_test
- 4.탐색적 데이터 분석(EDA)
- 생략
- 5.모델 선택 및 하이퍼 파라미터 튜닝
- Random Forest 사용
- GraidSearch 최적 파라미터 사용하기위한 과정
- 6.학습 : fit(X_train, y_train)
- 7.평가 : socre(X_train,y_train), socre(X_test,y_test), barh()
# verbose : 진행 상황에대한 속성 ===> verbose = 1~3 / 관련으로 찾아보기
# AdaBoost 모델 사용하기
from sklearn.ensemble import AdaBoostClassifier as abc
adb = abc(n_estimators=5, random_state=30)
adb.fit(X_train,y_train)
print(adb.score(X_train,y_train))
print(adb.score(X_test,y_test))
adb2 = abc(n_estimators=100, random_state=30)
adb2.fit(X_train,y_train)
print(adb2.score(X_train,y_train))
print(adb2.score(X_test,y_test))
# 특성 중요도 확인하기
f_im = adb2.feature_importances_
df = pd.DataFrame(f_im,columns=['import'],index=cancer_data.feature_names)
df_sort = df.sort_values(by ='import',ascending=False)
df_sort.head().plot.barh()
#GBM(Gradient Boosting Machine) 모델 사용
#성능이 좋음 > LGBM(Light GBM)
from sklearn.ensemble import GradientBoostingClassifier as gbc
gbm = gbc(n_estimators=50,learning_rate=0.05,random_state=30)
gbm.fit(X_train,y_train)
print(gbm.score(X_train,y_train))
print(gbm.score(X_test,y_test))
# XGBoost 모델
!pip install xgboost
import xgboost
from xgboost.sklearn import XGBClassifier
xgbc = XGBClassifier(n_estimators=500, learning_rate=0.05, max_depth=4, random_state = 32)
xgbc.fit(X_train,y_train)
print(xgbc.score(X_train,y_train))
print(xgbc.score(X_test,y_test))
# Voting 모델 사용하기
from sklearn.ensemble import VotingClassifier as vc
vot = vc(estimators=[("m1",forest_model),("m2",best_model),
("m3",adb),("m4",adb2),("m5",gbm),("m6",xgbc)],voting='soft')
vot.fit(X_train,y_train)
print(vot.score(X_train,y_train))
print(vot.score(X_test,y_test))