取消
顯示的結果
而不是尋找
你的意思是:

PYSPARK——不能DecisionTreeClassifier每次運行

Alison7759
新的因素

你好,社區,

這是我第一次來這裏,我有一個貧窮的英語抱歉的錯誤:winking_face:

我想做一個決策樹在pyspark訓練數據(當時我想評估它在測試數據)。我的目標是一個變量2值(“1”,“2”)。

首先,我對我的目標使用字符串索引器。

然後為每個分類列,我使用字符串索引器和onehotencoder

為定量列,然後我就把它們轉換VectorAssembler分類列。

後,我創建我的管道(適合它在我的完整的數據庫,然後將其轉換)。

這些步驟之後,我做一個隨機分割(培訓:70%,測試30%)和我在培訓和使用DecisionTreeClassifier我評估模型的測試數據。

但是:我不知道為什麼,有時工作,有時不喜歡。很隨機,我想不出來。

這是我的日誌錯誤:

org.apache.spark。SparkException:工作階段失敗而終止:任務13階段6389.0失敗了4次,最近的失敗:在舞台上失去了任務13.3 6389.0 (TID 85481)(10.0.3.8執行人12):org.apache.spark。SparkException:未能執行用戶定義函數(StringIndexerModelλ1837/1490332726:美元美元(字符串)=比;雙)

它是一樣的我的模型的優化……

提前感謝您的幫助! ! !祝你有美好的一天:slightly_smiling_face:

這是我的代碼:

#我的變量:categoricalColumns = [“var1”、“var2”] numericCols = (“var3”、“var4”) #我的目標:階段= []label_stringIdx = StringIndexer (inputCol =“目標”,outputCol =“標簽”)階段+ = [label_stringIdx] #分類列:在categoricalColumns categoricalCol: StringIndexer = StringIndexer (inputCol = categoricalCol outputCol = categoricalCol + _Index)編碼器= OneHotEncoder (inputCol = categoricalCol +“_Index outputCol = categoricalCol + _classVec)階段+ = (StringIndexer,編碼器)#添加定量列:assemblerInputs = [c + c“_classVec”categoricalColumns) + numericCols #彙編:彙編= VectorAssembler (inputCols = assemblerInputs outputCol =“特性”)階段+ = =(彙編)#管道管道管道().setStages(階段)pipeline_Fited = pipeline.fit (my_database) my_database_transf = pipeline_Fited.transform (my_database)關口= my_database。列selectedcols =(“標簽”,“特性”)+關口final_dataset = my_database_transf.select (selectedcols) #隨機分割訓練和測試數據(trainingData testingData) = final_dataset.randomSplit([0.7, 0.3],種子= 100)#建築上的決策樹訓練dt = DecisionTreeClassifier (labelCol =“標簽”,featuresCol =“特性”,雜質=“基尼”,maxDepth = 4) dtModel = dt.fit (trainingData) #有時候我這裏的問題(但不是每次)#評估模型對測試數據:predict_test = dtModel.transform (testingData) dtevaluator = BinaryClassificationEvaluator (rawPredictionCol =“rawPrediction”) #默認metricName =“areaUnderROC”# evaluatorAUC.evaluate (dtModel) evaluatorAUC.evaluate (predict_test) #有時候我這裏的問題(但不是每次)打印(精度:,dtevaluator.evaluate (predict_test))打印(AUC:, BinaryClassificationMetrics (predict_test[‘標簽’,‘預測’].rdd) .areaUnderROC) #調優#為交叉驗證創建ParamGrid dtparamGrid = (ParamGridBuilder () \ .addGrid (dt。maxDepth (2、3、5)) \ .addGrid (dt。maxBins, 4、5、6、7、8]) \ .build()) #評估模型dtevaluator = BinaryClassificationEvaluator (rawPredictionCol =“rawPrediction”) #創建5倍CrossValidator dtcv = CrossValidator(估計量= dt, estimatorParamMaps = dtparamGrid,評估者= dtevaluator numFolds = 5) #運行交叉驗證cv_dtModel = dtcv.fit (trainingData) #有時候我這裏的問題(但不是每次)#預測predict_train = cv_dtModel.transform (trainingData) predict_test = cv_dtModel.transform (testingData) #評估模型evaluatorAUC = BinaryClassificationEvaluator() #默認metricName =“areaUnderROC”evaluatorACC = MulticlassClassificationEvaluator (metricName =“準確性”)Best_DT_AUC = evaluatorAUC.evaluate (predict_train) #我這裏總是有問題Best_DT_ACC = evaluatorACC.evaluate (predict_test) #我總是有問題

一個

0回答0
歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map