您好,登錄后才能下訂單哦!
本文實例講述了Python機器學習算法庫scikit-learn學習之決策樹實現方法。分享給大家供大家參考,具體如下:
決策樹
決策樹(DTs)是一種用于分類和回歸的非參數監督學習方法。目標是創建一個模型,通過從數據特性中推導出簡單的決策規則來預測目標變量的值。
例如,在下面的例子中,決策樹通過一組if-then-else決策規則從數據中學習到近似正弦曲線的情況。樹越深,決策規則越復雜,模型也越合適。
決策樹的一些優勢是:
決策樹的缺點包括:
分類
決策樹分類器(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 將樹導出為Graphviz格式。下面是一個在整個iris(虹膜)數據集上輸出的樹示例:
>>> with open("iris.dot", 'w') as f: ... f = tree.export_graphviz(clf, out_file=f)
然后我們可以使用Graphviz的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是一個二維數組[n_samples,n_output]
。
當輸出之間沒有相關性時,解決這類問題的一個非常簡單的方法是建立n個獨立的模型,即每一個輸出,然后使用這些模型獨立地預測每一個輸出。
然而,因為可能與相同輸入相關的輸出值本身是相關的,通常更好的方法是構建一個能夠同時預測所有n輸出的單一模型。首先,它需要較低的培訓時間,因為只構建了一個估計值。其次,結果估計量的泛化精度通常會增加。
對于決策樹,這種策略可以很容易地用于支持多輸出問題。這需要以下更改:
這個模塊提供了支持多輸出問題的方法,通過DecisionTreeClassifier 和DecisionTreeRegressor實現這個策略。
如果決策樹符合大小(n_samples,n_output
)的輸出數組Y,那么得到的估計值將是:
predict_proba
上輸出類概率的n_output數組。多輸出決策樹回歸中顯示了多輸出樹的回歸。在這個例子中,輸入X是一個單一的實際值,輸出Y是X的正弦和余弦。
Examples:
決策樹多輸出回歸
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。