① 數據結構與演算法,森林是樹的集合,那這個即集合里可不可以有隻有一個結點的樹
可以的,這是特殊情況。只有一個結點的二叉樹沒有子樹,
故它的結點的度及樹的度都為零。
② 隨機森林演算法怎麼提高預測數據的准確率
不了解什麼是隨機森林。感覺應該是一種演算法。如果做計算機視覺建議你用OpenCV,R語言主要用在統計分析、機器學習領域。你找幾篇這方面的文獻看看別人跟你做類似課題時是用C++還是R。
③ 樹和森林生成二叉樹演算法(請給出數據結構)
這個實現起來蠻簡單的,就是一個根節點的第一個孩子就是他的左孩子,第二個孩子就是他第一個孩子的有孩子,第三個孩子就是他第二個孩子的右孩子。每個節點的第一個孩子是自己的左孩子。等有時間再幫你編這個程序。
④ c語言數據結構求森林的深度的遞歸演算法
d1代表,如果不是這個第一個左孩子不是空樹,它就會一直找下去,直到找到最後,記下左孩子的深度
d2代表,如果不是這個第一個右孩子不是空樹,它就會一直找下去,直到找到最後,記下右孩子的深度
當然每次都會返回的左右深度的最大值,因為你要找的是森林的深度。
如果你不明白的話,你可以看一個比較簡單的,就是求樹的深度,再簡單的就是求二叉樹的深度,當這些深度你都會求了,森林的自然而然就會了。呵呵呵
不知道對你有沒有幫助啊
⑤ 隨機森林演算法特徵的閾值怎麼確定
這個並不一定。隨機森林是用來對特徵的重要程度來排序選擇。選擇完成後,你可以根據自己的需要選擇分類演算法
⑥ 我想知道隨機聚類森林演算法和隨機森林演算法有什麼不同,希望大家可以幫助我,謝謝。
通常隨機森林聚類演算法指代的是語義紋元森林,而隨機森林演算法是通常理解的基於決策樹的組合分類器演算法
⑦ 孤獨森林演算法和四分位極差法是什麼關系
孤獨森林演算法和四為四分位及差法,他倆之間是有聯系的,也就是孤獨森林演算法是在四分位極差演算法的基礎上發展而來的。
⑧ 求問隨機森林演算法的簡單實現過程
隨機森林(Random forest)指的是利用多棵樹對樣本進行訓練並預測的一種分類器。 並且其輸出的類別是由個別樹輸出的類別的眾數而定。在機器學習中有一個地位很重要的包scikit-learn可實現隨機森林演算法。
原理:(隨機森林的分類預測和回歸預測sklearn.ensemble.RandomForestRegressor方法)
(1)給定訓練集S,測試集T,特徵維數F。確定參數:使用到的CART的數量t,每棵樹的深度d,每個節點使用到的特徵數量f,終止條件:節點上最少樣本數s,節點上最少的信息增益m,對於第1-t棵樹,i=1-t:
(2)從S中有放回的抽取大小和S一樣的訓練集S(i),作為根節點的樣本,從根節點開始訓練
(3)如果當前節點上達到終止條件,則設置當前節點為葉子節點,如果是分類問題,該葉子節點的預測輸出為當前節點樣本集合中數量最多的那一類c(j),概率p為c(j)占當前樣本集的比例;如果是回歸問題,預測輸出為當前節點樣本集各個樣本值的平均值。然後繼續訓練其他節點。如果當前節點沒有達到終止條件,則從F維特徵中無放回的隨機選取f維特徵。利用這f維特徵,尋找分類效果最好的一維特徵k及其閾值th,當前節點上樣本第k維特徵小於th的樣本被劃分到左節點,其餘的被劃分到右節點。繼續訓練其他節點。
(4)重復(2)(3)直到所有節點都訓練過了或者被標記為葉子節點。
(5)重復(2),(3),(4)直到所有CART都被訓練過。
隨機森林的簡單實現過程如下:
一、 開發環境、編譯環境:
PyCharm Community Edition 2016.2.3
python2.7.10
二、 所用庫及安裝方法:
pandas[python自帶]
sklearn:命令行pip install sklearn;如果沒有安裝pip,先使用easy_install pip安裝pip;如果在MAC上沒有許可權,使用sudo pip install sklearn;
三、 代碼介紹
1. 使用pandas讀取本地excel的訓練集和測試集,將屬性集賦給X_train和Y_train;將要預測的集合賦給X_test和Y_test;
2. 使用DictVectorizer對數據進行規范化、標准化
3. 生成RandomForestRegressor對象,並將訓練集傳入fit方法中進行訓練
4. 調用predict函數進行預測,並將結果存入y_predict變數中;
5. 使用mean_squared_error、score方法輸出MSE、NMSE值對擬合度、穩定度進行分析;輸出feature_importance,對影響最終結果的屬性進行分析;
6. 詳細代碼見附錄
四、 附錄
# coding:utf-8
import pandas as pd
data_train = pd.read_excel('/Users/xiaoliu/Desktop/data_train.xlsx')
X_train = data_train[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_train = data_train['FJ']
data_test = pd.read_excel('/Users/xiaoliu/Desktop/data_test.xlsx')
X_test = data_test[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_test = data_test['FJ']
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='records'))
X_test = vec.transform(X_test.to_dict(orient='records'))
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
rf.fit(X_train,y_train)
y_predict = rf.predict(X_test)
print 'predict value:',y_predict
from sklearn.metrics import mean_squared_error
print 'MSE:', mean_squared_error(y_test, y_predict)
print 'NMES:',rf.score(X_test, y_test)
print rf.feature_importances_
⑨ 隨機森林演算法是什麼
隨機森林是一種比較新的機器學習模型。
經典的機器學習模型是神經網路,有半個多世紀的歷史了。神經網路預測精確,但是計算量很大。上世紀八十年代Breiman等人發明分類樹的演算法(Breiman et al. 1984),通過反復二分數據進行分類或回歸,計算量大大降低。
2001年Breiman把分類樹組合成隨機森林(Breiman 2001a),即在變數(列)的使用和數據(行)的使用上進行隨機化,生成很多分類樹,再匯總分類樹的結果。隨機森林在運算量沒有顯著提高的前提下提高了預測精度。
隨機森林對多元共線性不敏感,結果對缺失數據和非平衡的數據比較穩健,可以很好地預測多達幾千個解釋變數的作用(Breiman 2001b),被譽為當前最好的演算法之一(Iverson et al. 2008)。
隨機森林優點:
隨機森林是一個最近比較火的演算法,它有很多的優點:
a、在數據集上表現良好,兩個隨機性的引入,使得隨機森林不容易陷入過擬合。
b、在當前的很多數據集上,相對其他演算法有著很大的優勢,兩個隨機性的引入,使得隨機森林具有很好的抗雜訊能力。
c、它能夠處理很高維度(feature很多)的數據,並且不用做特徵選擇,對數據集的適應能力強:既能處理離散型數據,也能處理連續型數據,數據集無需規范化。
⑩ [ 實驗目的] 驗證樹和森林的遍歷演算法。(c++)
樹和森林的遍歷
@(數據結構)
不要帶著二叉樹的遍歷來限制了對樹的遍歷的理解。
樹的遍歷的定義:以某種方式訪問樹中的每一個結點,且僅訪問一次。
樹的遍歷主要有先根遍歷和後根遍歷。
先根遍歷:若樹非空,則先訪問根結點,再按照從左到右的順序遍歷根結點的每一棵子樹。這個訪問順序與這棵樹對應的二叉樹的先序遍歷順序相同。
後根遍歷:若樹非空,則按照從左到右的順序遍歷根結點的每一棵子樹,之後再訪問根結點。其訪問順序與這棵樹對應的二叉樹的中序遍歷順序相同。
我們看這個森林和二叉樹的各種遍歷。
森林的先根遍歷:A-B-C-D-E-F-G-H-J-I
二叉樹森林的先序遍歷:A-B-C-D-E-F-G-H-J-I(相同)
完整二叉樹的先序遍歷:A-B-C-D-E-F-G-H-J-I (相同)
森林的後根遍歷:B-C-D-A-F-E-J-H-I-G
二叉樹森林的後序遍歷:D-C-B-A-F-E-J-I-H-G
完整二叉樹的後序遍歷:D-C-B-F-J-I-H-G-E-A(不同於二叉樹森林的後序遍歷)
二叉樹森林的中序遍歷:B-C-D-A-F-E-J-H-I-G(與森林的後根遍歷相同)
完整二叉樹的中序遍歷:B-C-D-A-F-E-J-H-I-G(與森林的後根遍歷相同,自然也與二叉樹森林的中序遍歷相同)
以上。
閱讀全文