43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from sklearn.datasets import load_iris
|
|
from sklearn.linear_model import LogisticRegression
|
|
from sklearn.model_selection import train_test_split
|
|
|
|
import mlflow
|
|
from mlflow.models import infer_signature
|
|
|
|
X, y = load_iris(return_X_y=True, as_frame=True)
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
|
|
X_test_1, X_test_2, y_test_1, y_test_2 = train_test_split(
|
|
X_test, y_test, test_size=0.5, random_state=42
|
|
)
|
|
model = LogisticRegression().fit(X_train, y_train)
|
|
|
|
predictions = model.predict(X_train)
|
|
signature = infer_signature(X_train, predictions)
|
|
|
|
with mlflow.start_run() as run:
|
|
model_info = mlflow.sklearn.log_model(model, name="model", signature=signature)
|
|
print(model_info.name)
|
|
|
|
# Evaluate the model URI
|
|
mlflow.evaluate(
|
|
model_info.model_uri,
|
|
X_test_1.assign(label=y_test_1),
|
|
targets="label",
|
|
model_type="classifier",
|
|
evaluators=["default"],
|
|
)
|
|
print(mlflow.get_logged_model(model_info.model_id))
|
|
|
|
# Evaluate the pyfunc model object
|
|
model = mlflow.pyfunc.load_model(model_info.model_uri)
|
|
assert model.model_id is not None
|
|
mlflow.evaluate(
|
|
model,
|
|
X_test_2.assign(label=y_test_2),
|
|
targets="label",
|
|
model_type="classifier",
|
|
evaluators=["default"],
|
|
)
|
|
print(mlflow.get_logged_model(model_info.model_id))
|