in[1]
:import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score,recall_score,f1_score
from sklearn.tree import decisiontreeclassifier,export_graphviz
import os
import pydotplus
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns # 畫相簿
plt.style.use(
'ggplot'
)plt.rcparams[
'font.sans-serif']=
['simhei'
]#設定中文字型為黑體
plt.rcparams[
'axes.unicode_minus']=
false
in[2]:
#匯入檔案兩個例子,乙個是正常用電,乙個是非正常用電,非正常用電使用者的電量呈逐漸下降趨勢
period= pd.read_csv(
"ele_pow.csv"
,index_col=0)
#第一行為欄位名
#匯入建模的檔案,其中包括了特徵【電量趨勢下降指標、線損指標、告警類指標】,以及標籤【是否竊漏電】,均已進行過預處理(資料清洗、歸一化等)
modeling=pd.read_excel(
"model.xls"
,encoding=
'utf-8'
)in[3]
:period.plot(
)plt.show(
)#正常和非正常的電量分析
)#分析指標之間的相關性,通過熱力圖呈現相關狀況
from sklearn.model_selection import train_test_split #劃分資料集的選擇工具
in[6]:
x=modeling[
['電量趨勢下降指標'
,'線損指標'
,'告警類指標']]
y=modeling[
'是否竊漏電'
]in[7]
:x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=
0.2)
in[8]:
tree=decisiontreeclassifier(max_depth=
6,min_samples_leaf=2)
tree.fit(x_train,y_train)
y_preddt=tree.predict(x_test)
print
("desiciontree model:"
)print
("dt-acc:"
,accuracy_score(y_test,y_preddt)
)print
("dt-rec:"
,recall_score(y_test,y_preddt)
)print
("dt-f1:"
,f1_score(y_test,y_preddt)
)roc_auc_score_dt = roc_auc_score(y_test,y_preddt)
print
("the roc of dt:"
,roc_auc_score_dt)
#auc值通常在0.5-1之間,越接近1,模型擬合效果越好
out[9]
:desiciontree model:
dt-acc:
0.9491525423728814
dt-rec:
0.875
dt-f1:
0.823529411764706
the roc of dt:
0.9178921568627452
#可見模型擬合效果較好
in[10]:
from sklearn.tree import export_graphviz
dot_data = export_graphviz(tree, out_file=
none
, feature_names=
['down'
,'damagine'
,'warning'],
class_names=
['y'
,'n'],
filled=
true
, rounded=
true
, special_characters=
true
)graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf(
"tree.pdf"
)
*決策樹視覺化結果:
決策樹模型
決策樹採用樹結構來進行決策的,可以認為是if then規則集合,也可以認為是對特徵空間劃分,每個子空間對應乙個輸出。其優點簡單,快速,可解釋性強。決策樹通常包含三部分 特徵選擇,決策樹生成,決策樹剪枝。資訊增益,資訊增益比,基尼指數是常用的特徵選擇準則 資訊熵 表示變數的不確定程度,資訊熵越大不確定...
決策樹模型
前言 決策樹生成模型三要素 一般而言,一顆 完全生長 的決策樹包含 特徵選擇 決策樹構建 剪枝三個過程。決策樹是一種啟發式貪心演算法,每次選取的分割資料的特徵是當前的最佳選擇,並不關心是否達到最優。一 特徵選擇 1.1 熵 樣本集合 純度 不確定性 穩定性的指標 熵越大,樣本的不確定性就越大 在決策...
決策樹模型
決策樹可以簡單的理解為根據特徵的取值而最終分成不同的類,也可以理解為簡單的if then的規則集合 樹嘛 那麼怎麼樣選擇節點是乙個很有技術的問題。為什麼呢,因為如果你的中間節點擊的不錯是不是就能夠很容易的將決策樹的各個節點很容易的分清楚了 說白了,你選的樹分叉的地方越有區分度 分類越多越好你乙個特徵...