huaxingao opened a new pull request #25776: [SPARK-28985][PYTHON][ML] Add 
common classes 
(JavaPredictor/JavaClassificationModel/JavaProbabilisticClassifier) in PYTHON
URL: https://github.com/apache/spark/pull/25776
 
 
   ### What changes were proposed in this pull request?
   
   Add some common classes in Python to make it have the same structure as Scala
   
   1. Scala has ClassifierParams/Classifier/ClassificationModel: 
   
   ```
   trait ClassifierParams
       extends PredictorParams with HasRawPredictionCol
   
   abstract class Classifier 
       extends Predictor with ClassifierParams {
       def setRawPredictionCol
   }
   
   abstract class ClassificationModel
     extends PredictionModel with ClassifierParams {
       def setRawPredictionCol
   }
   
   ```
   This PR makes Python has the following:
   
   ```
   class JavaClassifierParams(HasRawPredictionCol, JavaPredictorParams):
       pass
   
   class JavaClassifier(JavaPredictor, JavaClassifierParams):
       def setRawPredictionCol
   
   class JavaClassificationModel(JavaPredictionModel, JavaClassifierParams):
       def setRawPredictionCol
   ```
   2. Scala has 
ProbabilisticClassifierParams/ProbabilisticClassifier/ProbabilisticClassificationModel:
 
   ```
   trait ProbabilisticClassifierParams
       extends ClassifierParams with HasProbabilityCol with HasThresholds
   
   abstract class ProbabilisticClassifier
       extends Classifier with ProbabilisticClassifierParams {
       def setProbabilityCol
       def setThresholds
   }
   
   abstract class ProbabilisticClassificationModel
       extends ClassificationModel with ProbabilisticClassifierParams {
       def setProbabilityCol
       def setThresholds
   }
   ```
   This PR makes Python have the following:
   ```
   class JavaProbabilisticClassifierParams(HasProbabilityCol, HasThresholds, 
JavaClassifierParams):
       pass
   
   class JavaProbabilisticClassifier(JavaClassifier, 
JavaProbabilisticClassifierParams):
       def setProbabilityCol
       def setThresholds
   
   class JavaProbabilisticClassificationModel(JavaClassificationModel, 
JavaProbabilisticClassifierParams):
       def setProbabilityCol
       def setThresholds
   ```
   3. Scala has PredictorParams/Predictor/PredictionModel: 
   ```
   trait PredictorParams extends Params
       with HasLabelCol with HasFeaturesCol with HasPredictionCol
   
   abstract class Predictor
       extends Estimator with PredictorParams {
       def setLabelCol
       def setFeaturesCol
       def setPredictionCol
     }
   
   abstract class PredictionModel
       extends Model with PredictorParams {
       def setFeaturesCol
       def setPredictionCol
       def numFeatures
       def predict
   }
   ```
   This PR makes Python have the following:
   ```
   class JavaPredictorParams(HasLabelCol, HasFeaturesCol, HasPredictionCol):
       pass
   
   class JavaPredictor(JavaEstimator, JavaPredictorParams):
       def setLabelCol
       def setFeaturesCol
       def setPredictionCol
   
   class JavaPredictionModel(JavaModel, JavaPredictorParams):
       def setFeaturesCol
       def setPredictionCol
       def numFeatures
       def predict
   ```
   
   ### Why are the changes needed?
   Have parity between Python and Scala ML
   
   
   ### Does this PR introduce any user-facing change?
   Yes. Add the following changes:
   
   ```
   LinearSVCModel
   
   - get/setFeatureCol
   - get/setPredictionCol
   - get/setLabelCol
   - get/setRawPredictionCol
   - predict
   ```
   
   ```
   LogisticRegressionModel
   DecisionTreeClassificationModel
   RandomForestClassificationModel
   GBTClassificationModel
   NaiveBayesModel
   MultilayerPerceptronClassificationModel
   
   - get/setFeatureCol
   - get/setPredictionCol
   - get/setLabelCol
   - get/setRawPredictionCol
   - get/setProbabilityCol
   - predict
   ```
   ```
   LinearRegressionModel
   IsotonicRegressionModel
   DecisionTreeRegressionModel
   RandomForestRegressionModel
   GBTRegressionModel
   AFTSurvivalRegressionModel
   GeneralizedLinearRegressionModel
   
   - get/setFeatureCol
   - get/setPredictionCol
   - get/setLabelCol
   - predict
   ```
   
   
   ### How was this patch tested?
   Add a few doc tests. 
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to