Python 기계 학습 알고리즘 라 이브 러 리 scikit-learn 학습 의 결정 트 리 실현 방법 상세 설명

본 고 는 Python 기계 학습 알고리즘 라 이브 러 리 scikit-learn 학습 의 결정 트 리 실현 방법 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
결정 트 리
의사 결정 트 리(DTs)는 분류 와 회귀 에 사용 되 는 비 매개 변수 감독 학습 방법 이다.목 표 는 모델 을 만 들 고 데이터 특성 에서 간단 한 결정 규칙 을 유도 하여 목표 변수의 값 을 예측 하 는 것 이다.
예 를 들 어 다음 의 예 에서 결정 트 리 는 if-then-else 결정 규칙 을 통 해 데이터 에서 사인 곡선 과 비슷 한 상황 을 배운다.나무 가 깊 을 수록 의사 결정 규칙 이 복잡 하고 모델 도 적합 하 다.
这里写图片描述
결정 트 리 의 장점 은:
  • 은 설명 과 이해 에 편리 하고 나 무 는 시각 적 으로 표현 할 수 있다.
  • 은 매우 적은 데이터 준비 가 필요 하 다.다른 기술 은 일반적으로 데이터 표준화 가 필요 하 며 가상 변 수 를 만 들 고 공백 값 을 삭제 해 야 한다.
  • 나 무 를 사용 하 는 비용 은 나 무 를 훈련 하 는 데이터 점 의 대수 이다.
  • 은 수치 와 분류 데 이 터 를 처리 할 수 있다.다른 기술 은 보통 하나의 변수 만 분석 하 는 데이터 세트 이다.
  • 은 다 수출 문 제 를 처리 할 수 있다.
  • 화이트 박스 모델 사용.주어진 상황 이 모델 에서 관찰 된다 면 이 조건 의 해석 은 불 논리 로 해석 하기 쉽다.이에 비해 블랙 박스 모델 에 서 는(예 를 들 어 인공 신경 망 에 서 는 결 과 를 설명 하기 어 려 울 수 있다.
  • 은 통계 테스트 검증 모델 을 사용 할 수 있다.이렇게 하면 모델 의 신뢰성 을 설명 할 수 있다.
  • 은 그 가설 이 어느 정도 데 이 터 를 생 성 하 는 실제 모델 을 위반 하 더 라 도 잘 표 현 될 것 이다.
  • 결정 트 리 의 단점 은 다음 과 같다.
  • 의사 결정 트 리 학습 은 너무 복잡 한 나 무 를 만 들 수 있 고 보편적 인 규칙 을 대표 하지 못 하 므 로 과 의합 이 라 고 할 수 있다.편집(현재 지원 되 지 않 는)메커니즘 은 잎 사 귀 노드 를 설정 하 는 데 필요 한 최소 견본 수량 이나 나무의 최대 깊이 를 설정 하 는 것 이 이 문 제 를 피 하 는 필수 조건 이다.
  • 의사 결정 트 리 가 불안정 할 수 있 습 니 다.데이터 의 작은 변화 로 인해 완전히 다른 트 리 가 생 성 될 수 있 습 니 다.이 문 제 는 한 집합 에서 여러 개의 결정 트 리 를 사용 함으로써 경감 된다.
  • 실제 결정 트 리 학습 알고리즘 은 계발 식 알고리즘 을 바탕 으로 하 는 것 이다.예 를 들 어 모든 노드 에서 국부 적 으로 가장 좋 은 결정 을 내 리 는 탐욕 알고리즘 이다.이런 알고리즘 은 전체 국면 에서 가장 좋 은 결정 트 리 로 돌아 가 는 것 을 보장 할 수 없다.집합 학습자 중에서 여러 개의 나 무 를 훈련 시 키 면 이런 상황 을 줄 일 수 있다.여기 서 특징 과 샘플 은 무 작위 로 추출 된다.
  • 일부 개념 은 배우 기 어렵다.결정 트 리 는 XOR,패 리 티 또는 다 중 재 활용 문제 등 을 쉽게 표현 할 수 없 기 때문이다.
  • 분류 하 다.
    결정 트 리 분류 기(DecisionTreeClassifier)은 데이터 세트 에서 여러 가지 분 류 를 수행 할 수 있 는 클래스 입 니 다.
    다른 분류 기와 마찬가지 로 결정 트 리 분류 기 는 두 개의 배열 을 입력 하 는 것 을 입력 으로 한다.배열 X,희소 또는 밀집,[n_samples,n_features] 은 훈련 샘플 을 저장 하고 배열 Y 의 정수 치,[n_samples] 은 훈련 샘플 의 유형 라벨 을 저장한다.
    
    >>> from sklearn import tree
    >>> X = [[0, 0], [1, 1]]
    >>> Y = [0, 1]
    >>> clf = tree.DecisionTreeClassifier()
    >>> clf = clf.fit(X, Y)
    
    
    모델 은 견본 의 유형 을 예측 할 수 있다.
    
    >>> clf.predict([[2., 2.]])
    array([1])
    
    
    또는 각 유형의 확률 을 예측 하여 잎 에 같은 종류의 훈련 견본 의 점 수 를 예측 할 수 있다.
    
    >>> clf.predict_proba([[2., 2.]])
    array([[ 0., 1.]])
    
    
    DecisionTreeClassifier 는 바 이 너 리(라벨[-1,1])분류 와 여러 종류(라벨[0],...,k-1])분 류 를 동시에 진행 할 수 있 습 니 다.
    홍채 데이터 세트 를 사용 하면 다음 과 같은 나 무 를 구축 할 수 있 습 니 다.
    
    >>> from sklearn.datasets import load_iris
    >>> from sklearn import tree
    >>> iris = load_iris()
    >>> clf = tree.DecisionTreeClassifier()
    >>> clf = clf.fit(iris.data, iris.target)
    
    
    훈련 후에 우 리 는 export_graphviz 을 사용 할 수 있다.  트 리 를 Graphiz 형식 으로 내 보 냅 니 다.다음은 전체 iris(홍채)데이터 세트 에 출력 된 트 리 예제 입 니 다.
    
    >>> with open("iris.dot", 'w') as f:
    ...   f = tree.export_graphviz(clf, out_file=f)
    
    
    그리고 Graphiz 의 dot 도 구 를 사용 하여 PDF 파일(또는 지원 되 는 다른 파일 형식)을 만 들 수 있 습 니 다.dot-tpdf iris.dot-o iris.pdf
    
    >>> import os
    >>> os.unlink('iris.dot')
    
    
    또는 Python 모듈 pydotplus 를 설치 하면 Python 에서 PDF 파일(또는 지원 되 는 다른 파일 형식)을 직접 생 성 할 수 있 습 니 다.
    
    >>> import pydotplus
    >>> dot_data = tree.export_graphviz(clf, out_file=None)
    >>> graph = pydotplus.graph_from_dot_data(dot_data)
    >>> graph.write_pdf("iris.pdf")
    
    
    export_graphviz exporter 는 클래스(또는 회귀 에 사용 되 는 값)에 따라 착색 노드 를 포함 하여 다양한 옵션 을 지원 합 니 다.필요 하 다 면 명시 적 변수 와 클래스 이름 IPython 을 사용 하여 Image()함수 로 줄 거 리 를 표시 할 수 있 습 니 다.
    
    >>> from IPython.display import Image
    >>> dot_data = tree.export_graphviz(clf, out_file=None,
                 feature_names=iris.feature_names,
                 class_names=iris.target_names,
                 filled=True, rounded=True,
                 special_characters=True)
    >>> graph = pydotplus.graph_from_dot_data(dot_data)
    >>> Image(graph.create_png())
    
    
    这里写图片描述
    모델 은 견본 의 유형 을 예측 할 수 있다.
    
    >>> clf.predict(iris.data[:1, :])
    array([0])
    
    
    또는 각 유형의 확률 을 예측 할 수 있 습 니 다.이것 은 같은 잎 에 있 는 훈련 견본 의 점수 입 니 다.
    
    >>> clf.predict_proba(iris.data[:1, :])
    array([[ 1., 0., 0.]])
    
    
    这里写图片描述
    Examples:
    Plot the decision surface of a decision tree on the iris dataset
    회귀
    这里写图片描述
    의사 결정 트 리 회귀 을 사용 하면 의사 결정 트 리 도 회귀 문제 에 응용 할 수 있다.
    분류 설정 에서 fit 방법 은 배열 X 와 y 를 매개 변수 로 합 니 다.이 경우 에 만 y 는 전체 수치 가 아 닌 부동 소수점 값 을 기대 합 니 다.
    
    >>> from sklearn import tree
    >>> X = [[0, 0], [2, 2]]
    >>> y = [0.5, 2.5]
    >>> clf = tree.DecisionTreeRegressor()
    >>> clf = clf.fit(X, y)
    >>> clf.predict([[1, 1]])
    array([ 0.5])
    
    
    Examples:
    Decision Tree Regression
    질문
    하나의 다 수출 문 제 는 감독 을 받 는 학습 문제 로 몇 개의 수출 을 예측 할 수 있다.즉,Y 가 2 차원 배열 인 [n_samples,n_output] 이다.
    출력 간 에 관련 성 이 없 을 때 이런 문 제 를 해결 하 는 매우 간단 한 방법 은 n 개의 독립 된 모델,즉 모든 출력 을 구축 한 다음 에 이 모델 을 사용 하여 모든 출력 을 독립 적 으로 예측 하 는 것 이다.
    그러나 같은 입력 과 관련 된 출력 값 자체 가 관련 될 수 있 기 때문에 일반적으로 더 좋 은 방법 은 모든 n 출력 을 동시에 예측 할 수 있 는 단일 모델 을 구축 하 는 것 이다.우선 평가 치 만 구 축 했 기 때문에 낮은 교육 시간 이 필요 하 다.그 다음으로 그 결과 추 정량의 범 화 정밀 도 는 통상 적 으로 증가한다.
    의사 결정 트 리 에 대해 서 는 다 중 출력 문 제 를 지원 하 는 데 쉽게 사용 할 수 있 습 니 다.다음 변경 사항 이 필요 합 니 다:
  • 잎 에 n 개의 출력 값 을 저장 합 니 다.1 이 아 닙 니 다.
  • 은 분할 기준 을 사용 하여 모든 n 수출 의 평균 하락 을 계산한다.
  • 이 모듈 은 다 중 출력 문 제 를 지원 하 는 방법 을 제공 합 니 다.DecisionTreeClassifier 와 DecisionTreeRegressor 를 통 해 이 전략 을 실현 합 니 다.
    결정 트 리 가 크기(n_samples,n_output)의 출력 배열 Y 에 부합 한다 면 예상 치 는:
  • 출력 예측 n출력 값;
  • predict_proba 에서 출력 류 확률 의 noutput 배열.
  • 다 중 출력 결정 트 리 회귀 에 다 중 출력 트 리 의 회귀 가 표 시 됩 니 다.이 예 에서 입력 X 는 하나의 실제 값 이 고 출력 Y 는 X 의 사인 과 코사인 이다.
    这里写图片描述
    Examples:
    결정 트 리 다 중 출력 회귀
    더 많은 파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
    본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기