決策樹演算法 Python實現

2022-08-19 05:51:07 字數 1650 閱讀 9916

import matplotlib.pyplot as plt

import pandas as pd

from sklearn.datasets import fetch_california_housing

housing = fetch_california_housing()

# print(housing.descr)

print(housing.data.shape)

print(housing.data[0])

from sklearn import tree

dtr = tree.decisiontreeregressor(max_depth=2)

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

# 樹模型引數

# 1.criterion gini or entroy

# 2.splitter best or random 前者是在所有特徵最終找到最好的切分點,後者實在部分特徵中

# 3.max_features none, log2, sqrt, n特徵小於50一般使用所有的

# 4.mini_depth 資料少或者特徵少的情況下,可以不管這個值,如果模型資料樣本量多或者特徵多的情況下,可以嘗試限制

# 5.mini_samples_split 如果節點數量少,不用管,如果樣本數非常大,則推薦增加這個值

# 6.mini_samples_leaf 限制了葉子節點的樣本權重和最小值,如果小於這個值,樣本量不大,不需要管這個值,大些如果10w,可以設定5

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)

## 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))

from sklearn.model_selection import gridsearchcv

tree_param_grid =

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

grid.fit(data_train, target_train)

print(grid.error_score, grid.best_params_, grid.best_score_)

決策樹演算法 python實現

定義 資訊增益 再劃分資料之前之後資訊發生的變化。香濃熵 簡稱熵 集合資訊的度量方式,熵是資訊的期望值。其實決策樹主要就是選擇最優劃分屬性對給定集合進行劃分,隨著花粉的不斷進行,我們希望最終決策樹所包含的樣本盡量屬於同一類別,即結點的 純度 越來越高。資訊增益的計算 1.資訊熵的計算ent d 越小...

Python實現決策樹演算法

決策樹的一般流程 檢測資料集中的每個子項是否屬於同乙個分類 if so return 類標籤 else 尋找劃分資料集的最好特徵 劃分資料集 建立分支 節點 from math import log import operator 生成樣本資料集 defcreatedataset dataset 1...

Python 決策樹演算法的實現

完整的程式如下 from sklearn.feature extraction import dictvectorizer import csv from sklearn import tree from sklearn import preprocessing from sklearn.exter...