Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

의사 결정 트리를 사용하여 Python에서 분류자를 구성하는 방법은 무엇입니까?

<시간/>

의사 결정 트리는 랜덤 포레스트 알고리즘의 기본 빌딩 블록입니다. 기계 학습에서 가장 널리 사용되는 알고리즘 중 하나로 간주되며 분류 목적으로 사용됩니다. 그들은 이해하기 쉽기 때문에 매우 인기가 있습니다.

의사 결정 트리에서 내린 결정은 특정 예측이 이루어진 이유를 설명하는 데 사용할 수 있습니다. 이것은 프로세스의 안팎이 사용자에게 명확하다는 것을 의미합니다. 또한 배깅, 랜덤 포레스트 및 그래디언트 부스팅과 같은 앙상블 방법의 기초입니다. 분류 및 회귀 트리, 즉 CART라고도 합니다. 이진 트리(데이터 구조 및 알고리즘에서 연구된 것)로 시각화할 수 있습니다.

트리의 모든 노드는 단일 입력 변수를 나타내며 리프 노드(터미널 노드라고도 함)에는 출력 변수가 포함됩니다. 이 리프 노드는 노드에 대한 예측을 수행하는 데 사용됩니다. 의사 결정 트리가 생성될 때 기본 아이디어는 주어진 공간이 여러 섹션으로 분할된다는 것입니다. 더 적은 비용과 최상의 예측 값을 얻기 위해 모든 값이 설정되고 다른 분할이 시도됩니다. 이 값은 탐욕스럽게 선택됩니다.

이러한 노드의 분할은 트리의 최대 깊이에 도달할 때까지 계속됩니다. 의사 결정 트리를 사용하는 배경은 모든 대상 변수가 하나의 단일 범주에 속할 때까지 특정 기능 값을 기반으로 입력 데이터 세트를 더 작은 데이터 세트로 나누는 것입니다. 이 분할은 모든 단계에 대해 최대 정보 이득을 얻기 위해 이루어집니다.

모든 의사 결정 트리는 루트로 시작하며 이것이 첫 번째 분할이 이루어지는 곳입니다. 노드가 정의되도록 효율적인 방법을 고안해야 합니다.

여기서 지니 가치가 등장합니다. 지니는 불평등을 측정하기 위해 가장 일반적으로 사용되는 측정 중 하나로 간주됩니다. 불평등은 노드의 모든 하위 집합이 속할 수 있는 대상 클래스(출력)를 나타냅니다.

따라서 Gini 값은 모든 분할 후에 계산됩니다. 지니 값/부등식 값을 기반으로 정보 이득을 정의할 수 있습니다.

DecisionTreeClassifier는 다중 클래스 분류를 수행하는 데 사용됩니다.

다음은 동일한 구문입니다.

class sklearn.tree.DecisionTreeClassifier(*, criterion='gini',…)

다음은 예입니다 -

예시

from sklearn import tree
from sklearn.model_selection import train_test_split
my_data = [[16,19],[17,32],[13,3],[14,5],[141,28],[13,34],[186,2],[126,25],[176,28],
[131,32],[166,6],[128,32],[79,110],[12,38],[19,91],[71,136],[116,25],[17,200], [15,25], [14,32],[13,35]]
target_vals =['Man','Woman','Man','Woman',
'Woman','Man','Woman','Woman',
'Woman','Woman','Woman','Man','Man',
'Man','Woman', 'Woman', 'Woman',
'Woman','Man','Woman','Woman']
data_feature_names = ['Feature_1','Feature_2']
X_train, X_test, y_train, y_test = train_test_split(my_data, target_vals, test_size = 0.2, random_state = 1)
clf = tree.DecisionTreeClassifier()
print("The decision tree classifier is being called")
DTclf = clf.fit(my_data,target_vals)
prediction = DTclf.predict([[135,29]])
print("The predicted value is ")
print(prediction)

출력

The decision tree classifier is being called
The predicted value is
['Woman']

설명

  • 필수 패키지를 환경으로 가져옵니다.
  • 특성 값을 기준으로 대상 값의 값을 분류하는 코드입니다.
  • 특성 벡터 및 대상 값이 정의됩니다.
  • 'train_test_split' 함수를 사용하여 데이터를 학습 세트와 테스트 세트로 분할합니다.
  • DecisionTreeClassifier가 호출되고 데이터가 모델에 적합합니다.
  • 'predict' 기능은 특성 값의 값을 예측하는 데 사용됩니다.
  • 출력은 콘솔에 표시됩니다.