인텔 AI 교육

인텔 AI 교육 - Module - 11(랜덤 포레스트 예제)

Regain 2023. 7. 25. 17:01

(해당 자료들은 인텔 AI for Future Workforce내용을 학습하고 가공한 내용입니다.)

 

< Module - 11 >

#랜덤 포레스트(Random Forest)

1. 랜덤 포레스트

  많은 의사 결정 트리의 결정을 결합하여 데이터 포인트의 클래스를 결정하는 분류 알고리즘이다.

#보험 사기 탐지

1. 문제

  일반화 되어있는 보험 사기를 탐지하고 미리 에측하여 비용을 절약하길 원한다.

 

2. 라이브러리

>>> import numpy as np 
>>> import pandas as pd
>>> import datetime as dt
>>> import seaborn as sns

>>> from sklearn.model_selection import train_test_split
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.metrics import classification_report
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.metrics import accuracy_score

# 파일 읽어오기
>>> df = pd.read_csv(r'[Dataset]_Module11_(Insurance).csv')

 

3. feature간 상관관계 확인

>>> import plotly.express as px
>>> import plotly.graph_objects as go

# pandas의 corr() 함수를 사용하여 상관 행렬 가져오기
>>> corr_matrix = df.corr()

>>> fig = go.Figure(data = go.Heatmap(
                                z = corr_matrix.values,
                                x = list(corr_matrix.columns),
                                y = list(corr_matrix.index)))

>>> fig.update_layout(title = 'Correlation_Insurance_Fraud')
>>> fig.show()

*plotly 라이브러리 : 파이썬 데이터 시각화

4. 랜덤 포레스트 적용하기

>>> from sklearn.ensemble import RandomForestClassifier
>>> rfc = RandomForestClassifier(random_state = 1)
>>> rfc.fit(X_train, y_train)

해당 코드 입력시 나오는 출력 결과물

>>> preds = rfc.predict(X_test) #훈련 데이터 예측 결과를 변수 preds에 저장

>>> score = rfc.score(X_test, y_test)
>>> print(score*100)
>>> print()
>>> print(classification_report(y_test, preds))

 

5. 그 외 모델들 사용

  (1) 의사 결정 트리

>>> dtc = DecisionTreeClassifier() 

>>> dtc.fit(X_train, y_train)
>>> preds = dtc.predict(X_test)

>>> score = dtc.score(X_test, y_test)
>>> print(score*100)
>>> print()
>>> print(classification_report(y_test, preds))

  (2) 로지스틱 회귀

>>> lr = LogisticRegression()

>>> lr.fit(X_train, y_train)
>>> preds = lr.predict(X_test)

>>> score = lr.score(X_test, y_test)
>>> print(score*100)
>>> print()
>>> print(classification_report(y_test, preds))