Models¶
-
class
mindsdb_sdk.models.
Model
(project, data)¶ Bases:
object
Versions
List model versions
>>> model.list_versions()
Get info
>>> print(model.get_status()) >>> print(model.data)
Update model data from server
>>> model.refresh()
Usng model
Dataframe on input
>>> result_df = model.predict(df_rental) >>> result_df = model.predict(df_rental, params={'a': 'q'})
Dict on input
>>> result_df = model.predict({'n_rooms': 2})
Deferred query on input
>>> result_df = model.predict(query, params={'': ''})
Time series prediction
>>> query = database.query('select * from table1 where type="house" and saledate>latest') >>> model.predict(query)
The join model with table in raw query
>>> result_df = project.query(''' ... SELECT m.saledate as date, m.ma as forecast ... FROM mindsdb.house_sales_model as m ... JOIN example_db.demo_data.house_sales as t ... WHERE t.saledate > LATEST AND t.type = 'house' ... AND t.bedrooms=2 ... LIMIT 4; ...''').fetch()
Model managing
Fine-tuning
>>> model.finetune(query) >>> model.finetune('select * from demo_data.house_sales', database='example_db') >>> model.finetune(query, params={'x': 2})
Retraining
>>> model.retrain(query) >>> model.retrain('select * from demo_data.house_sales', database='example_db') >>> model.retrain(query, params={'x': 2})
Describe
>>> df_info = model.describe() >>> df_info = model.describe('features')
Change active version
>>> model.set_active(version=3)
-
describe
(type: Optional[str] = None) → Union[pandas.core.frame.DataFrame, mindsdb_sdk.query.Query]¶ Return description of the model
- Parameters
type – describe type (for lightwood is models, ensemble, features), optional
- Returns
dataframe with result of description
-
drop_version
(num: int) → mindsdb_sdk.models.ModelVersion¶ Drop version of the model
>>> models.rentals_model.drop_version(version=10)
- Parameters
num – version to drop
-
finetune
(query: Union[str, mindsdb_sdk.query.Query, None] = None, database: Optional[str] = None, options: Optional[dict] = None, engine: Optional[str] = None) → Union[mindsdb_sdk.models.Model, mindsdb_sdk.models.ModelVersion]¶ Call finetune of the model
- Parameters
query – sql string or Query object to get data for fine-tuning, optional
database – database to get data for fine-tuning, optional
options – parameters for fine-tuning model, optional
engine – ml engine, optional
- Returns
Model object
-
get_status
() → str¶ Refresh model data and return status of model
- Returns
model status
-
get_version
(num: int) → mindsdb_sdk.models.ModelVersion¶ Get model version by number
- Parameters
num – version number
- Returns
ModelVersion object
-
list_versions
() → List[mindsdb_sdk.models.ModelVersion]¶ Show list of model versions
- Returns
list ModelVersion objects
-
predict
(data: Union[pandas.core.frame.DataFrame, mindsdb_sdk.query.Query, dict], params: Optional[dict] = None) → Union[pandas.core.frame.DataFrame, mindsdb_sdk.query.Query]¶ Make prediction using model
- if data is dataframe
it uses /model/predict http method and sends dataframe over it
- if data is select query with one table
it replaces table to jon table and predictor and sends query over sql/query http method
- if data is select from join other complex query it modifies query to:
‘select from (input query) join model’ and sends it over sql/query http method
- Parameters
data – dataframe or Query object as input to predictor
params – parameters for predictor, optional
- Returns
dataframe with result of prediction
-
refresh
()¶ Refresh model data from mindsdb server Model data can be changed during training process
- Returns
model data
-
retrain
(query: Union[str, mindsdb_sdk.query.Query, None] = None, database: Optional[str] = None, options: Optional[dict] = None, engine: Optional[str] = None) → Union[mindsdb_sdk.models.Model, mindsdb_sdk.models.ModelVersion]¶ Call retrain of the model
- Parameters
query – sql string or Query object to get data for retraining, optional
database – database to get data for retraining, optional
options – parameters for retraining model, optional
engine – ml engine, optional
- Returns
Model object
-
set_active
(version: int)¶ Change model active version
- Parameters
version – version to set active
-
wait_complete
()¶
-
-
class
mindsdb_sdk.models.
ModelVersion
(project, data)¶ Bases:
mindsdb_sdk.models.Model
-
class
mindsdb_sdk.models.
Models
(project, api)¶ Bases:
mindsdb_sdk.utils.objects_collection.CollectionBase
Models
Get:
>>> all_models = models.list() >>> model = all_models[0]
Get version:
>>> all_models = models.list(with_versions=True) >>> model = all_models[0]
By name:
>>> model = models.get('model1') >>> model = models.get('model1', version=2)
-
create
(name: str, predict: Optional[str] = None, engine: Union[str, mindsdb_sdk.ml_engines.MLEngine, None] = None, query: Union[str, mindsdb_sdk.query.Query, None] = None, database: Optional[str] = None, options: Optional[dict] = None, timeseries_options: Optional[dict] = None, **kwargs) → Union[mindsdb_sdk.models.Model, mindsdb_sdk.query.Query]¶ Create new model in project and return it
If query/database is passed, it will be executed on mindsdb side
Create, using params and qeury as string
>>> model = models.create( ... 'rentals_model', ... predict='price', ... engine='lightwood', ... database='example_db', ... query='select * from table', ... options={ ... 'module': 'LightGBM' ... }, ... timeseries_options={ ... 'order': 'date', ... 'group': ['a', 'b'] ... } ...)
Create, using deferred query. ‘query’ will be executed and converted to dataframe on mindsdb backend.
>>> query = databases.db.query('select * from table') >>> model = models.create( ... 'rentals_model', ... predict='price', ... query=query, ...)
- Parameters
name – name of the model
predict – prediction target
engine – ml engine for new model, default is mindsdb
query – sql string or Query object to get data for training of model, optional
database – database to get data for training, optional
options – parameters for model, optional
timeseries_options – parameters for forecasting model
- Returns
created Model object, it can be still in training state
-
drop
(name: str)¶ Drop model from project with all versions
>>> models.drop('rentals_model')
- Parameters
name – name of the model
-
get
(name: str, version: Optional[int] = None) → Union[mindsdb_sdk.models.Model, mindsdb_sdk.models.ModelVersion]¶ Get model by name from project
if version is passed it returns ModelVersion object with specific version
- Parameters
name – name of the model
version – version of model, optional
- Returns
Model or ModelVersion object
-
list
(with_versions: bool = False, name: Optional[str] = None, version: Optional[int] = None) → List[Union[mindsdb_sdk.models.Model, mindsdb_sdk.models.ModelVersion]]¶ List models (or model versions) in project
- If with_versions = True
it shows all models with version (executes ‘select * from models_versions’)
Otherwise it shows only models (executes ‘select * from models’)
- Parameters
with_versions – show model versions
name – to show models or versions only with selected name, optional
version – to show model or versions only with selected version, optional
- Returns
list of Model or ModelVersion objects
-