決策樹 決策樹引數介紹(分類和回歸)

2021-10-03 02:49:17 字數 3171 閱讀 9397

前面總結了資訊熵,資訊增益和基尼資訊的定義,以及決策樹三大演算法的原理及迭代過程,今天介紹下python中機器學習sklearn庫中決策樹的使用引數

決策樹既可以做分類,也可以做回歸,兩者引數大體相近,下面會先介紹分類,再對回歸不一樣的引數做單獨說明

1、criterion: 特徵選取方法,可以是gini(基尼係數),entropy(資訊增益),通常選擇gini,即cart演算法,如果選擇後者,則是id3和c4,.5

2、splitter特徵劃分點選擇方法,可以是best或random,前者是在特徵的全部劃分點中找到最優的劃分點,後者是在隨機選擇的部分劃分點找到區域性最優的劃分點,一般在樣本量不大的時候,選擇best,樣本量過大,可以用random

3、max_depth: 樹的最大深度,預設可以不輸入,那麼不會限制子樹的深度,一般在樣本少特徵也少的情況下,可以不做限制,但是樣本過多或者特徵過多的情況下,可以設定乙個上限,一般取10~100

4、min_samples_split:節點再劃分所需最少樣本數,如果節點上的樣本樹已經低於這個值,則不會再尋找最優的劃分點進行劃分,且以結點作為葉子節點,預設是2,如果樣本過多的情況下,可以設定乙個閾值,具體可根據業務需求和資料量來定

5、min_samples_leaf:葉子節點所需最少樣本數,如果達不到這個閾值,則同一父節點的所有葉子節點均被剪枝,這是乙個防止過擬合的引數,可以輸入乙個具體的值,或小於1的數(會根據樣本量計算百分比)

6、min_weight_fraction_leaf: 葉子節點所有樣本權重和,如果低於閾值,則會和兄弟節點一起被剪枝,預設是0,就是不考慮權重問題。這個一般在樣本類別偏差較大或有較多缺失值的情況下會考慮

7、max_features: 劃分考慮最大特徵數,不輸入則預設全部特徵,可以選 log2n,sqrt(n),auto或者是小於1的浮點數(百分比)或整數(具體數量的特徵)。如果特徵特別多時如大於50,可以考慮選擇auto來控制決策樹的生成時間

8、max_leaf_nodes:最大葉子節點數,防止過擬合,預設不限制,如果設定了閾值,那麼會在閾值範圍內得到最優的決策樹,樣本量過多時可以設定

9、min_impurity_decrease/min_impurity_split: 劃分最需最小不純度,前者是特徵選擇時低於就不考慮這個特徵,後者是如果選取的最優特徵劃分後達不到這個閾值,則不再劃分,節點變成葉子節點

10、class_weight: 類別權重,在樣本有較大缺失值或類別偏差較大時可選,防止決策樹向類別過大的樣本傾斜。可設定或者balanced,後者會自動根據樣本的數量分布計算權重,樣本數少則權重高,與min_weight_fraction_leaf對應

11、presort: 是否排序,基本不用管

區別在於以下兩點,其餘與分類一樣

1、criterion:特徵選取方法,不再是gini或entropy,而是mse或mae,前者是均方差,後者是和均值的差的絕對值之和,一般用前者,因為前者通常更為精準,且方便計算

2、class_weight:不適合回歸,同樣的min_weight_fraction_leaf 也沒有

# 導入庫

from sklearn.tree import decisiontreeclassifier

from sklearn import datasets

from sklearn.model_selection import train_test_split

import matplotlib.pyplot as plt

from sklearn.model_selection import gridsearchcv

from sklearn.tree import decisiontreeregressor

from sklearn import metrics

# 匯入資料集

x = datasets.load_iris(

)# 以全部字典形式返回,有data,target,target_names三個鍵

data = x.data

target = x.target

name = x.target_names

x,y=datasets.load_iris(return_x_y=

true

)# 能一次性取前2個

print

(x.shape,y.shape)

# 資料分為訓練集和測試集

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=

0.2,random_state=

100)

# 用gridsearchcv尋找最優引數(字典)

param =

grid = gridsearchcv(decisiontreeclassifier(

),param_grid=param,cv=6)

grid.fit(x_train,y_train)

print

('最優分類器:'

,grid.best_params_,

'最優分數:'

, grid.best_score_)

# 得到最優的引數和分值

# 用gridsearchcv尋找最優引數(列表)

param =[,

,]grid = gridsearchcv(decisiontreeclassifier(

),param_grid=param,cv=6)

grid.fit(x_train,y_train)

print

('最優分類器:'

,grid.best_params_,

'最優分數:'

, grid.best_score_)

# 得到最優的引數和分值

決策樹 分類 回歸

決策樹,主要用來分類和回歸 一 首先看下分類決策樹 載入鳶尾花資料集 from sklearn.datasets import load iris iris load iris x,y iris.data,iris.target features iris.feature names 載入交叉驗證莫...

決策樹(二)決策樹回歸

回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...

回歸決策樹

決策樹是處理分類的常用演算法,但它也可以用來處理回歸問題,其關鍵在於選擇最佳分割點,基本思路是 遍歷所有資料,嘗試每個資料作為分割點,並計算此時左右兩側的資料的離差平方和,並從中找到最小值,然後找到離差平方和最小時對應的資料,它就是最佳分割點。sklearn.tree.decisiontreereg...