隨機森林學習-sklearn


 

隨機森林的Python實現 (RandomForestClassifier)

 

# -*- coding: utf-8 -*-
""" RandomForestClassifier skleran 的隨機森林回歸模型,應用流程。 2.源數據隨機的切分:75%作為訓練數據  25%最為測試數據 1.訓練數據中的因變量(分類變量)處理成數字形式 3.設定參數,訓練/fit 4.對測試數據,預測/predict結果y_pre 5.對預測數據y列,y_pre列,生成混淆矩陣,顯示分類/預測效果 """
from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier import pandas as pd import numpy as np iris = load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names) #合並 自變量 和 因變量 df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75 #相當於隨機抽取了75%作為訓練數據 df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names) #將數字類別轉為文字類別 df.head() train, test = df[df['is_train']==True], df[df['is_train']==False] #拆分訓練集和測試集 features = df.columns[:4] # 前4個指標 為自變量 clf = RandomForestClassifier(n_jobs=2) # n_jobs=2是線程數 y, _ = pd.factorize(train['species']) # 將文字類別 轉為數字類別。一種序列化方法。第一參數是序列化后結果,第二個時參考 clf.fit(train[features], y) #訓練過程 preds = iris.target_names[clf.predict(test[features])] # 獲取測試數據預測結果 pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds']) #生成混淆矩陣



#有意思的輸出
clf.feature_importances_ # 輸出 自變量的總要程度
clf.predict_proba(test[features]) #輸出每個測試樣本對應幾種數據類型的概率值

150個數據,112做訓練 38個最測試.

df數據示例-      測試數據,輸出結果-

 

 

參考:[Machine Learning & Algorithm] 隨機森林(Random Forest)

 

 =============================================================================================================

知識點:

對 ‘RandomForestClassifier’ 原文翻譯

 

知識點:

#將數字類別轉為文字類別

pd.Categorical.from_codes([0,1,2,1,0,0,1,-1], ['小貓','中貓','大貓'])   

#Out[76]:

#[小貓, 中貓, 大貓, 中貓, 小貓, 小貓, 中貓, NaN]

#Categories (3, object): [小貓, 中貓, 大貓]

 

知識點:

# pd.factorize 用法

從例子中可以看到 pd.factorize() 返回的是一個tuple ,包含連個元素,第二個是源數據中所有數據的類別,當然取出了nan ,第一個是源數據在類別中對應的序號組成的array 看到這里可以發現 和pd.Categorical() 真的是非常像了。

 

知識點:

Pandas:透視表(pivotTab)和交叉表(crossTab)

 

知識點:

numpy.random.seed(1) #設定隨機種子且僅在下一次隨機時有效.

介紹Python-random模塊的鏈接:

numpy的random模塊

隨機數生成模塊numpy.random

 

 

==================================================================================================================================================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM