決策樹與隨機森林學習筆記(二) 房價預估(1)

2021-09-30 16:32:10 字數 2655 閱讀 9941

該程式分為三部分:

1、檢視資料

2、通過資料樣本的個別特徵,搭建決策樹,並 可使化

3、將資料分為訓練集和測試集,搭建決策樹和隨機森林,並進行測試和評估!

#新增基本的庫

%matplotlib inline

import matplotlib.pyplot as plt

import pandas as pd

載入資料

from sklearn.datasets.california_housing import fetch_california_housing

housing = fetch_california_housing()

print(housing.descr)

檢視資料型別

housing.data.shape

housing.data[0]

建立決策樹

from sklearn import tree

dtr = tree.decisiontreeregressor(max_depth = 2)

#建立深度為2的決策樹

dtr.fit(housing.data[:, [6, 7]], housing.target)

#利用資料建模

#print(help(tree.export_graphviz))

#要視覺化顯示 首先需要安裝 graphviz   

import pydotplus

dot_data = tree.export_graphviz(dtr,out_file =none,

feature_names = housing.feature_names[6:8],

filled = true,

impurity = false,

)

#pip install pydotplus

import pydotplus

graph = pydotplus.graph_from_dot_data(dot_data)

graph.get_nodes()[7].set_fillcolor("#fff2dd")

from ipython.display import image

image(graph.create_png())

執行結果:

#交叉驗證將資料集劃分成訓練集和測試集

from sklearn.model_selection import train_test_split

#交叉驗證函式,劃分訓練集和測試集

data_train, data_test, target_train, target_test = \

train_test_split(housing.data, housing.target, test_size = 0.1, random_state = 42)

#搭建決策樹

dtr = tree.decisiontreeregressor(random_state = 42)

dtr.fit(data_train, target_train)

#評估dtr.score(data_test, target_test)

評估分類正確率為:

0.637355881715626

使用隨機森林進行分類

先除錯函式,選取合適的隨機森林的引數

#使用交叉驗證選取引數

from sklearn.model_selection import gridsearchcv

#一般把引數寫成字典的格式

tree_param_grid =

#第乙個引數是模型,第二個引數是待選引數,cv進行幾次交叉驗證

grid = gridsearchcv(randomforestregressor(),param_grid=tree_param_grid, cv=5)

grid.fit(data_train, target_train)

grid.best_params_, grid.best_score_

#,grid.cv_results_

執行結果為:

(, 0.8067555108702777)

將上述的結果中合適的引數,加入重新建立的隨機森林函式中

#使用引數從新訓練隨機森林

rfr = randomforestregressor( min_samples_split=3,n_estimators = 100,random_state = 42)

rfr.fit(data_train, target_train)

rfr.score(data_test, target_test)

執行結果:

0.8088623476993486

相對於決策樹,隨機森林的分類的正確提告了將近20%。

sklearn學習筆記(7) 決策樹 隨機森林

決策樹思想的 非常樸素,程式設計中的條件分支結構就是if then結構,最早的決策樹就是利用這類結構分割資料的一種分類學習方法。資訊熵,在1948年由克勞德 艾爾伍德 夏農提出,解決對資訊的量化度量問題 資訊增益,特徵a對訓練資料集d的資訊增益g d,a 定義為集合d的資訊熵h d 與特徵a給定條件...

機器學習 7 決策樹與隨機森林

如上圖所示,這就是一棵決策樹。決策樹的劃分依據 資訊增益 資訊增益表示,得知特徵x的資訊而使得類y的資訊的不確定性減少的程度。資訊熵越小,資訊增益越大,減少的不確定性越大。公式如下 理解即可 通過乙個例子計算一下,如下圖一些特徵 年齡 有工作 房子 信貸 目標 類別即是否放貸 h d 為總的經驗熵 ...

隨機森林和決策樹區別 AI學習之決策樹與隨機森林

決策樹 使用環境 資訊不確定性衡量熵值型別 資訊熵 資訊不確定性衡量 資訊增益 父節點熵 子節點熵,最大資訊增益的特徵為最佳分割特徵 舉例 示例 依據天氣 是否打高爾夫球的概率 兩個步驟 步驟1 確定分割節點,對於分割節點的每種情況繼續進行分割 步驟2 依據建好的樹進行 步驟1 建樹 確定父節點 步...