from sklearn.tree import DecisionTreeClassifier
# DecisionTreeClassifier 객체를 생성하고 원하는 파라미터를 설정합니다.
clf = DecisionTreeClassifier()
# 훈련 데이터와 레이블을 사용하여 모델을 학습시킵니다.
clf.fit(X_train, y_train)
# 테스트 데이터를 사용하여 모델의 예측 성능을 평가합니다.
y_pred = clf.predict(X_test)
accuracy = clf.score(X_test, y_test)
대충 이런 식으로 진행됌
criterion: 분할의 품질을 측정하는 함수로, 지니 불순도(gini impurity), 엔트로피(entropy), 로그 손실(log loss) 등을 선택할 수 있습니다.
splitter: 각 노드에서 분할을 선택하는 전략으로, 최적의 분할(best splitter)이나 무작위 분할(random splitter)을 선택할 수 있습니다.
max_depth: 트리의 최대 깊이로, 너무 크면 과적합(overfitting)의 위험이 있습니다.
min_samples_split: 내부 노드를 분할하기 위한 최소 샘플 수로, 너무 작으면 과적합의 위험이 있습니다.
min_samples_leaf: 리프 노드에 있는 최소 샘플 수로, 너무 작으면 과적합의 위험이 있습니다.
min_weight_fraction_leaf: 리프 노드에 있는 샘플들의 가중치 합에서 차지하는 최소 비율로, 0과 0.5 사이의 값입니다.
max_features: 각 분할에서 고려할 최대 특성(feature) 수로, 너무 많으면 계산 시간이 오래 걸립니다.
random_state: 난수 생성기의 시드(seed) 값으로, 재현성(reproducibility)을 위해 설정할 수 있습니다.
max_leaf_nodes: 리프 노드의 최대 개수로, None이 아니면 max_depth를 무시합니다.
min_impurity_decrease: 노드를 분할하기 전과 후에 비교하여 감소한 불순도(impurity)가 이 값보다 크거나 같아야 합니다.
min_impurity_split: 트리 성장을 멈추기 전에 필요한 최소한의 불순도입니다. 이 값을 사용하면 경고(warning) 메시지가 나타납니다. 대신 min_impurity_decrease를 사용하세요.
class_weight: 클래스별 가중치로, 균형 잡힌 클래스 가중치(balanced class weight)나 딕셔너리(dictionary) 형태로 지정할 수 있습니다.
presort: 데이터를 사전 정렬(pre-sorting)하여 트리 구축 속도를 높일지 여부입니다.
이 Parameters는 번역하면 매개변수입니다.
여기서 verbose가 잘 이해되지 않았는데
0: 학습 또는 예측 중에 출력이 인쇄되지 않습니다.
1: 학습 및 예측 과정에서 진행률 표시줄 또는 요약 정보와 같은 일부 출력이 인쇄됩니다.
이런 뜻을 가졌다.
ex) verbose=1을 설정하면 훈련 프로세스 중에 진행률 표시줄이 표시되고, verbose=2를 설정하면 진행률 표시줄과 포리스트의 각 트리에 대한 일부 요약 정보가 표시됩니다.
RandomForestClassifier : 의사 결정 트리의 앙상블로, 각 트리는 훈련 집합의 무작위로 선택된 하위 집합과 무작위로 선택된 특징의 하위 집합을 사용하여 구축됩니다. 최종 예측은 포리스트에 있는 모든 트리의 예측을 평균하여 이루어집니다. 이 모델은 과적합을 줄이고 일반화 성능을 향상시킵니다.
ExtraTreesRegressor : ExtraTreesRegressor도 의사 결정 트리의 앙상블이지만, 최적의 분할 대신 무작위 분할을 사용하여 트리를 구축하고 샘플을 부트스트랩하지 않는다는 점에서 RandomForestClassifier와 두 가지 점에서 다릅니다. 이 모델은 RandomForestClassifier보다 훈련 속도가 빠르며 데이터에 노이즈가 많거나 관련 없는 특징이 있는 일부 상황에서 잘 작동할 수 있습니다.