Decision Tree Classifier
from sklearn.tree import DecisionTreeClassifier as DTCy = df.targetX = df.featuresdtc = DTC(criterion='entropy', mim_samples_slit=20, random_state=90)dtc.fit(X, y)official example
from sklearn.datasets import load_irisfrom sklearn.model_selection import cross_val_scorefrom sklearn.tree import DecisionTreeClassifierclf = DecisionTreeClassifier(random_state=0)iris = load_iris()cross_val_score(clf, iris.data, iris.target, cv=10)article
in advance you should install Graphviz
from sklearn.tree import export_graphvizdef visualize_tree(tree, feature_names): """Create tree png using graphviz. Args ---- tree -- scikit-learn DecsisionTree. feature_names -- list of feature names. usage --- features = X.columns visualize_tree(dtc, features) """ with open("dt.dot", 'w') as f: export_graphviz(tree, out_file=f, feature_names=feature_names) #generate png command = ["dot", "-Tpng", "dt.dot", "-o", "dt.png"] #or pdf #command = ["dot", "-Tpdf", "dt.dot", "-o", "dt.pdf"] try: subPRocess.check_call(command) except: exit("Could not run dot, ie graphviz, to " "produce visualization") #open image from PIL import Image im = Image.open("od.png") im.show()example
DecisionTreeRegressor
Decision Tree Regression with AdaBoost
from sklearn.tree import DecisionTreeRegressorregr = DecisionTreeRegressor(max_depth=2)regr.fit(X, y)y_predict = regr_1.predict(X_test)屬性集合
樣本集合
根據(jù)某屬性a的劃分
Ent越小純度越高
決策樹根節(jié)點(diǎn)的D包含所有樣本,如果y只有0,1兩個(gè)取值,正3個(gè)負(fù)2個(gè),則
根據(jù)某屬性a劃分得到
Gain越大劃分得到的純度提升越高
假設(shè)有A = {行為習(xí)慣,飲食偏好, 體育運(yùn)動(dòng)}三個(gè)屬性,判斷是否會(huì)得某種病。
總共6個(gè)得病9個(gè)不得
| 行為習(xí)慣 | 得病 | 不得病 | 得病占該習(xí)慣總數(shù)比例 | 該行為習(xí)慣占總?cè)藬?shù)的比例 |
|---|---|---|---|---|
| 抽煙 | 1 | 5 | 1/6 | 6/15 |
| 喝酒 | 2 | 3 | 2/5 | 5/15 |
| 吸毒 | 3 | 1 | 3/4 | 4/15 |
之后再算
假設(shè)
那么分別取
基于增益率(gain ratio)減少ID3偏好可取數(shù)目多帶來的影響。
劃分訓(xùn)練集和測試集。
如果使用某一劃分,算出驗(yàn)證集精度。
如果停止劃分采用樣本中占多數(shù)的結(jié)果作為該分支結(jié)果,計(jì)算精度。
如果停止劃分精度反而更高則停止劃分。
從完整的決策樹的倒數(shù)第二個(gè)節(jié)點(diǎn)開始。
如果剪掉倒數(shù)第一個(gè)節(jié)點(diǎn)精度提高則剪掉。
依次往上類推
采用二分法劃分,既劃分成
先算出對(duì)該屬性而言無缺失值的Entropy, 然后計(jì)算出對(duì)該屬性而言無缺失值的Gain。
然后乘上無缺失值樣本所占比例
使用斜線來劃分多變量。
既用多變量的線性組合
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注