[
https://issues.apache.org/jira/browse/SPARK-2495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14063762#comment-14063762
]
Alexander Albul commented on SPARK-2495:
----------------------------------------
Yes, i can work on it, but first i need to understand what is the reason of
making constructors *private*.
I can propose approach with some utility object that we can use to create
different models:
ModelLoader.loadLogisticRegression(weights: Vector, intercept: Double):
LogisticRegressionModel
alternatively, we can put method "load" into *LogisticRegressionWithSGD* for
example, but i do not like this approach because we can load models that are
trained without SGD as well so it is not directly related.
But first of all, if they are private by mistake, we can just open
constructors. WDYT?
> Ability to re-create ML models
> ------------------------------
>
> Key: SPARK-2495
> URL: https://issues.apache.org/jira/browse/SPARK-2495
> Project: Spark
> Issue Type: Improvement
> Components: MLlib
> Affects Versions: 1.0.1
> Reporter: Alexander Albul
>
> Hi everyone.
> Previously (prior to Spark 1.0) we was working with MLib like this:
> 1) Calculate model (costly operation)
> 2) Take model and collect it's fields like weights, intercept e.t.c.
> 3) Store model somewhere in our format
> 4) Do predictions by loading model attributes, creating new model and
> predicting using it.
> Now i see that model's constructors have *private* modifier and cannot be
> created from outside.
> If you want to hide implementation details and keep this constructor as
> "developer api", why not to create at least method, which will take weights,
> intercept (for example) an materialize that model?
> A good example of model that i am talking about is: *LinearRegressionModel*
> I know that *LinearRegressionWithSGD* class have *createModel* method but the
> problem is that it have *protected* modifier as well.
--
This message was sent by Atlassian JIRA
(v6.2#6252)