我在這里發現了很多關于從擬合的 CrossValidator 對象中提取最佳模型參數的問題,但我還沒有發現有關此特定錯誤的任何信息。我正在嘗試創建一個 CrossValidator 對象并將其適合我的訓練數據,然后根據我的初始線性回歸模型評估指標。我的數據集已被消化為適當的格式,并分為訓練集和測試集,并成功應用于第一個線性回歸模型。第一次嘗試交叉驗證,我不知何故搞砸了,因為最后一行代碼返回“ IllegalArgumentException:標簽不存在??捎茫篜E,功能,CrossValidator_3fda633cd32d_rand,預測”,其中“PE”是我的標簽Col.from pyspark.ml.regression import LinearRegression from pyspark.ml.evaluation import RegressionEvaluatorfrom pyspark.ml.tuning import CrossValidator, ParamGridBuilderlrCV = LinearRegression(featuresCol='features', labelCol='PE', maxIter=50)#Creating a grid of parameter values that the cross-validation will useparamGrid = ParamGridBuilder() \ .addGrid(lrCV.regParam, [1, 0.1, 0.01]) \ .addGrid(lrCV.elasticNetParam, [0.0, 0.5, 1.0, 2]) \ .addGrid(lrCV.fitIntercept, [True, False]) \ .build()#Create an instance of the CrossValidator object and enter our predefined parameterscrossVal = CrossValidator(estimator=lrCV, estimatorParamMaps=paramGrid, evaluator=RegressionEvaluator(), numFolds=5)lrModelCV = crossVal.fit(train)有人有什么建議嗎?我猜這是我忽略的非常簡單的事情,但我一生都無法找到它是什么。提前致謝。
1 回答

慕婉清6462132
TA貢獻1804條經驗 獲得超2個贊
默認情況下,CrossValidation 期望輸出標簽被命名label
您可以在開始時創建輸出列
label
以避免所有混亂
或者
你也可以傳遞
labelCol='PE'
給RegressionEvaluator()
RegressionEvaluator(labelCol='PE')
- 1 回答
- 0 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消