欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pyspark 隨機(jī)森林的實現(xiàn)

 更新時間:2020年04月24日 14:41:57   作者:陽望  
這篇文章主要介紹了pyspark 隨機(jī)森林的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

隨機(jī)森林是由許多決策樹構(gòu)成,是一種有監(jiān)督機(jī)器學(xué)習(xí)方法,可以用于分類和回歸,通過合并匯總來自個體決策樹的結(jié)果來進(jìn)行預(yù)測,采用多數(shù)選票作為分類結(jié)果,采用預(yù)測結(jié)果平均值作為回歸結(jié)果。

“森林”的概念很好理解,“隨機(jī)”是針對森林中的每一顆決策樹,有兩種含義:第一種隨機(jī)是數(shù)據(jù)采樣隨機(jī),構(gòu)建決策樹的訓(xùn)練數(shù)據(jù)集通過有放回的隨機(jī)采樣,并且只會選擇一定百分比的樣本,這樣可以在數(shù)據(jù)集合存在噪聲點、異常點的情況下,有些決策樹的構(gòu)造過程中不會選擇到這些噪聲點、異常點從而達(dá)到一定的泛化作用在一定程度上抑制過擬合;第二種隨機(jī)是特征隨機(jī),訓(xùn)練集會包含一系列特征,隨機(jī)選擇一部分特征進(jìn)行決策樹的構(gòu)建。通過這些差異點來訓(xùn)練的每一顆決策樹都會學(xué)習(xí)輸入與輸出的關(guān)系,隨機(jī)森林的強(qiáng)大之處也就在于此。

廢話不多說,直接上代碼:

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import StringIndexer
from pyspark.ml.classification import RandomForestClassifier
from pyspark.sql import Row
import pandas as pd
from sklearn import metrics
 
if __name__ == "__main__":
  appname = "RandomForestClassifier"
  master ="local[4]" 
  conf = SparkConf().setAppName(appname).setMaster(master) #spark配置        
  spark=SparkSession.builder.config(conf=conf).getOrCreate()#spark實例化
  
#讀取數(shù)據(jù)
  data=spark.read.csv('良惡性乳腺癌數(shù)據(jù).csv',header=True)
  
#構(gòu)造訓(xùn)練數(shù)據(jù)集
  dataSet = data.na.fill('0').rdd.map(list)#用0填充空值  
  trainData, testData= dataSet.randomSplit([0.7, 0.3], seed=7)
  trainingSet = trainData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()  
  train_num = trainingSet.count()
  print("訓(xùn)練樣本數(shù):{}".format(train_num))
 
   
#使用隨機(jī)森林進(jìn)行訓(xùn)練
  stringIndexer = StringIndexer(inputCol="label", outputCol="indexed")
  si_model = stringIndexer.fit(trainingSet)
  train_tf = si_model.transform(trainingSet)
  train_tf.show(5)  
  rf = RandomForestClassifier(numTrees=100, labelCol="indexed", seed=7)
  rfModel = rf.fit(train_tf)
   
#輸出模型特征重要性、子樹權(quán)重
  print("模型特征重要性:{}".format(rfModel.featureImportances))
  print("模型特征數(shù):{}".format(rfModel.numFeatures))
  
#預(yù)測測試集
  testSet = testData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()
  test_num=testSet.count()
  print("測試樣本數(shù):{}".format(test_num))  
  si_model = stringIndexer.fit(testSet)
  test_tf = si_model.transform(testSet)  
  predictResult = rfModel.transform(test_tf)
  predictResult.show(5)
  spark.stop()
 
#將預(yù)測結(jié)果轉(zhuǎn)為python中的dataframe
  columns=predictResult.columns#提取強(qiáng)表字段
  predictResult=predictResult.take(test_num)#
  predictResult=pd.DataFrame(predictResult,columns=columns)#轉(zhuǎn)為python中的dataframe
 
#性能評估
  y=list(predictResult['indexed'])
  y_pred=list(predictResult['prediction'])
  y_predprob=[x[1] for x in list(predictResult['probability'])]
  precision_score=metrics.precision_score(y, y_pred)#精確率
  recall_score=metrics.recall_score(y, y_pred)#召回率
  accuracy_score=metrics.accuracy_score(y, y_pred)#準(zhǔn)確率
  f1_score=metrics.f1_score(y, y_pred)#F1分?jǐn)?shù)
  auc_score=metrics.roc_auc_score(y, y_predprob)#auc分?jǐn)?shù)
  print("精確率:",precision_score )#精確率
  print("召回率:",recall_score )#召回率
  print("準(zhǔn)確率:",accuracy_score )#準(zhǔn)確率
  print("F1分?jǐn)?shù):", f1_score)#F1分?jǐn)?shù)
  print("auc分?jǐn)?shù):",auc_score )#auc分?jǐn)?shù)

運(yùn)行結(jié)果:

到此這篇關(guān)于pyspark 隨機(jī)森林的實現(xiàn)的文章就介紹到這了,更多相關(guān)pyspark 隨機(jī)森林內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python通過正則表達(dá)式選取callback的方法

    Python通過正則表達(dá)式選取callback的方法

    這篇文章主要介紹了Python通過正則表達(dá)式選取callback的方法,涉及Python正則表達(dá)式及回調(diào)函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python打包后的exe還原成.py的實現(xiàn)步驟

    Python打包后的exe還原成.py的實現(xiàn)步驟

    本文主要介紹了Python打包后的exe還原成.py的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python實現(xiàn)圖片篩選程序

    python實現(xiàn)圖片篩選程序

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)圖片篩選程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Python緩存利器之cachetools庫使用詳解

    Python緩存利器之cachetools庫使用詳解

    cachetools庫為Python提供了強(qiáng)大而靈活的緩存解決方案,通過使用不同類型的緩存和緩存裝飾器,我們可以輕松地在程序中實現(xiàn)高效的緩存機(jī)制,從而提升程序性能,本文將詳細(xì)介紹cachetools庫的基本概念和使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • python刪除特定文件的方法

    python刪除特定文件的方法

    這篇文章主要介紹了python刪除特定文件的方法,涉及Python文件查找及刪除的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python unittest單元測試框架實現(xiàn)參數(shù)化

    Python unittest單元測試框架實現(xiàn)參數(shù)化

    這篇文章主要介紹了Python unittest單元測試框架實現(xiàn)參數(shù)化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 適合Python初學(xué)者的一些編程技巧

    適合Python初學(xué)者的一些編程技巧

    這篇文章主要介紹了給Python初學(xué)者的一些編程技巧,皆是基于基礎(chǔ)的一些編程習(xí)慣建議,需要的朋友可以參考下
    2020-02-02
  • numpy庫與pandas庫axis=0,axis= 1軸的用法詳解

    numpy庫與pandas庫axis=0,axis= 1軸的用法詳解

    這篇文章主要介紹了numpy庫與pandas庫axis=0,axis= 1軸的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python實用秘技之快速優(yōu)化導(dǎo)包順序詳解

    Python實用秘技之快速優(yōu)化導(dǎo)包順序詳解

    這篇文章主要來和大家分享一個Python中的實用秘技,那就是如何快速優(yōu)化導(dǎo)包順序,文中的示例代碼簡潔易懂,快跟隨小編一起學(xué)習(xí)起來吧
    2023-06-06
  • Python queue模塊攻略全解

    Python queue模塊攻略全解

    這篇文章主要為大家介紹了Python queue模塊攻略全解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評論