import pandas as pd
import os
os.chdir(r'C:/Users/~~~')
train_df = pd.read_csv('activity_train.csv')
test_df = pd.read_csv('activity_test.csv')
X_train = train_df.iloc[:, :-2]
y_train = train_df.iloc[:, -1]
X_test = test_df.iloc[:, :-2]
y_test = test_df.iloc[:, -1]
train_df와 test_df는 각각 학습용 데이터와 테스트용 데이터를 읽어와 DataFrame으로 저장
특성(X)와 레이블(y):
X_train, X_test: 훈련 및 테스트 데이터에서 모든 특성 피처를 선택
iloc[:, :-2]는 데이터프레임에서 마지막 두 열을 제외한 모든 피처(입력값)를 선택하는 코드
y_train, y_test: 마지막 열이 Activity이므로, 이 열을 레이블(목표값)으로 지정
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import warnings
warnings.filterwarnings('ignore')
rf_clf = RandomForestClassifier(random_state=0)
rf_clf.fit(X_train, y_train)
pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, pred)
print('랜덤 포레스트 정확도: {0:.4f}'.format(accuracy))
RandomForestClassifier(random_state=0)
랜덤 포레스트 분류기를 생성
random_state=0
랜덤성의 재현을 위해 시드 값을 고정
(같은 데이터를 사용할 때 일관된 결과를 얻기 위한 것)
rf_clf.fit(X_train, y_train)
학습 데이터를 사용하여 랜덤 포레스트 모델을 학습
(모델은 각 데이터 포인트의 특성과 레이블 간의 관계를 학습)
pred = rf_clf.predict(X_test)
학습된 모델을 사용해 테스트 데이터의 활동을 예측
accuracy = accuracy_score(y_test, pred)
예측된 결과와 실제 정답을 비교하여 정확도를 계산
print('랜덤 포레스트 정확도: {0:.4f}'.format(accuracy))
모델의 정확도를 출력
여러 개의 결정 트리(Decision Trees)를 앙상블하여 분류 문제나 회귀 문제를 해결하는 강력한 머신러닝 알고리즘
랜덤 포레스트는 여러 개의 결정 트리를 구성하고,
각 트리의 예측 결과를 평균내거나 투표를 통해 최종 결과를 산출
이 과정을 통해 과적합(overfitting) 문제를 줄이고, 일반화 성능을 높이는 장점이 있음
각 트리는 데이터 샘플을 부트스트랩 방식으로 랜덤하게 선택하여 학습
각 트리는 전체 학습 데이터의 일부만을 사용해 학습하며,
서로 다른 데이터를 학습하므로 더 다양한 트리가 생성됨
여러 결정 트리의 결과를 종합함으로써 모델의 안정성과 성능이 향상함
각 결정 트리를 학습할 때, 각 노드에서 최적의 분할을 결정할 특성 피처들을 무작위로 선택함
모델이 모든 트리에서 동일한 피처에 과도하게 의존하지 않도록 방지하여 다양성을 증가시킴
여러 개의 트리로 예측하기 때문에 단일 결정 트리보다 높은 정확도를 기대할 수 있음
여러 트리의 결과를 평균 내기 때문에, 과적합의 위험을 줄이고 일반화 능력을 향상시킴
각 피처의 중요도를 계산해 주기 때문에, 데이터에서 중요한 피처를 쉽게 파악할 수 있음
수많은 결정 트리를 학습시키기 때문에,
데이터가 크거나 트리 개수가 많을 경우 학습 속도가 느려질 수 있음
개별 트리의 예측 결과를 종합해야 하므로 예측 시간이 단일 결정 트리보다 오래 걸릴 수 있음