學習開始前的環境搭建:
1、安裝anaconda4.2.0(因為想著以後可能會用到tensorflow)
anaconda必須安裝4.2版本,不能安裝4.3 版本;滿滿的血淚史
因為我們需要安裝自帶的python必須是3.5,才可以呼叫tensorflow
但是anaconda4.3自帶是python3.6 ,無法呼叫tensorflow
2、使用的是pycharm 2017.2
3、安裝 graphviz:
配置環境變數,即將安裝路徑到bin下的目錄加到系統環境變數path中
轉化dot檔案至pdf視覺化決策樹,在cmd中執行:dot -tpdf iris.dot(要轉換的檔案) -o outpu.pdf**換成的檔案)
理論學習:
什麼是決策樹/判定樹(decision tree)?
判定樹是乙個類似於流程圖的樹結構:其中,每個內部結點表示在乙個屬性上的測試,每個分支代表乙個屬性輸出,而每個樹葉結點代表類或類分布。樹的最頂層是根結點。
資訊熵(entropy)
演算法:
例項應用:根據乙個人的各種資訊來判斷是否會買電腦
資料集:
準備:將資料集資訊轉成csv檔案:
**:
1from sklearn.feature_extraction import
dictvectorizer
2import
csv3
from sklearn import
preprocessing
4from sklearn import
tree
5from sklearn.externals.six import
stringio
67 allelectronicsdata = open(r"
d:\documents\pycharmprojects\dataset\allelectronics.csv
", "
r") #
開啟相應csv檔案
8 reader =csv.reader(allelectronicsdata)
9 headers =next(reader)
1011
print(headers) #
輸出csv檔案的頭資訊,檢測是否正確讀取
1213 featurelist = #
用來裝特徵值age、income、student、credit_rating的資訊
14 labellist = #
用來裝class_buys_computer的值
15for row in
reader:
取每行的最後乙個值即class_buys_computer放入labellist中
1718
#將前四列的值,以age等為key的形式存入到字典中
19 rowdict ={}
20for i in range(1, len(row) - 1):
21 rowdict[headers[i]] =row[i]
2223
2425
(featurelist)
2627 vec = dictvectorizer() #
python自帶的方法,將字典值轉換成0 1格式
28 dummyx =vec.fit_transform(featurelist).toarray()
2930
print("
dummyx:
" +str(dummyx))
31print
(vec.get_feature_names())
3233
print("
leabellist:
" +str(labellist))
3435 lb =preprocessing.labelbinarizer()
36 dummyy =lb.fit_transform(labellist)
37print("
dummyy:
" +str(dummyy))
3839
#using decision tree for classification
40 clf = tree.decisiontreeclassifier(criterion='
entropy
') #
度量標準,用id3演算法,所以指明criterion='entropy'資訊熵
41 clf = clf.fit(dummyx, dummyy) #
建模,填引數,構建決策樹
42print("
clf:
" +str(clf))
4344
#儲存了決策樹的所有資訊的檔案
45 with open("
allelectronicinformationgainori.dot
", 'w'
) as f:
46 f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)
4748
#取資料集轉換後的第一行進行檢視
49 onerowx =dummyx[0, :]
50print("
onerowx:
" +str(onerowx))
5152
#新建一行作為**時的用例
53 newrowx =onerowx
5455
#更改第一行的部分資料來生成測試用例
56 newrowx[0] = 1
57 newrowx[2] =0
58print("
newrowx:
" +str(newrowx))
5960
#進行**與列印**結果
61 predictedy =clf.predict(newrowx)
62print("
predictedy:
" + str(predictedy))
allelectronicinformationgainori.dot檔案:轉成相應的pdf檔案:allelectronicinformationgainori.pdf
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...
機器學習 決策樹
一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...