Python 기계 학습 의사 결정 트리에 대한 자세한 소개
의사결정 트리(DT)는 분류 및 회귀에 사용되는 비지도 학습 방법입니다.
장점: 계산 복잡도가 높지 않고, 출력 결과가 이해하기 쉽고, 누락된 중간 값에 둔감하며, 관련 없는 특성 데이터를 처리할 수 있습니다.
단점: 과일치 문제가 발생할 수 있습니다
적용 가능 데이터 유형: 숫자 및 명목 소스 코드 다운로드 https://www.manning.com/books/machine-learning-in-action
데모 실행
키 알고리즘
찾기 데이터 세트
함수
createBranch를 분할하고 반환 결과를 분기 노드에 추가하는 최고의 기능
반환 분기 노드해당 코드
def createTree(dataSet,labels):
class
List
= [example[-1] for example in dataSet]가 데이터세트[-1]이 아닙니다. 데이터 세트}}이며 이때 데이터 세트의 각 요소의 마지막 요소 중 첫 번째 요소는 if classList.
count(classList[0]) == len(classList): 반환된 분류된 경우 목록 개수 유형이 동일합니다. 이 유형을 반환하세요! 하위 노드를 분류할 수 있는지 여부, 그렇다면 하나의 유형을 반환합니다. 그렇지 않으면 recurse 하향 분류 == 1: #dataSet에 더 이상 기능이 없으면 분할을 중지합니다. 요소가 하나만 있는 경우
대다수Cnt(classList) 반환 ~ return majorCnt(classList) ] 이 라벨은 표면이 없는 것인가요? myTree = {bestFeatLabel:{}} 그런 다음 가장 좋은 카테고리의 하위 트리를 만듭니다 del(labels[bestFeat]) 최고의 카테고리 삭제 featValues = [example[bestFeat] for example in dataSet] UniqueVals = set(featValues) set은 분류입니다. UniqueVals의 값에
얼마나 많은 유형이 있는지 확인하세요.
subLabels = labels[:] # 모든 레이블을 복사하므로 tree는 기존 레이블을 엉망으로 만듭니다.
MyTree [BestFeatlabel] [value] = Createtree (SPLITDATASET (DataSET, Bestfeat, Value), Sublabels
Retu RN MyTree
데이터 분할 집합 전후의 정보 변화를 정보 이득이라고 합니다. 데이터 집합을 분할하는 가장 큰 원칙은 무질서한 데이터를 보다 질서있게 만드는 것입니다. 이는 파이 커팅 원리로 이해됩니다.
단위 엔트로피를 사용하여 정보의 복잡성과 양을 설명합니다. 케이크의 밀도에 맞춰, 같은 밀도로 세로로 자른 케이크라면
각 부분의 무게 g = 총 G * 대원 안의 비율! 유사하게, 분할 후 정보 엔트로피가 동일하면 데이터의 각 작은 부분의 작은 h = pro * total H, 합계 h[i] = H입니다.
디버그프로세스
calcShannonEnt
log(prob,2) log(1,2) = 0;2^0=1, prob
dataSet의 featVec에 대한 25줄: prop에 대한 빈도 계산
chooseBestFeatureToSplit()
0.9709505944546686 = calcShannonEnt(dataSet)
# 탐지 데이터 세트의 각 하위 항목이 동일한 카테고리에 속하는지 여부: 값이 모두 a이고 결과가 모두 y 또는 n이면 카테고리입니다. 따라서 두 개의 매개변수 입력만
0.5509775004326937 = += prob * calcShannonEnt(subDataSet) 별도로 부분 집합화 후 확률 * Shannon 드롭, 얻은 합계, 원래 전체 Shannon 드롭 비율
# 数据越接近,香浓熵值越少,越接近0 ,越不同,越多分逻辑,香浓熵就越大 # 只计算 其dataSet的featVec[-1] 结果标签 def calcShannonEnt(dataSet):
0.4199730940219749 infoGain = baseEntropy - newEntropy
요약:
처음에는 코드도 이해가 안 되고, 무슨 일을 하는지도 이해가 안 됐어요! 분류, 우리의 목표는 많은 데이터를 분류하고 레이블을 지정하는 것입니다.
k-nearby classify([0, 0], group, labels, 3)처럼 새로운 데이터 [0,0]이 k=3 이웃 알고리즘에 따라 그룹, 레이블 데이터에 분류된다는 의미입니다! 그룹은 라벨에 해당합니다!
나중에
을 봤는데 데이터 세트가 차원의 값을 의미하고 마지막이 물고기 여부, 결과 라벨
테스트는 처음 n 차원으로 나누어야 합니다. 값, 벡터 입력, 출력이 yes 또는 아니요!
처음에는 어지러울 수도 있지만, 생각을 정리하고 코드를 보면 더 이해하기 쉽습니다!대상과 초기 데이터를 이해하고 나면 classList가 결과 라벨이라는 것을 알게 될 것입니다! , 는 분류할 데이터 세트에 해당하는 해당 결과 라벨
이고, labels는 시작 데이터 세트의 차원에 해당하는 특성 이름, 특성 이름 strnamebestFeatLabel은 가장 좋은 차원 이름입니다. 분류 기능은 첫 번째 차원이든 두 번째 차원이든 관계없이 N
featValues는 bestFeatLabel 차원 아래의 값 배열입니다. 새로운 분류 비교를 수행하는 데 사용되는 것은 이 차원 아래의 그룹입니다.
uniqueVals는 set을 사용하여 동일한 카테고리인지 확인합니다.
예:
dataSet = [[1, 1, 'yes'],[0, 1, 'yes'],[1, 0, 'no' ],[1, 0, 'no'],[0, 0, 'no']]
labels = ['no surfacing','flippers',]
createTree는 다음과 같습니다. {'flippers': {0: 'no', 1: 'yes'}}는 표면 없음 차원을 직접 생략합니다
마지막으로 단락을 사용해 보겠습니다. 의사결정 트리에 대해 이야기하자면:
의사결정 트리의 핵심은 효율성을 높이는 것입니다! '최대 최적'을 사용하여 첫 번째 부정적인 라벨을 나누고, 긍정적인 라벨은 계속해서 나누어야 합니다! 그리고 음수이면 리프 노드 응답을 직접 반환합니다! 해당하는 다른 차원은 계속해서 심사되지 않습니다!
이론적으로는 의사결정나무 알고리즘을 사용하지 않더라도 모든 데이터를 맹목적으로 소진할 수 있습니다. 즉, 매번 데이터의 모든 차원을 통과하게 됩니다! 그리고 마지막 라벨 답변이 있습니다! 차원 수 * 데이터 수! 복잡성을 위해! 이것이 기억력에 대한 일치하는 답변입니다! 적합한 전문가 시스템! 일어나지 않는 상황을 예측하는 능력이 부족해요! 하지만 데이터 볼륨이 크고 속도가 빠르며 지능적인 느낌도 받을 수 있습니다! 과거 경험의 반복이니까! 그런데 죽었나요? 아니요, 죽지 않았습니다! 피로는 사라졌지만 의사결정 트리는 역동적입니다! 배우다! 나무를 바꿔라! 최소한 역동적으로 만들어졌습니다! 데이터가 불완전하면 불완전할 수도 있습니다! 판단이 해결되면 하나의 판단을 사용하고, 그렇지 않으면 또 다른 판단이 필요합니다! 크기가 증가했습니다!
위 내용은 Python 기계 학습 의사 결정 트리에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.
