機器學習之sklearn工具包(決策樹與隨機森林)

2021-10-05 12:30:17 字數 4138 閱讀 2211

資訊增益

資訊熵的計算

隨機森林

決策樹是基於資訊理論提出的概念,劃分原則是將原本無序的資料變得更加有序。

資訊熵是指資訊的不確定性,是對資訊不確定性的度量。

資訊增益表示的是原來的資料在沒有按照任何屬性劃分時的熵與按照某一屬性a進行劃分後的資訊熵的差值。

# 判斷賬號是否真實:3 no(0.3)7 yes(0.7)

# 不進行劃分,計算資訊熵

info_d=

0.3*np.log2(1/

0.3)

+0.7

*np.log2(1/

0.7)

print

(info_d)

# 建立決策樹,對目標值進行劃分

# 三個屬性:日誌密度、好友密度、是否真實頭像

# 使用日誌密度進行決策樹的構建

# 3s 0.3 ----->2 no 1 yes

# 4m 0.4 ----->1 no 3 yes

# 3l 0.3 ----->3 yes

info_l_d=

0.3*(2

/3*np.log2(3/

2)+1

/3*np.log2(3)

)+0.4*

(0.25

*np.log2(4)

+0.75

*np.log2(4/

3))+

0.3*(1

*np.log2(1)

)print

(info_l_d)

print

(info_d-info_l_d)

0.8812908992306926

0.5999999999999999

0.2812908992306927

import numpy as np

from sklearn.tree import decisiontreeclassifier

from sklearn.datasets import load_iris

import matplotlib.pyplot as plt

from sklearn import tree

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

iris=load_iris(

)x=iris[

'data'

]y=iris[

'target'

]feature_names=iris.feature_names

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=

0.2,random_state=

1024

)# 連續的資料,選擇屬性需要用閾值選擇,優先選擇屬性波動較大的,利於區分

print

(x_train.std(axis=0)

)clf=decisiontreeclassifier(criterion=

'entropy'

)clf.fit(x_train,y_train)

y_=clf.predict(x_test)

accuracy=accuracy_score(y_test,y_)

# plt.figure(figsize=(18,12))

# # sklearn 的版本為0.21.3

# _=tree.plot_tree(clf,filled=true,feature_names=feature_names)

# 獲得不屬於類別0的資料,並進行劃分

x_train2=x_train[y_train!=0]

y_train2=y_train[y_train!=0]

index=np.argsort(x_train2[:,

3])print

(x_train2[:,

3][index]

)print

(y_train2[index]

)

[

0.82300095

0.42470578

1.74587112

0.75016619][

1.1.

1.1.

1.1.

1.11.1

1.21.2

1.21.2

1.21.3

1.31.3

1.31.3

1.31.3

1.31.3

1.31.4

1.41.4

1.41.4

1.41.5

1.51.5

1.51.5

1.51.5

1.51.5

1.51.6

1.61.6

1.61.7

1.71.8

1.81.8

1.81.8

1.81.8

1.81.8

1.91.9

1.91.9

1.92.2

.2.2

.2.2.1

2.12.1

2.12.2

2.22.3

2.32.3

2.32.3

2.32.3

2.32.4

2.52.5][

1111

1111

1111

1111

1111

1111

1111

1111

1211

1122

1112

1222

2221

2222

2222

2222

2222

2222

2222

2222

2]

gini係數

# 隨機森林:多顆決策樹構建而成,每一顆決策樹都是基於決策樹原理

# 多顆決策樹一起運算------>整合演算法

wine=datasets.load_wine(

)x=wine[

'data'

]y=wine[

'target'

]x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=

0.2)

clf=randomforestclassifier(n_estimators=

100)

clf.fit(x_train,y_train)

y_=clf.predict(x_test)

from sklearn.metrics import accuracy_score

print

(accuracy_score(y_test,y_)

)

1.0

機器學習工具包鏈結

1.sklearn 2.lightgbm 3.keras backend庫 用來進行low level的庫,目前主要有tensorflow,theano,cntk 等三類.fit 中的 verbose verbose 日誌顯示 verbose 0 為不在標準輸出流輸出日誌資訊 verbose 1 為...

Python之爬蟲工具包

requests包 是乙個實用的python的http客戶端庫,編寫爬蟲從web上爬取資料時經常用到 簡單實用,介面簡單 requests.get url lxml包 主要用來解析通過requests抓取的html內容,從中提取出我們需要的資料,在對html文字內容進行提取 篩選時用到的是xpath...

ipkg工具包的學習

ipkg 詳細說明 http handhelds.org moin moin.cgi ipkg ipkg update 進行可用程式庫的更新 ipkg upgrade 已安裝了的程式進行版本更新 ipkg list install 檢視本機安裝了那些程式 ipkg的安裝和使用說明 1.ipkg是在嵌...