백엔드 개발 파이썬 튜토리얼 Python 기계 학습 의사 결정 트리에 대한 자세한 소개

Python 기계 학습 의사 결정 트리에 대한 자세한 소개

Mar 19, 2017 pm 02:20 PM

의사결정 트리(DT)는 분류 및 회귀에 사용되는 비지도 학습 방법입니다.

장점: 계산 복잡도가 높지 않고, 출력 결과가 이해하기 쉽고, 누락된 중간 값에 둔감하며, 관련 없는 특성 데이터를 처리할 수 있습니다.
단점: 과일치 문제가 발생할 수 있습니다
적용 가능 데이터 유형: 숫자 및 명목 소스 코드 다운로드 https://www.manning.com/books/machine-learning-in-action

데모 실행

키 알고리즘

if so return 클래스 태그;

else

찾기 데이터 세트
함수
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입니다.

그러나 우리에게 필요한 것은 정반대: 필요한 것 정보 엔트로피가 동일한 것은 아니지만 동일하지 않습니다. 예를 들어 녹색은 풀 충전물, 노란색은 사과 충전물, 파란색은 보라색 고구마일 수 있습니다. 밀도가 달라요!

분할을 제대로 해야해요! 그것을 분류하고 다양한 충전재에 근접한 선을 찾으십시오. 여기에서 작은 h는 최소화되고 결국 면적이 변경되지 않은 상태에서 전체 H는 최소값에 접근하게 되는데, 이는 해결해야 할 최적화 문제입니다.


디버그프로세스
calcShannonEnt : [[1, 'no'], [1, 'no']] = 0 log(1, 2) * 0.4 = 0 pro는 1이어야 하기 때문에 왜 0입니까?
log(prob,2) log(1,2) = 0;2^0=1, prob : [[1, 'yes'], [1, 'yes'], [0, 'no']] = 0.91 >> * 0.6 = 0.55
dataSet의 featVec에 대한 25줄: prop에 대한 빈도 계산
chooseBestFeatureToSplit() 
0.9709505944546686 = calcShannonEnt(dataSet) : [[1, 1, 'yes ' ], [1, 1, '예'], [1, 0, '아니요'], [0, 1, '아니요'], [0, 1, '아니요']]

# 탐지 데이터 세트의 각 하위 항목이 동일한 카테고리에 속하는지 여부: 값이 모두 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 이웃 알고리즘에 따라 그룹, 레이블 데이터에 분류된다는 의미입니다! 그룹은 라벨에 해당합니다!

나중에

을 봤는데 데이터 세트가 차원의 값을 의미하고 마지막이 물고기 여부, 결과 라벨 Python 기계 학습 의사 결정 트리에 대한 자세한 소개

따라서 각 차원 + 결과 레이블을 2차원 배열로 잘라서 비교하고 분류해야 합니다

테스트는 처음 n 차원으로 나누어야 합니다. 값, 벡터 입력, 출력이 yes 또는 아니요!

처음에는 어지러울 수도 있지만, 생각을 정리하고 코드를 보면 더 이해하기 쉽습니다!

대상과 초기 데이터를 이해하고 나면 classList가 결과 라벨이라는 것을 알게 될 것입니다! , 는 분류할 데이터 세트에 해당하는 해당 결과 라벨

이고, labels는 시작 데이터 세트의 차원에 해당하는 특성 이름, 특성 이름 strname

bestFeatLabel은 가장 좋은 차원 이름입니다. 분류 기능은 첫 번째 차원이든 두 번째 차원이든 관계없이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

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

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

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

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

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

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

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

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

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

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

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

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

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

See all articles