Enable exporting trained models to text files to be able to import later

### Describe the workflow you want to enable

```python
from sklearn.datasets import fetch_california_housing
from sklearn.ensemble import RandomForestRegressor

# make data
X,y = fetch_california_housing(return_X_y=True)

# instantiate Random-Forest and fit it
rf_model = RandomForestRegressor(min_samples_leaf=5, random_state=0, n_jobs=-1)
rf_model.fit(X, y)

# export model to a text file, inspired by https://xgboost.readthedocs.io/en/release_3.0.0/python/python_api.html#xgboost.XGBRegressor.save_model
rf_model.save_model("model.json")


#################### in a new python environment
from sklearn.ensemble import RandomForestRegressor
rf_model2 = RandomForestRegressor(min_samples_leaf=5, random_state=0, n_jobs=-1)
rf_model2.load_model("model.json")
```

### Describe your proposed solution

The current recommended way I believe is to export fit (or trained) models is to serialize them using joblib, which depends on python version, joblib version and scikit-learn version too, and I presume this may lead to issues with OS and CPU architecture as well (windows or  GNU Linux and x86 or ARM64).

So, I request a way to export model's trained weights (or other relevant things like bins & trees for RandomForestRegressor) for it be to loaded from any scikit-learn version or python version or operating system. This is just how the big packages like [xgboost](https://xgboost.readthedocs.io/en/release_3.0.0/python/python_api.html#xgboost.XGBRegressor.save_model) and pytorch ([using `state_dict`](https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module.load_state_dict)) and hence transformers,  handle things. 

This would enable to change environments and platforms easily without having to train model for the new package-versions, architecture and OS again or every time an update in them is required.

### Describe alternatives you've considered, if relevant

There is no alternative to everything that scikit-learn offers as of now.

### Additional context

This has been provied above.

COMMENT:
That's great input @stdkoehler . As @ogrisel mentioned, this requires a significant amount of work, since we have more than 200 estimators. When you look at some packages such as xgboost where they have a cross-version persistence, it's mostly because maintaining that for one model is a much more achievable task.

When loading a scikit-learn model, in effect, you're importing every object which is required to run that model, including our internals, and our internals do change quite a bit due to our development.

We've experimented with moving persisted objects in older sklearn to new sklearn versions with skops format, and it seems quite doable, but it would require funding for us to continue that path.

We're also happy to be more engaged with the ONNX conversion, but that also requires funding.

I understand you challenges, but we're trying to do what we can with the people we have in the team, and even though your issue is not unique to you, it's not what affects a vast majority of our users and it only affects specific corporate settings / deployment scenarios.

I know @ddxb and @francoisgoupil are working on solutions where you could get the support you need.

Labels: New Feature, Needs Decision - Include Feature