326 lines
84 KiB
Text
326 lines
84 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Train your model\n",
|
|
"\n",
|
|
"The first step is, of course, to install `great-ai` in your Python environment."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Note: you may need to restart the kernel to use updated packages.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%pip install great-ai > /dev/null"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"First, we have to get some data. After downloading it [from here](https://github.com/allenai/scibert/tree/master/data/text_classification/mag), we might notice that the dataset is in [JSON Lines](https://jsonlines.org/) format (each line is a seperate JSON document). \n",
|
|
"\n",
|
|
"Let's write a function which takes a single line, and returns the sentence and the corresponding label from it. Before returning, the sentence is also [cleaned](/reference/utilities/#great_ai.utilities.clean.clean) to remove any LaTeX, XML, unicode, PDF-extraction artifacts."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"from great_ai.utilities import clean\n",
|
|
"\n",
|
|
"\n",
|
|
"def preprocess(line):\n",
|
|
" data_point = json.loads(line)\n",
|
|
"\n",
|
|
" sentence = data_point[\"text\"]\n",
|
|
" label = data_point[\"label\"]\n",
|
|
"\n",
|
|
" return clean(sentence), label"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, we can load the dataset and extract the *training* samples from it. Since we're impatient, we can do it in parallel using the [`simple_parallel_map`](/reference/utilities/#great_ai.utilities.simple_parallel_map) function.\n",
|
|
"\n",
|
|
"> Open files in Python are iterable, with a line being return (in text mode) with each iteration."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████| 84000/84000 [00:09<00:00, 8960.63it/s] \n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from great_ai.utilities import simple_parallel_map\n",
|
|
"\n",
|
|
"with open(\"data/train.txt\", encoding=\"utf-8\") as f:\n",
|
|
" training_data = simple_parallel_map(preprocess, f)\n",
|
|
"\n",
|
|
"X_train = [d[0] for d in training_data]\n",
|
|
"y_train = [d[1] for d in training_data]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's do the same for the *test* data."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████| 22399/22399 [00:03<00:00, 6078.02it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"with open(\"data/test.txt\", encoding=\"utf-8\") as f:\n",
|
|
" test_data = simple_parallel_map(preprocess, f)\n",
|
|
"\n",
|
|
"X_test = [d[0] for d in test_data]\n",
|
|
"y_test = [d[1] for d in test_data]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"After obtaining some clean data, it's time to create and train a model on it. We are going to use [scikit-learn](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) for this purpose.\n",
|
|
"\n",
|
|
"In this case, we opted for a [linear Support Vector Machine](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html) because it's known to be an adequate baseline for simple classification tasks."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('tfidfvectorizer', TfidfVectorizer()),\n",
|
|
" ('linearsvc', LinearSVC())])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[('tfidfvectorizer', TfidfVectorizer()),\n",
|
|
" ('linearsvc', LinearSVC())])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">TfidfVectorizer</label><div class=\"sk-toggleable__content\"><pre>TfidfVectorizer()</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearSVC</label><div class=\"sk-toggleable__content\"><pre>LinearSVC()</pre></div></div></div></div></div></div></div>"
|
|
],
|
|
"text/plain": [
|
|
"Pipeline(steps=[('tfidfvectorizer', TfidfVectorizer()),\n",
|
|
" ('linearsvc', LinearSVC())])"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.pipeline import make_pipeline\n",
|
|
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
|
|
"from sklearn.svm import LinearSVC\n",
|
|
"\n",
|
|
"model = make_pipeline(TfidfVectorizer(), LinearSVC())\n",
|
|
"# todo: hyperparameter-optimisation\n",
|
|
"model.fit(X_train, y_train)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"It's already finished. Let's see how well it performs. But first, we need to [configure matplotlib](https://matplotlib.org/stable/tutorials/introductory/customizing.html) to make the charts more legible. \n",
|
|
"> `ConfusionMatrixDisplay` relies on `matplotlib` for rendering."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"%matplotlib inline\n",
|
|
"plt.rcParams[\"figure.figsize\"] = (30, 15)\n",
|
|
"plt.rcParams[\"figure.facecolor\"] = \"white\"\n",
|
|
"plt.rcParams[\"font.size\"] = 12"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Next, we check the quality of the model on the `test` split. We can use the classification report to check the common metrics, such as the macro F1-score. We also draw the confusion matrix to get some insights into the types of mistakes being made by the model."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" precision recall f1-score support\n",
|
|
"\n",
|
|
" business 0.67 0.69 0.68 3198\n",
|
|
" economics 0.69 0.71 0.70 3189\n",
|
|
" geography 0.70 0.73 0.72 3207\n",
|
|
" medicine 0.90 0.91 0.90 3187\n",
|
|
" politics 0.63 0.57 0.60 3169\n",
|
|
" psychology 0.73 0.73 0.73 3252\n",
|
|
" sociology 0.51 0.51 0.51 3197\n",
|
|
"\n",
|
|
" accuracy 0.69 22399\n",
|
|
" macro avg 0.69 0.69 0.69 22399\n",
|
|
"weighted avg 0.69 0.69 0.69 22399\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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66fc3Nwyyyf/WF77/fffq06dOvL19VWVKlX09ttvSypdshkTE6O3335b9erVk7+/v7p27arc3Fzb/Hnz5qlBgwYKCAhQs2bNtHnzZtu80aNHq0qVKvL19VXt2rW1ePFiSdLatWvVsGFD+fn5KSwsTM8888w/tm/Ks5SUFHXq1EmhoaGqVq2a/v3vf0uSioqKNGrUKMXGxsrX11c33nijEhMTJUkrV65Uo0aN5O/vr0aNGmnlypW29d1yyy16+eWXdfPNN8vX11d33HGHTpw4YZv/3XffqW7dugoICNAtt9yiHTt22ObFxMRo7Nixqlevnry9vfXggw/q6NGjuuuuu+Tr66v4+HidPHlSUunyzrS0NPXr108REREKDAxUhw4dJEknTpxQu3btFBAQoKCgILVo0UJWq/Uf3aeOtmHDBl1//fXy9fXV/fffr65du2rYsGGSzn+u7NixQ7fccosCAgJUt25dfffdd7Z5qampuueee+Tn56dGjRpp2LBhJc5ti8WiCRMmqGbNmqpZs6Yk6cknn1RUVJT8/Px04403atmyZbb2I0aMUOfOndW1a1f5+vrqhhtu0KZNm0psx8aNG8s856+99lrNnTvX1q6goEAhISH6/fff7bgXy6+/cp6sXr1azZo1U0BAgOrXr68lS5bY1nPgwAG1atVKvr6+uv3220ucpxd7ftnzsxqlxcTE6M033yx1bZWkyZMnq0aNGgoKClL79u2VkpJS5joeeOABDRs2TFlZWbrrrruUkpIiHx8f+fj4KCUlpUT3JUlavny57T0TFRWlqVOnSjr39fpqdq7jc67rztixY9WpU6cS63jiiSf05JNPSjr3eXbGuHHjVKlSJYWHh+uTTz6xTU9PT1efPn0UGhqq6OhojRw58pzXufNdvw8cOKCWLVvaPkcee+wx23ujbdu2ev/990usq169evrvf/97yfvvSlLWvWReXp6eeuopRUREKCIiQk899ZTy8vJsy8yZM0cNGjSQn5+fYmNjtXDhQknF90kff/yxJMlqtWrkyJGKjo5WpUqV1KdPH6Wnp5cZQ0pKitq3b6+goCDVqFFDkydPts3LyclR3759FRgYqGuuuUZjxoyxfTZf6H0HoAwG+IPo6GhTt25dk5CQYFJTU02zZs3M0KFDzSeffGJuvvnmEm0lmT179hhjjKlcubL59ddfjTHGpKWl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4w75+fnpwQcfVE5OjoKDgzVv3jyNGzdOwcHBGjNmjObNm6eQkJALvl7t2rU1Y8YMPf744woJCdHcuXM1d+5ceXh4/O1tmT59utzd3RUXF6dKlSrpvffekyTt2bNH8fHx8vHxUdOmTTVo0CDdeuutf/v1yisPDw998803mjJligICAjRjxgy1a9dOFSpUOO+54uHhoblz52rBggUKCQnRoEGDNG3aNMXFxUmSxo8fr/T0dFWuXFm9e/dW9+7dVaFChXPGceedd6pNmzaqVauWoqOj5enpWaqs9t5779UXX3yhwMBATZ8+Xd98843c3d0vajsrVqyoTp066cCBA+rYseOl7SwnFxUVpTlz5mjUqFEKDQ1VVFSUxo4da6ve+eyzz7RmzRoFBQXp1VdfPW/S6Fzn119xvvcfzq2sa2t8fLxef/11derUSeHh4dq3b59mzZp1wXXFxcWpe/fuql69ugICAkp1Iapataq+//57jRs3TkFBQWrQoIHtKUn2uF47o7KOz4WuO3379tWWLVtKJQwu9Tx7//335e3trerVq6t58+bq0aOH+vfvX6rdha7fM2fO1KpVqxQcHKxhw4apa9eupT7n+/Tpoy1btpSZTHFW57qXHDZsmBo2bKh69erpuuuu0w033GB78lnjxo31ySef6Omnn5a/v79atWpVqqpGkvr376/evXurZcuWqlatmjw9PUs99eaMzz//XAcPHlRERITuu+8+vfrqq4qPj5ckDR8+XJGRkapWrZri4+PVuXPnUsfuXO87AKVZzB9rkQEA5VaTJk00cOBA9evXz27rfOGFF3TkyBF9+umnl7T8iBEjtHfvXlsf4kvx2muvaffu3X9rHUB5FhMTo48//tj2Dw3Kl0s9PgkJCYqLi9ORI0fk5+f3D0X393Xt2lVxcXF69dVXbdOmTZumSZMmafny5Q6MDBfy4YcfatasWVq6dKlt2pXyvgPKAyo7AKCcWrp0qY4cOaLCwkJ9+umn2rx5s9q0afO31rlz505t3rxZxhitXbtWU6ZM0X333WeniP+6tLQ0TZkyRY888ojDYgCAv8pqteqdd95Rt27dyt0/nOvWrdO+fftktVq1cOFCzZkzRx06dLDNz87O1gcffMDnbjl0+PBhrVixQlarVbt27dK4ceNKXKPL8/sOKI/cLtwEAOAIu3btUpcuXZSVlaXq1avr66+/Vnh4+N9aZ0ZGhrp3766UlBSFhYXp2Wef1b333muniP+ayZMn66mnnrKV/gLAlSArK0thYWGKjo7WwoULHR1OKUeOHFHHjh2VmpqqyMhIffjhh7r++uslSYsWLVLHjh0VHx+vHj16ODhS/Fl+fr4GDBigAwcOKCAgQN26ddOgQYMklf/3HVAe0Y0FAAAAAAA4FbqxAAAAAAAAp0KyAwAAAAAAOBWSHQAAAAAAwKmQ7AAAoBx54IEHNGzYMEnSsmXLVLt27cvyuhaLRXv37i1z3i233KKPP/74otYTExOjn3766ZJi+DvLAgAA/BHJDgAA/qKYmBhVrFhRPj4+CgsL0wMPPKDMzEy7v06LFi20a9euC7abOnWqmjdvbvfXBwAAuFKR7AAA4BLMnTtXmZmZ2rBhg9avX6+RI0eWalNYWOiAyAAAAECyAwCAv6FKlSq66667tHXrVknF3UEmTJigmjVrqmbNmpKkefPmqUGDBgoICFCzZs20efNm2/K///67brjhBvn6+qpr167Kzc21zVuyZIkiIyNtfycmJqpjx44KDQ1VcHCwBg8erB07dmjgwIFatWqVfHx8FBAQIEnKy8vTc889p6pVqyosLEwDBw5UTk6ObV1jx45VeHi4IiIi9J///Oeit3ffvn1q3bq1goODFRISop49e+rUqVMl2qxbt0516tRRYGCg+vXrV2KbzrcvAAAA7IVkBwAAf0NiYqK+//57XX/99bZp3377rdasWaPt27fr999/V//+/fXRRx8pNTVVAwYMUPv27ZWXl6f8/Hx16NBBvXv3Vlpamu6//37Nnj27zNcpKipSu3btFB0drYMHDyo5OVndunXTNddco4kTJ6pp06bKzMy0JR5efPFF7d69Wxs3btTevXuVnJys1157TZK0cOFCvf322/rxxx+1Z8+evzROhjFGL730klJSUrRjxw4lJiZqxIgRJdrMnDlTixYt0r59+7R7925b1cv59gUAAIA9kewAAOASdOjQQQEBAWrevLlatWqlIUOG2Oa99NJLCgoKUsWKFTVp0iQNGDBATZo0kaurq/r27asKFSpo9erVWr16tQoKCvTUU0/J3d1dnTt3VqNGjcp8vbVr1yolJUVjx46Vt7e3PD09zzlOhzFGkyZN0rvvvqugoCD5+vpqyJAhmjVrliTpyy+/VL9+/XTttdfK29u7VLLifGrUqKHbb79dFSpUUGhoqJ555hktXbq0RJvBgwcrKipKQUFBGjp0qD7//HNJOu++AAAAsCc3RwcAAMCV6Ntvv1V8fHyZ86Kiomy/Hzp0SJ9++qnef/9927T8/HylpKTIYrGoSpUqslgstnnR0dFlrjMxMVHR0dFyc7vwpfv48ePKzs7WjTfeaJtmjFFRUZEkKSUlpcS8c71mWY4ePaonn3xSy5YtU0ZGhqxWqwIDA0u0+eP2R0dHKyUlRdL59wUAAIA9UdkBAICd/TF5ERUVpaFDh+rUqVO2n+zsbHXv3l3h4eFKTk6WMcbWPiEhocx1RkVFKSEhocxBT//4epIUEhKiihUratu2bbbXTE9Ptz0xJjw8XImJiRd8zbIMGTJEFotFW7Zs0enTpzVjxowS8Usqte6IiIgL7gsAAAB7ItkBAMA/6OGHH9bEiRO1Zs0aGWOUlZWl+fPnKyMjQ02bNpWbm5v+/e9/q6CgQN98843Wrl1b5noaN26s8PBwvfjii8rKylJubq5WrFghSQoLC1NSUpLy8/MlSS4uLnr44Yf19NNP69ixY5Kk5ORkLVq0SJLUpUsXTZ06Vdu3b1d2drZeffXVi96ejIwM+fj4yN/fX8nJyRo7dmypNhMmTFBSUpLS0tL0xhtvqGvXrhfcFwAAAPZEsgMAgH9Qw4YNNXnyZA0ePFiBgYGqUaOGpk6dKkny8PDQN998o6lTpyooKEhffPGFOnbsWOZ6XF1dNXfuXO3du1dVq1ZVZGSkvvjiC0lS69atVbduXVWuXFkhISGSpNGjR6tGjRq66aab5Ofnp/j4eO3atUuSdNddd+mpp55S69atVaNGDbVu3fqit+eVV17Rhg0b5O/vr7Zt25YZb48ePXTHHXeoevXqio2N1bBhwy64LwAAAOzJYv5cewoAAAAAAHAFo7IDAAAAAAA4FZIdAAAAAADAqZDsAAAAAAAAToVkBwAAAAAAcCokOwAAAAAAgFMh2QEAAAAAAJwKyQ4AAAAAAOBUSHYAAAAAAACn8v+W4al3JWPz8AAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 2160x1080 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn import metrics\n",
|
|
"\n",
|
|
"y_predicted = model.predict(X_test)\n",
|
|
"\n",
|
|
"print(metrics.classification_report(y_test, y_predicted))\n",
|
|
"metrics.ConfusionMatrixDisplay.from_predictions(y_test, y_predicted)\n",
|
|
"None"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Great work, we can be rightfully satisfied with our model. Seeing the results, we achieved an F1-score of 0.69 which is about **5% better than SciBERT's** 0.6571!\n",
|
|
"\n",
|
|
"You might wonder that *\"this is great, but besides some utility functions (`clean`, `simple_parallel_map`, ...) what more value does GreatAI add?\"*. This would be a valid argument because the scope of GreatAI actually only starts here.\n",
|
|
"\n",
|
|
"> Not coincidentally, this is the point where the scope of Data Science ends but it's still a grey-zone for software engineering.\n",
|
|
"\n",
|
|
"In order to use this model in production, we have to make it available on some possibly shared infrastructure."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[38;5;226mEnvironment variable ENVIRONMENT is not set, defaulting to development mode ‼️\u001b[0m\n",
|
|
"\u001b[38;5;226mCannot find credentials files, defaulting to using ParallelTinyDbDriver\u001b[0m\n",
|
|
"\u001b[38;5;226mThe selected tracing database (ParallelTinyDbDriver) is not recommended for production\u001b[0m\n",
|
|
"\u001b[38;5;226mCannot find credentials files, defaulting to using LargeFileLocal\u001b[0m\n",
|
|
"\u001b[38;5;39mGreatAI (v0.1.4): configured ✅\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 tracing_database: ParallelTinyDbDriver\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 large_file_implementation: LargeFileLocal\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 is_production: False\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 should_log_exception_stack: True\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 prediction_cache_size: 512\u001b[0m\n",
|
|
"\u001b[38;5;39m 🔩 dashboard_table_size: 50\u001b[0m\n",
|
|
"\u001b[38;5;226mYou still need to check whether you follow all best practices before trusting your deployment.\u001b[0m\n",
|
|
"\u001b[38;5;226m> Find out more at https://se-ml.github.io/practices\u001b[0m\n",
|
|
"\u001b[38;5;39mFetching cached versions of my-domain-predictor\u001b[0m\n",
|
|
"\u001b[38;5;39mCopying file for my-domain-predictor-9\u001b[0m\n",
|
|
"\u001b[38;5;39mCompressing my-domain-predictor-9\u001b[0m\n",
|
|
"\u001b[38;5;39mModel my-domain-predictor uploaded with version 9\u001b[0m\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'my-domain-predictor:9'"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from great_ai import save_model\n",
|
|
"\n",
|
|
"save_model(model, key=\"my-domain-predictor\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### [Let's continue by finishing the deployment in the next notebook.](/tutorial/deploy)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3.10.4 ('.env': venv)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.4"
|
|
},
|
|
"orig_nbformat": 4,
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "02dd6d3afbfa9fbbe1037d64ad9014965528a1ccad21929d6e72f466389a68ad"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|