1. 程式人生 > >利用Python sklearn庫裡的決策樹模型生成決策樹圖片以及測試分類的準確度

利用Python sklearn庫裡的決策樹模型生成決策樹圖片以及測試分類的準確度

本案例利用sklearn自帶的資料集,選取房子經緯度作為特徵引數來對標籤進行分類。

也用切分的資料訓練模型來進行特徵引數的選擇得到最好的測試準確度。

Python原始碼:

#!/usr/bin/env python
# encoding: utf-8
"""
@Company:華中科技大學電氣學院聚變與等離子研究所
@version: V1.0
@author: Victor
@contact: [email protected] or [email protected] 2018--2020
@software: PyCharm
@file: House.py
@time: 2018/11/17 19:36
@Desc:
"""

import matplotlib.pyplot as plt

import pandas as pd

from sklearn.datasets.california_housing import fetch_california_housing
housing = fetch_california_housing() ###呼叫sklearn自帶的數集
#print(housing.DESCR)
print(housing.data.shape)
print(housing.data[1])

#####取要使用的特徵做決策樹
from sklearn import tree
dtr = tree.DecisionTreeRegressor(max_depth=2)
dtr.fit(housing.data[:,[6,7]],housing.target)###取房子所在的經度和緯度
###輸出構造決策樹模型的一些基本引數,有些事預設的
print(dtr)

#要視覺化顯示 首先需要安裝 graphviz   http://www.graphviz.org/Download..php
dot_data =tree.export_graphviz(
        dtr,
        out_file = None,
        feature_names = housing.feature_names[6:8],
        filled = True,
        impurity = False,
        rounded = True
    )

#pip install pydotplus
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.get_nodes()[7].set_fillcolor("#FFF2DD")
graph.write_png("out.png")  #當前資料夾生成out.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)##,取其中10%做測試集,random_state指定每次隨機結果都是一致的
dtr = tree.DecisionTreeRegressor(random_state = 42)##構造樹模型
dtr.fit(data_train, target_train)

print("==============================")
print("測試分類的準確度:",dtr.score(data_test, target_test))##測試檢驗分類的準確度


'''隨機森林'''
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor( random_state = 42)
rfr.fit(data_train, target_train)
print(rfr.score(data_test, target_test))


結果展示: