Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
ModelRepository
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eFlows4HPC WP2
ModelRepository
Commits
714c6479
Commit
714c6479
authored
2 years ago
by
Jedrzej Rybicki
Browse files
Options
Downloads
Patches
Plain Diff
wi
parent
1f841697
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
notebooks/simplest.ipynb
+79
-19
79 additions, 19 deletions
notebooks/simplest.ipynb
with
79 additions
and
19 deletions
notebooks/simplest.ipynb
+
79
−
19
View file @
714c6479
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count":
24
,
"execution_count":
1
,
"id": "9888d9d2",
"metadata": {},
"outputs": [],
...
...
@@ -13,12 +13,15 @@
"import mlflow\n",
"import mlflow.sklearn\n",
"\n",
"import matplotlib.pyplot as plt"
"import matplotlib.pyplot as plt\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "code",
"execution_count":
4
,
"execution_count":
2
,
"id": "80b8d728",
"metadata": {},
"outputs": [],
...
...
@@ -28,7 +31,17 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 3,
"id": "f1d93fa1",
"metadata": {},
"outputs": [],
"source": [
"#mlflow.set_tracking_uri('http://0.0.0.0:8080')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "be2d99b3",
"metadata": {},
"outputs": [
...
...
@@ -36,27 +49,27 @@
"name": "stderr",
"output_type": "stream",
"text": [
"202
2/11
/1
6
0
9:58:15
INFO mlflow.tracking.fluent: Experiment with name 'mysimple' does not exist. Creating a new experiment.\n"
"202
3/03
/1
0
0
8:12:09
INFO mlflow.tracking.fluent: Experiment with name 'mysimple
-newest
' does not exist. Creating a new experiment.\n"
]
},
{
"data": {
"text/plain": [
"<Experiment: artifact_location='mlflow-artifacts:/
1
', creation_time=16
68589095429
, experiment_id='
1
', last_update_time=16
68589095429
, lifecycle_stage='active', name='mysimple', tags={}>"
"<Experiment: artifact_location='mlflow-artifacts:/
3
', creation_time=16
78432329268
, experiment_id='
3
', last_update_time=16
78432329268
, lifecycle_stage='active', name='mysimple
-newest
', tags={}>"
]
},
"execution_count":
7
,
"execution_count":
4
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mlflow.set_experiment('mysimple')"
"mlflow.set_experiment('mysimple
-newest
')"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
5
,
"id": "d9601ea6",
"metadata": {},
"outputs": [],
...
...
@@ -67,7 +80,17 @@
},
{
"cell_type": "code",
"execution_count": 22,
"execution_count": 6,
"id": "afa87aec",
"metadata": {},
"outputs": [],
"source": [
"mlflow.end_run()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e59e2ae7",
"metadata": {},
"outputs": [
...
...
@@ -93,13 +116,14 @@
" lr.fit(X, y)\n",
" score = lr.score(X, y)\n",
" print(f\"{C} score: {score}\")\n",
" \n",
" mlflow.log_metric(\"score\", score)\n",
" mlflow.sklearn.log_model(lr, \"model\")"
]
},
{
"cell_type": "code",
"execution_count":
29
,
"execution_count":
8
,
"id": "657d86bc",
"metadata": {},
"outputs": [],
...
...
@@ -109,13 +133,13 @@
},
{
"cell_type": "code",
"execution_count":
61
,
"execution_count":
9
,
"id": "2f5b27cd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAHPCAYAAACGBgTAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLj
U
uM
y
wgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy
/NK7nS
AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9dUlEQVR4nO3deXxU9b3/8fdkD5BMICELEEIQWSSgEgoEibJo2K9U29LaC9jiQq9KkdZb0bYu7X2gXVwpWFsK9SGl/Crg5UpEUmVTlgINsiNCNAESQgIkgUCWyfn9MZmRmIVMksnMmXk9H495tHNyzszn8H3MzNvzOd9zLIZhGAIAAIDbBHi6AAAAAF9H4AIAAHAzAhcAAICbEbgAAADcLMjTBQAA4I9sNpuqqqo8XQbaSHBwsAIDAxv9O4ELAIB2ZBiGCgoKdPHiRU+XgjYWFRWl+Ph4WSyWen8jcAEA0I4cYSs2NlYdOnRo8McZ5mIYhsrLy1VYWChJSkhIqLcOgQsAgHZis9mcYSs6OtrT5aANhYeHS5IKCwsVGxtbr73ISfMAALQTxzlbHTp08HAlcAfHuDZ0bh6BCwCAdkYb0Tc1Na4ELgAAADcjcAEAALgZgQsAALTI6NGjNW/ePE+XYQoELgAAzMhmkzZvllautP+vzebpipq0efNmWSwWv73+GJeFAADAbNaskX78Y+nUqa+W9eghvfqqdM89nqsLjeIIFwAAZrJmjfStb9UNW5J0+rR9+Zo1bnnby5cva+bMmerUqZMSEhL0+9//vs7f3377bQ0dOlQRERGKj4/Xfffd57wQ6BdffKExY8ZIkjp37iyLxaL7779fkrRhwwaNGjVKUVFRio6O1pQpU3TixAm37IMnEbgAADALm81+ZMsw6v/NsWzePLe0F5944glt2rRJa9eu1caNG7V582bt3bvX+ffKykr96le/0qeffqp3331XOTk5zlCVmJio1atXS5KOHTum/Px8vfrqq5LsQW7+/PnavXu3PvzwQwUEBOib3/ymampq2nwfPImWIgAAZrFtW/0jW9cyDCkvz77e6NFt9raXLl3S0qVL9dZbb+muu+6SJP31r39Vjx49nOv88Ic/dP7/3r1767XXXtOwYcN06dIlderUSV26dJEkxcbGKioqyrnuvffeW+e9li5dqtjYWB0+fFgpKSlttg+exhEuAADMIj+/bddrphMnTqiyslJpaWnOZV26dFG/fv2cz7Ozs3X33XcrKSlJERERGl0b+HJzc6/72vfdd5969+6tyMhIJScnN2s7syFwAQBgFg3cFLlV6zWT0VAL8xqXL19WRkaGOnXqpLffflu7d+/W2rVrJdlbjU2ZOnWqiouL9ac//Um7du3Srl27mrWd2RC4AAAwi/R0+2zExm4hY7FIiYn29dpQnz59FBwcrJ07dzqXXbhwQZ999pkk6ejRoyoqKtILL7yg9PR09e/f33nCvENISIgk+w28HYqLi3XkyBH9/Oc/17hx4zRgwABduHChTWv3FgQuAADMIjDQfukHqX7ocjx/5RX7em2oU6dOmj17tp544gl9+OGHOnjwoO6//34FBNhjRM+ePRUSEqLXX39dJ0+e1Lp16/SrX/2qzmskJSXJYrHovffe07lz53Tp0iV17txZ0dHRevPNN/X555/ro48+0vz589u0dm9B4AIAwEzuuUd65x2pe/e6y3v0sC9303W4fvvb3+r222/Xf/zHf+jOO+/UqFGjlJqaKknq2rWrli9frn/84x+66aab9MILL+h3v/tdne27d++u5557Tk8++aTi4uL06KOPKiAgQH//+9+1d+9epaSk6PHHH9dvf/tbt9TvaRbjeo1ZAADQJq5evaqcnBwlJycrLCysdS9ms9lnI+bn28/ZSk9v8yNbcE1T48tlIQAAMKPAwDa99APci5YiAACAmxG4AAAA3IzABQAA4GYELgAAADcjcAEAALgZgQsAAMDNCFwAAABuRuACAABepVevXnrllVeczy0Wi959991WvWZbvEZrcOFTAADg1fLz89W5c+dmrfvss8/q3Xff1b59+1r8Gu5A4AIAAG2usrJSISEhbfJa8fHxXvEarUFLEQAAXNfo0aP16KOP6tFHH1VUVJSio6P185//XI5bMvfq1Uu//vWvdf/998tqterBBx+UJG3fvl233367wsPDlZiYqLlz5+ry5cvO1y0sLNTUqVMVHh6u5ORkrVixot57f70deOrUKX33u99Vly5d1LFjRw0dOlS7du3S8uXL9dxzz+nTTz+VxWKRxWLR8uXLG3yNAwcOaOzYsQoPD1d0dLQeeughXbp0yfn3+++/X9OmTdPvfvc7JSQkKDo6Wo888oiqqqpa9O/HES4AADzIMAxdqbK1+/uGBwfKYrG4tM1f//pXzZ49W7t27dKePXv00EMPKSkpyRmufvvb3+oXv/iFfv7zn0uyh5rx48frV7/6lZYuXapz5845Q9uyZcsk2YNNXl6ePvroI4WEhGju3LkqLCxstIZLly7pjjvuUPfu3bVu3TrFx8fr3//+t2pqajR9+nQdPHhQGzZs0D//+U9JktVqrfca5eXlmjBhgkaMGKHdu3ersLBQDzzwgB599FFnQJOkTZs2KSEhQZs2bdLnn3+u6dOn65ZbbnHurysIXAAAeNCVKptu+uUH7f6+h58frw4hrsWAxMREvfzyy7JYLOrXr58OHDigl19+2RlAxo4dq5/+9KfO9WfOnKn77rtP8+bNkyTdeOONeu2113THHXdoyZIlys3N1fvvv6+dO3dq+PDhkqSlS5dqwIABjdbwt7/9TefOndPu3bvVpUsXSVKfPn2cf+/UqZOCgoKabCGuWLFCV65c0VtvvaWOHTtKkhYtWqSpU6fqxRdfVFxcnCSpc+fOWrRokQIDA9W/f39NnjxZH374YYsCFy1FAADQLCNGjKhzVCwtLU3Hjx+XzWY/Qjd06NA66+/du1fLly9Xp06dnI/x48erpqZGOTk5OnLkiIKCgups179/f0VFRTVaw759+3Trrbc6w1ZLHDlyRDfffLMzbEnSbbfdppqaGh07dsy5bODAgQoMDHQ+T0hIaPLoW1M4wgUAgAeFBwfq8PPjPfK+be3aACNJNTU1evjhhzV37tx66/bs2dMZblxpbYaHh7euSNnbuI2957XLg4OD6/2tpqamRe9J4AIAwIMsFovLrT1P2blzZ73nN954Y52jQNcaMmSIDh06VKfld60BAwaourpae/bs0bBhwyRJx44d08WLFxutYfDgwfrzn/+s8+fPN3iUKyQkxHnErTE33XST/vrXv+ry5cvOkPjJJ58oICBAffv2bXLblqKlCAAAmiUvL0/z58/XsWPHtHLlSr3++uv68Y9/3Oj6P/vZz7Rjxw498sgj2rdvn44fP65169bpsccekyT169dPEyZM0IMPPqhdu3Zp7969euCBB5o8ivW9731P8fHxmjZtmj755BOdPHlSq1ev1o4dOyTZZ0vm5ORo3759KioqUkVFRb3X+P73v6+wsDDNmjVLBw8e1KZNm/TYY49pxowZzvO32hqBCwAANMvMmTN15coVDRs2TI888ogee+wxPfTQQ42uP3jwYG3ZskXHjx9Xenq6br31Vv3iF79QQkKCc51ly5YpMTFRd9xxh+655x499NBDio2NbfQ1Q0JCtHHjRsXGxmrSpEkaNGiQXnjhBedRtnvvvVcTJkzQmDFj1LVrV61cubLe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\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAHPCAYAAACGBgTAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLj
c
uM
C
wgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy
88F64Q
AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9dUlEQVR4nO3deXxU9b3/8fdkD5BMICELEEIQWSSgEgoEibJo2K9U29LaC9jiQq9KkdZb0bYu7X2gXVwpWFsK9SGl/Crg5UpEUmVTlgINsiNCNAESQgIkgUCWyfn9MZmRmIVMksnMmXk9H495tHNyzszn8H3MzNvzOd9zLIZhGAIAAIDbBHi6AAAAAF9H4AIAAHAzAhcAAICbEbgAAADcLMjTBQAA4I9sNpuqqqo8XQbaSHBwsAIDAxv9O4ELAIB2ZBiGCgoKdPHiRU+XgjYWFRWl+Ph4WSyWen8jcAEA0I4cYSs2NlYdOnRo8McZ5mIYhsrLy1VYWChJSkhIqLcOgQsAgHZis9mcYSs6OtrT5aANhYeHS5IKCwsVGxtbr73ISfMAALQTxzlbHTp08HAlcAfHuDZ0bh6BCwCAdkYb0Tc1Na4ELgAAADcjcAEAALgZgQsAALTI6NGjNW/ePE+XYQoELgAAzMhmkzZvllautP+vzebpipq0efNmWSwWv73+GJeFAADAbNaskX78Y+nUqa+W9eghvfqqdM89nqsLjeIIFwAAZrJmjfStb9UNW5J0+rR9+Zo1bnnby5cva+bMmerUqZMSEhL0+9//vs7f3377bQ0dOlQRERGKj4/Xfffd57wQ6BdffKExY8ZIkjp37iyLxaL7779fkrRhwwaNGjVKUVFRio6O1pQpU3TixAm37IMnEbgAADALm81+ZMsw6v/NsWzePLe0F5944glt2rRJa9eu1caNG7V582bt3bvX+ffKykr96le/0qeffqp3331XOTk5zlCVmJio1atXS5KOHTum/Px8vfrqq5LsQW7+/PnavXu3PvzwQwUEBOib3/ymampq2nwfPImWIgAAZrFtW/0jW9cyDCkvz77e6NFt9raXLl3S0qVL9dZbb+muu+6SJP31r39Vjx49nOv88Ic/dP7/3r1767XXXtOwYcN06dIlderUSV26dJEkxcbGKioqyrnuvffeW+e9li5dqtjYWB0+fFgpKSlttg+exhEuAADMIj+/bddrphMnTqiyslJpaWnOZV26dFG/fv2cz7Ozs3X33XcrKSlJERERGl0b+HJzc6/72vfdd5969+6tyMhIJScnN2s7syFwAQBgFg3cFLlV6zWT0VAL8xqXL19WRkaGOnXqpLffflu7d+/W2rVrJdlbjU2ZOnWqiouL9ac//Um7du3Srl27mrWd2RC4AAAwi/R0+2zExm4hY7FIiYn29dpQnz59FBwcrJ07dzqXXbhwQZ999pkk6ejRoyoqKtILL7yg9PR09e/f33nCvENISIgk+w28HYqLi3XkyBH9/Oc/17hx4zRgwABduHChTWv3FgQuAADMIjDQfukHqX7ocjx/5RX7em2oU6dOmj17tp544gl9+OGHOnjwoO6//34FBNhjRM+ePRUSEqLXX39dJ0+e1Lp16/SrX/2qzmskJSXJYrHovffe07lz53Tp0iV17txZ0dHRevPNN/X555/ro48+0vz589u0dm9B4AIAwEzuuUd65x2pe/e6y3v0sC9303W4fvvb3+r222/Xf/zHf+jOO+/UqFGjlJqaKknq2rWrli9frn/84x+66aab9MILL+h3v/tdne27d++u5557Tk8++aTi4uL06KOPKiAgQH//+9+1d+9epaSk6PHHH9dvf/tbt9TvaRbjeo1ZAADQJq5evaqcnBwlJycrLCysdS9ms9lnI+bn28/ZSk9v8yNbcE1T48tlIQAAMKPAwDa99APci5YiAACAmxG4AAAA3IzABQAA4GYELgAAADcjcAEAALgZgQsAAMDNCFwAAABuRuACAABepVevXnrllVeczy0Wi959991WvWZbvEZrcOFTAADg1fLz89W5c+dmrfvss8/q3Xff1b59+1r8Gu5A4AIAAG2usrJSISEhbfJa8fHxXvEarUFLEQAAXNfo0aP16KOP6tFHH1VUVJSio6P185//XI5bMvfq1Uu//vWvdf/998tqterBBx+UJG3fvl233367wsPDlZiYqLlz5+ry5cvO1y0sLNTUqVMVHh6u5ORkrVixot57f70deOrUKX33u99Vly5d1LFjRw0dOlS7du3S8uXL9dxzz+nTTz+VxWKRxWLR8uXLG3yNAwcOaOzYsQoPD1d0dLQeeughXbp0yfn3+++/X9OmTdPvfvc7JSQkKDo6Wo888oiqqqpa9O/HES4AADzIMAxdqbK1+/uGBwfKYrG4tM1f//pXzZ49W7t27dKePXv00EMPKSkpyRmufvvb3+oXv/iFfv7zn0uyh5rx48frV7/6lZYuXapz5845Q9uyZcsk2YNNXl6ePvroI4WEhGju3LkqLCxstIZLly7pjjvuUPfu3bVu3TrFx8fr3//+t2pqajR9+nQdPHhQGzZs0D//+U9JktVqrfca5eXlmjBhgkaMGKHdu3ersLBQDzzwgB599FFnQJOkTZs2KSEhQZs2bdLnn3+u6dOn65ZbbnHurysIXAAAeNCVKptu+uUH7f6+h58frw4hrsWAxMREvfzyy7JYLOrXr58OHDigl19+2RlAxo4dq5/+9KfO9WfOnKn77rtP8+bNkyTdeOONeu2113THHXdoyZIlys3N1fvvv6+dO3dq+PDhkqSlS5dqwIABjdbwt7/9TefOndPu3bvVpUsXSVKfPn2cf+/UqZOCgoKabCGuWLFCV65c0VtvvaWOHTtKkhYtWqSpU6fqxRdfVFxcnCSpc+fOWrRokQIDA9W/f39NnjxZH374YYsCFy1FAADQLCNGjKhzVCwtLU3Hjx+XzWY/Qjd06NA66+/du1fLly9Xp06dnI/x48erpqZGOTk5OnLkiIKCgups179/f0VFRTVaw759+3Trrbc6w1ZLHDlyRDfffLMzbEnSbbfdppqaGh07dsy5bODAgQoMDHQ+T0hIaPLoW1M4wgUAgAeFBwfq8PPjPfK+be3aACNJNTU1evjhhzV37tx66/bs2dMZblxpbYaHh7euSNnbuI2957XLg4OD6/2tpqamRe9J4AIAwIMsFovLrT1P2blzZ73nN954Y52jQNcaMmSIDh06VKfld60BAwaourpae/bs0bBhwyRJx44d08WLFxutYfDgwfrzn/+s8+fPN3iUKyQkxHnErTE33XST/vrXv+ry5cvOkPjJJ58oICBAffv2bXLblqKlCAAAmiUvL0/z58/XsWPHtHLlSr3++uv68Y9/3Oj6P/vZz7Rjxw498sgj2rdvn44fP65169bpsccekyT169dPEyZM0IMPPqhdu3Zp7969euCBB5o8ivW9731P8fHxmjZtmj755BOdPHlSq1ev1o4dOyTZZ0vm5ORo3759KioqUkVFRb3X+P73v6+wsDDNmjVLBw8e1KZNm/TYY49pxowZzvO32hqBCwAANMvMmTN15coVDRs2TI888ogee+wxPfTQQ42uP3jwYG3ZskXHjx9Xenq6br31Vv3iF79QQkKCc51ly5YpMTFRd9xxh+655x499NBDio2NbfQ1Q0JCtHHjRsXGxmrSpEkaNGiQXnjhBedRtnvvvVcTJkzQmDFj1LVrV61cubLe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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
...
...
@@ -137,23 +161,59 @@
{
"cell_type": "code",
"execution_count": null,
"id": "
277c8e1f
",
"id": "
0d1e4309
",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "eab1663c",
"metadata": {},
"source": [
"## Loading model from the repo"
]
},
{
"cell_type": "code",
"execution_count":
null
,
"id": "
0d1e430
9",
"execution_count":
11
,
"id": "
f4d5aaa
9",
"metadata": {},
"outputs": [],
"source": []
"source": [
"mod = mlflow.sklearn.load_model('mlflow-artifacts:/2/72a5223cf23c48ae9a3326fbac8eb6c5/artifacts/model')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "f37f404f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.81845867, 0.18154133],\n",
" [0.69409719, 0.30590281],\n",
" [0.53313875, 0.46686125],\n",
" [0.36497272, 0.63502728],\n",
" [0.22435935, 0.77564065],\n",
" [0.36497272, 0.63502728]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mod.predict_proba(X)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "
a48f25d
f",
"id": "
6254eab
f",
"metadata": {},
"outputs": [],
"source": []
...
...
@@ -175,7 +235,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.
6
"
"version": "3.10.
9
"
}
},
"nbformat": 4,
...
...
%% Cell type:code id:9888d9d2 tags:
```
python
import
numpy
as
np
from
sklearn.linear_model
import
LogisticRegression
import
mlflow
import
mlflow.sklearn
import
matplotlib.pyplot
as
plt
import
warnings
warnings
.
filterwarnings
(
'
ignore
'
)
```
%% Cell type:code id:80b8d728 tags:
```
python
mlflow
.
set_tracking_uri
(
'
https://zam10017.zam.kfa-juelich.de/
'
)
```
%% Cell type:code id:f1d93fa1 tags:
```
python
#mlflow.set_tracking_uri('http://0.0.0.0:8080')
```
%% Cell type:code id:be2d99b3 tags:
```
python
mlflow
.
set_experiment
(
'
mysimple
'
)
mlflow
.
set_experiment
(
'
mysimple
-newest
'
)
```
%% Output
202
2/11
/1
6
0
9:58:15
INFO mlflow.tracking.fluent: Experiment with name 'mysimple' does not exist. Creating a new experiment.
202
3/03
/1
0
0
8:12:09
INFO mlflow.tracking.fluent: Experiment with name 'mysimple
-newest
' does not exist. Creating a new experiment.
<Experiment: artifact_location='mlflow-artifacts:/
1
', creation_time=16
68589095429
, experiment_id='
1
', last_update_time=16
68589095429
, lifecycle_stage='active', name='mysimple', tags={}>
<Experiment: artifact_location='mlflow-artifacts:/
3
', creation_time=16
78432329268
, experiment_id='
3
', last_update_time=16
78432329268
, lifecycle_stage='active', name='mysimple
-newest
', tags={}>
%% Cell type:code id:d9601ea6 tags:
```
python
X
=
np
.
array
([
-
2
,
-
1
,
0
,
1
,
2
,
1
]).
reshape
(
-
1
,
1
)
y
=
np
.
array
([
0
,
0
,
1
,
1
,
1
,
0
])
```
%% Cell type:code id:afa87aec tags:
```
python
mlflow
.
end_run
()
```
%% Cell type:code id:e59e2ae7 tags:
```
python
for
c
in
range
(
1
,
100
,
20
):
with
mlflow
.
start_run
():
C
=
float
(
c
)
/
100.0
mlflow
.
log_param
(
'
C
'
,
value
=
C
)
lr
=
LogisticRegression
(
C
=
C
)
lr
.
fit
(
X
,
y
)
score
=
lr
.
score
(
X
,
y
)
print
(
f
"
{
C
}
score:
{
score
}
"
)
mlflow
.
log_metric
(
"
score
"
,
score
)
mlflow
.
sklearn
.
log_model
(
lr
,
"
model
"
)
```
%% Output
0.01 score: 0.6666666666666666
0.21 score: 0.6666666666666666
0.41 score: 0.6666666666666666
0.61 score: 0.6666666666666666
0.81 score: 0.6666666666666666
%% Cell type:code id:657d86bc tags:
```
python
my
=
lr
.
predict
(
X
)
```
%% Cell type:code id:2f5b27cd tags:
```
python
fig
,
axs
=
plt
.
subplots
(
1
)
axs
.
scatter
(
X
,
y
,
c
=
'
r
'
,
label
=
'
data
'
)
axs
.
plot
(
X
,
my
,
label
=
'
prediction
'
)
fig
.
legend
();
mlflow
.
log_figure
(
fig
,
'
myplot.png
'
)
```
%% Output
%% Cell type:code id:
277c8e1f
tags:
%% Cell type:code id:
0d1e4309
tags:
```
python
``
`
%%
Cell
type
:
code
id
:
0
d1e4309
tags
:
%%
Cell
type
:
markdown
id
:
eab1663c
tags
:
## Loading model from the repo
%%
Cell
type
:
code
id
:
f4d5aaa9
tags
:
```
python
mod = mlflow.sklearn.load_model('mlflow-artifacts:/2/72a5223cf23c48ae9a3326fbac8eb6c5/artifacts/model')
```
%% Cell type:code id:f37f404f tags:
```
python
mod.predict_proba(X)
```
%% Cell type:code id:a48f25df tags:
%% Output
array([[0.81845867, 0.18154133],
[0.69409719, 0.30590281],
[0.53313875, 0.46686125],
[0.36497272, 0.63502728],
[0.22435935, 0.77564065],
[0.36497272, 0.63502728]])
%% Cell type:code id:6254eabf tags:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment