<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
下載網址:https://www.graphviz.org/download/
開啟第一步已經下載好的軟體。點選下一步,在安裝路徑選擇時可將安裝路徑修改為 D:graphviz
接著一直點下一步,即可安裝完成。
右鍵點選“我的電腦“”–>選擇“屬性”–>高階系統設定(滑到最下面)
–>環境變數–>系統變數中的path(雙擊)
–>將graphviz的安裝路徑下的bin檔案新增進去。如果你前面安裝的路徑是跟我一樣,直接複製這個路徑即可D:graphvizbin
–>多次點選確定,完成環境變數設定,
點選左下角搜尋,輸入“cmd”,或者 win+R鍵。
輸入 dot -version (注意dot後面後一個空格)。
若出現dot不是內部或外部命令,則表示安裝失敗。
接下來開啟你安裝路徑下bin資料夾下面的config6(選擇開啟方式為記事本開啟)
將裡面內容刪除,複製下面這段程式碼,儲存即可。
import operator import math class DecisionTree: def __init__(self): pass # 載入資料集 def loadData(self): # 天氣晴(2),陰(1),雨(0);溫度炎熱(2),適中(1),寒冷(0);溼度高(1),正常(0) # 風速強(1),弱(0);進行活動(yes),不進行活動(no) # 建立資料集 data = [ [2, 2, 1, 0, "yes"], [2, 2, 1, 1, "no"], [1, 2, 1, 0, "yes"], [0, 0, 0, 0, "yes"], [0, 0, 0, 1, "no"], [1, 0, 0, 1, "yes"], [2, 1, 1, 0, "no"], [2, 0, 0, 0, "yes"], [0, 1, 0, 0, "yes"], [2, 1, 0, 1, "yes"], [1, 2, 0, 0, "no"], [0, 1, 1, 1, "no"], ] # 分類屬性 features = ["天氣", "溫度", "溼度", "風速"] return data, features # 計算給定資料集的夏農熵 def ShannonEnt(self, data): numData = len(data) # 求長度 labelCounts = {} for feature in data: oneLabel = feature[-1] # 獲得標籤 # 如果標籤不在新定義的字典裡建立該標籤值 labelCounts.setdefault(oneLabel, 0) # 該類標籤下含有資料的個數 labelCounts[oneLabel] += 1 shannonEnt = 0.0 for key in labelCounts: # 同類標籤出現的概率 prob = float(labelCounts[key]) / numData # 以2為底求對數 shannonEnt -= prob * math.log2(prob) return shannonEnt # 劃分資料集,三個引數為帶劃分的資料集,劃分資料集的特徵,特徵的返回值 def splitData(self, data, axis, value): retData = [] for feature in data: if feature[axis] == value: # 將相同資料集特徵的抽取出來 reducedFeature = feature[:axis] reducedFeature.extend(feature[axis + 1 :]) retData.append(reducedFeature) return retData # 返回一個列表 # 選擇最好的資料集劃分方式 def chooseBestFeatureToSplit(self, data): numFeature = len(data[0]) - 1 baseEntropy = self.ShannonEnt(data) bestInfoGain = 0.0 bestFeature = -1 for i in range(numFeature): # 獲取第i個特徵所有的可能取值 featureList = [result[i] for result in data] # 從列表中建立集合,得到不重複的所有可能取值 uniqueFeatureList = set(featureList) newEntropy = 0.0 for value in uniqueFeatureList: # 以i為資料集特徵,value為返回值,劃分資料集 splitDataSet = self.splitData( data, i, value ) # 資料集特徵為i的所佔的比例 prob = len(splitDataSet) / float(len(data)) # 計算每種資料集的資訊熵 newEntropy += prob * self.ShannonEnt(splitDataSet) infoGain = baseEntropy - newEntropy # 計算最好的資訊增益,增益越大說明所佔決策權越大 if infoGain > bestInfoGain: bestInfoGain = infoGain bestFeature = i return bestFeature # 遞迴構建決策樹 def majorityCnt(self, labelsList): labelsCount = {} for vote in labelsList: if vote not in labelsCount.keys(): labelsCount[vote] = 0 labelsCount[vote] += 1 sortedLabelsCount = sorted( labelsCount.iteritems(), key=operator.itemgetter(1), reverse=True ) # 排序,True升序 # 返回出現次數最多的 print(sortedLabelsCount) return sortedLabelsCount[0][0] # 建立決策樹 def createTree(self, data, features): # 使用"="產生的新變數,實際上兩者是一樣的,避免後面del()函數對原變數值產生影響 features = list(features) labelsList = [line[-1] for line in data] # 類別完全相同則停止劃分 if labelsList.count(labelsList[0]) == len(labelsList): return labelsList[0] # 遍歷完所有特徵值時返回出現次數最多的 if len(data[0]) == 1: return self.majorityCnt(labelsList) # 選擇最好的資料集劃分方式 bestFeature = self.chooseBestFeatureToSplit(data) bestFeatLabel = features[bestFeature] # 得到對應的標籤值 myTree = {bestFeatLabel: {}} # 清空features[bestFeat],在下一次使用時清零 del (features[bestFeature]) featureValues = [example[bestFeature] for example in data] uniqueFeatureValues = set(featureValues) for value in uniqueFeatureValues: subFeatures = features[:] # 遞迴呼叫建立決策樹函數 myTree[bestFeatLabel][value] = self.createTree( self.splitData(data, bestFeature, value), subFeatures ) return myTree # 預測新資料特徵下是否進行活動 def predict(self, tree, features, x): for key1 in tree.keys(): secondDict = tree[key1] # key是根節點代表的特徵,featIndex是取根節點特徵在特徵列表的索引,方便後面對輸入樣本逐變數判斷 featIndex = features.index(key1) # 這裡每一個key值對應的是根節點特徵的不同取值 for key2 in secondDict.keys(): # 找到輸入樣本在決策樹中的由根節點往下走的路徑 if x[featIndex] == key2: # 該分支產生了一個內部節點,則在決策樹中繼續同樣的操作查詢路徑 if type(secondDict[key2]).__name__ == "dict": classLabel = self.predict(secondDict[key2], features, x) # 該分支產生是葉節點,直接取值就得到類別 else: classLabel = secondDict[key2] return classLabel if __name__ == "__main__": dtree = DecisionTree() data, features = dtree.loadData() myTree = dtree.createTree(data, features) print(myTree) label = dtree.predict(myTree, features, [1, 1, 1, 0]) print("新資料[1,1,1,0]對應的是否要進行活動為:{}".format(label))
最後再次通過cmd測試是否安裝成功。命令:dot -version (同樣注意dot後有一個空格)
出現這段文字。顯示dot版本和路徑,恭喜你安裝成功。
到此這篇關於graphviz 2022最新安裝教學適用初學者的文章就介紹到這了,更多相關graphviz 安裝教學內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45