diff --git a/TAA1/tutorial.ipynb b/TAA1/tutorial.ipynb index dcbc9df..1424d54 100644 --- a/TAA1/tutorial.ipynb +++ b/TAA1/tutorial.ipynb @@ -18,13 +18,22 @@ " 3. Train the classifier using the training data.\n", " 4. Classify an image or feature collection.\n", " 5. Estimate the classification error with independent validation data.\n", - " 6. Test the trained and validated classifier on new, unseen data\n", + " 6. Test the trained and validated classifier on new, unseen data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WedLwKLSV-Nr" + }, + "source": [ " \n", - "## Important before we start\n", + "## Important before we start!\n", "
\n", - "Make sure that you save this file before you continue, else you will lose everything. To do so, go to Bestand/File and click on Een kopie opslaan in Drive/Save a Copy on Drive!\n", "\n", - "Now, rename the file into Week4_Tutorial1.ipynb. You can do so by clicking on the name in the top of this screen." + "⚠️**Questions are indicated in full bold face.** They should be filled in on Canvas. There are 13 questions in total, all with open answers. We suggest keeping answers brief, the questions are mostly to guide your thinking about what is important in each section!\n", + "\n", + "⚠️ Make sure that you save this file before you continue, else you will lose everything. To do so, go to Bestand/File and click on Een kopie opslaan in Drive/Save a Copy on Drive! Now, rename the file into Week4_Tutorial1.ipynb. You can do so by clicking on the name in the top of this screen." ] }, { @@ -53,24 +62,6 @@ "P.S. we will mark important machine learning so you can keep track of the most important terms." ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "6Q_vJ5ZE0B_W" - }, - "source": [ - "

Tutorial Outline

\n", - "
\n", - "
" - ] - }, { "cell_type": "markdown", "metadata": { @@ -92,7 +83,9 @@ "\n", "[**ee**](https://developers.google.com/earth-engine/guides/python_install) is a Python package to use the the Google Earth Engine.\n", "\n", - "[**geemap**](https://geemap.org/) is a Python package for interactive mapping with the Google Earth Engine." + "[**geemap**](https://geemap.org/) is a Python package for interactive mapping with the Google Earth Engine.\n", + "\n", + "[**scikit-learn**](https://scikit-learn.org/stable/) is a Python package for statistical learning that is built on the general NumPy ecosystem. It is the most-used package for classical machine learning." ] }, { @@ -123,27 +116,27 @@ }, { "cell_type": "markdown", - "source": [ - "Finally, let's fix all of our random number generators. This will make our experiments reproducible." - ], "metadata": { "id": "z4Av_NOXm5JF" - } + }, + "source": [ + "Finally, let's fix all of our random number generators. This will make our experiments reproducible." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3gUXlHbnm_L5" + }, + "outputs": [], "source": [ "### Set global seeds ###\n", "seed = 123\n", "np.random.seed(seed)\n", "random.seed(seed)\n", "os.environ['PYTHONHASHSEED'] = str(seed)" - ], - "metadata": { - "id": "3gUXlHbnm_L5" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -171,33 +164,33 @@ }, { "cell_type": "markdown", - "source": [ - "Alternatively, you can authorize your project as follows, but then be aware that anyone observing the notebook can see your project name, which is potentially a security issue." - ], "metadata": { "id": "Q0LfPa3ekekv" - } + }, + "source": [ + "Alternatively, you can authorize your project as follows, but then be aware that anyone observing the notebook can see your project name, which is potentially a security issue." + ] }, { "cell_type": "code", - "source": [ - "ee.Authenticate()\n", - "ee.Initialize(project=\"YOUR_PROJECT_NAME\")" - ], + "execution_count": null, "metadata": { "id": "oDq0Z2iukjh1" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "ee.Authenticate()\n", + "ee.Initialize(project=\"YOUR_PROJECT_NAME\")" + ] }, { "cell_type": "markdown", - "source": [ - "Then, run the code below to load a basemap and to test if you set your credentials right. You can choose any location in Europe, but the code below will show the coordinates we have selected for the Netherlands. Feel free to change them." - ], "metadata": { "id": "qP9FDYmSlTmm" - } + }, + "source": [ + "Then, run the code below to load a basemap and to test if you set your credentials right. You can choose any location in Europe, but the code below will show the coordinates we have selected for the Netherlands. Feel free to change them." + ] }, { "cell_type": "code", @@ -248,6 +241,9 @@ }, { "cell_type": "markdown", + "metadata": { + "id": "TGCFX-bBtzmx" + }, "source": [ "\n", "The values in each band are between 1 and 65,535, the 16-bit unsigned integer limit. The values represent the `surface reflection`, the fraction of light that is reflected at each pixel location.\n", @@ -261,13 +257,15 @@ "**Q2: Which band names should be added to the list to visualize the image with in red-green-blue colours?**\n", "\n", "HINT: [This page contains the documentation, where you can find the answer](https://developers.google.com/earth-engine/datasets/catalog/LANDSAT_LC08_C02_T1_L2)" - ], - "metadata": { - "id": "TGCFX-bBtzmx" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "I4QjsgkMtyXK" + }, + "outputs": [], "source": [ "bands = ['SR_B4', 'SR_B3', 'SR_B2'] # Fill in this list yourself\n", "vis_params = {'max': 25000, 'bands':bands} # Limit upper range so you can see detail\n", @@ -275,12 +273,7 @@ "map.centerObject(point, 8)\n", "map.addLayer(image, vis_params, \"Landsat-8\")\n", "map" - ], - "metadata": { - "id": "I4QjsgkMtyXK" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -305,15 +298,20 @@ }, { "cell_type": "markdown", - "source": [ - "Now that we have the image, let's add some indices to add some extra information for the model. Together with the raw spectral values, these will be our input variables, from which the model will learn how to fit to the reference values." - ], "metadata": { "id": "_pbcU0H5gMP3" - } + }, + "source": [ + "Now that we have the image, let's add some indices to add some extra information for the model. Together with the raw spectral values, these will be our input variables, from which the model will learn how to fit to the reference values." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jWO-e2IXgfvO" + }, + "outputs": [], "source": [ "# Add the bands you need yoursef in the select functions\n", "dvi = image.select('...').subtract(image.select('...')).rename('DVI')\n", @@ -322,35 +320,30 @@ " # Compute the NDVI yourself - check the docs if needed\n", "ndvi = ...\n", "image = image.addBands(ndvi)" - ], - "metadata": { - "id": "jWO-e2IXgfvO" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "ehSJNOL5g39l" + }, "source": [ "**Q3: Which other indices like the NDVI could be useful to add here, and why? Add at least one more to the image.**\n", "\n", "**!!! Don't forget to rename the index, and to add it later in the exercise !!!**" - ], - "metadata": { - "id": "ehSJNOL5g39l" - } + ] }, { "cell_type": "code", - "source": [ - "my_index = ...\n", - "image = image.addBands(my_index)" - ], + "execution_count": null, "metadata": { "id": "auXaN6aZhDd1" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "my_index = ...\n", + "image = image.addBands(my_index)" + ] }, { "cell_type": "markdown", @@ -495,12 +488,12 @@ }, { "cell_type": "markdown", - "source": [ - "While the third level of LC classes are very detailed, they contain a lot of uncertainty, and they are difficult for a model to learn. Instead, let's first generalize the land cover classes to the second level of the hierarchy. For this, we will finish the following function that we will apply to the column." - ], "metadata": { "id": "D8L-sJnnWTma" - } + }, + "source": [ + "While the third level of LC classes are very detailed, they contain a lot of uncertainty, and they are difficult for a model to learn. Instead, let's first generalize the land cover classes to the second level of the hierarchy. For this, we will finish the following function that we will apply to the column." + ] }, { "cell_type": "code", @@ -519,15 +512,15 @@ }, { "cell_type": "code", - "source": [ - "# TODO: Look up the GEE function to run the function over each points\n", - "lc_reference_pts = lc_points.map(generalize_clc_class) # Students do this themselves" - ], + "execution_count": null, "metadata": { "id": "uyxS7KVHQsbS" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "# TODO: Look up the GEE function to run the function over each points\n", + "lc_reference_pts = lc_points.map(generalize_clc_class) # Students do this themselves" + ] }, { "cell_type": "markdown", @@ -552,6 +545,11 @@ }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "SlTEbyCpofAu" + }, + "outputs": [], "source": [ "# This property of the table stores the land cover labels\n", "label_col = 'landcover'\n", @@ -568,12 +566,7 @@ "val_data = image.select(img_bands).sampleRegions(\n", " **{'collection': validation_sample, 'properties': [label_col], 'scale': 100}\n", ")" - ], - "metadata": { - "id": "SlTEbyCpofAu" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -581,48 +574,48 @@ "id": "PAW_rLopv10O" }, "source": [ - "**Q4: What are the downsides of using a sample randomized 80/20 training/validation split like this? Can you think of other ways to partition the dataset which would be better?**" + "**Q5: What are the downsides of using a sample randomized 80/20 training/validation split like this? Can you think of other ways to partition the dataset which would be better?**" ] }, { "cell_type": "markdown", - "source": [ - "Finally, let's visualize a single imge pixel to make sure that everything is included as expected. Contrary to what some might say, preparing and organizing your dataset takes up the bulk of your time when working with machine learning models. **Always double-check your dataset before training, or you'll find yourself wasting a lot of time**!" - ], "metadata": { "id": "VXSi1VbXl8-X" - } + }, + "source": [ + "Finally, let's visualize a single imge pixel to make sure that everything is included as expected. Contrary to what some might say, preparing and organizing your dataset takes up the bulk of your time when working with machine learning models. **Always double-check your dataset before training, or you'll find yourself wasting a lot of time**!" + ] }, { "cell_type": "code", - "source": [ - "# Print the first feature in the training collection\n", - "print(train_data.first().getInfo())" - ], + "execution_count": null, "metadata": { "id": "HCxNoOqzkmBQ" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "# Print the first feature in the training collection\n", + "print(train_data.first().getInfo())" + ] }, { "cell_type": "markdown", - "source": [ - "As can be seen, each datapoint contains reflectance values from the Landsat-8 image, the indices we defined, and a land cover reference label." - ], "metadata": { "id": "fc3_UqRPpo62" - } + }, + "source": [ + "As can be seen, each datapoint contains reflectance values from the Landsat-8 image, the indices we defined, and a land cover reference label." + ] }, { "cell_type": "markdown", + "metadata": { + "id": "hg35-o14SBdU" + }, "source": [ "#### Converting to scikit-learn compatible data\n", "The GEE package provides built-in functions for a couple of popular models, so in principle we can continue working entirely within GEE. However, we're interested in teaching you re-usable machine learning skills. Therefore, we run our models using scikit-learn, Python's most popular package for standard ML models. For this purpose, we should convert our data into a data structure that is compatible with this package." - ], - "metadata": { - "id": "hg35-o14SBdU" - } + ] }, { "cell_type": "code", @@ -670,6 +663,9 @@ }, { "cell_type": "markdown", + "metadata": { + "id": "OXFAonsI0eYo" + }, "source": [ "### 5a. Logistic Regression\n", "---\n", @@ -678,31 +674,33 @@ "![Exam_pass_logistic_curve.svg.png](data:image/png;base64,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)\n", "\n", "(Image courtesy of Wikimedia)" - ], - "metadata": { - "id": "OXFAonsI0eYo" - } + ] }, { "cell_type": "markdown", - "source": [ - "**Q5: Why can't we use a regular linear regression to regress the probabilities of each class, why do we have to use a sigmoid function to bound our predictions? Which kinds of problem(s) could using a linear regression model cause for this case?**" - ], "metadata": { "id": "k5p-61m6Pm3z" - } + }, + "source": [ + "**Q6: Why can't we use a regular linear regression to regress the probabilities of each class, why do we have to use a sigmoid function to bound our predictions? Which kinds of problem(s) could using a linear regression model cause for this case?**" + ] }, { "cell_type": "markdown", - "source": [ - "Let's fit the model to our training data and evaluate how well it performs on the training split using a straightforward overall accuracy measures, where we simply count the ratio of correct positives. Under the hood, we assign a `1` or a `0` to each class, which we call one-hot encoding (as in - only one of the labels is *hot*, with a value of `1`). The model is then optimized to predict a confidence for each class separately which indicates if the given class is present or not. In the scikit implementation, the most confident class (closest to `1`) gets assigned to the datapoint. Let's try it out!" - ], "metadata": { "id": "pGWTKZDXRszD" - } + }, + "source": [ + "Let's fit the model to our training data and evaluate how well it performs on the training split using a straightforward overall accuracy measures, where we simply count the ratio of correct positives. Under the hood, we assign a `1` or a `0` to each class, which we call one-hot encoding (as in - only one of the labels is *hot*, with a value of `1`). The model is then optimized to predict a confidence for each class separately which indicates if the given class is present or not. In the scikit implementation, the most confident class (closest to `1`) gets assigned to the datapoint. Let's try it out!" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "E6LOxKyjFLfh" + }, + "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score, cohen_kappa_score\n", @@ -715,49 +713,49 @@ "train_y_pred = model.predict(x_train)\n", "train_accuracy = accuracy_score(train_y_pred, y_train)\n", "print(\"Training accuracy:\", round(train_accuracy, 3))" - ], - "metadata": { - "id": "E6LOxKyjFLfh" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "YWYPUzDpTWE5" + }, "source": [ "Okay, a little under 50% accurate, that's reasonably good. But is it better than random guessing? For this, we use Cohen's Kappa. The **Kappa Coefficient** is generated from a statistical test to evaluate the accuracy of a classification. **Kappa** essentially evaluates how well the classification performed as compared to just randomly assigning values, i.e. did the classification do better than random. The **Kappa Coefficient** can range from -1 to 1. A value of 0 indicated that the classification is no better than a random classification. A negative number indicates the classification is significantly worse than random guessing. A value of to 1 indicates that the predicted values are equal to the ground truth, therefore not being the product of any random guessing.\n", "\n", "By the way, in professional parlay, we refer to measures as the `accuracy` and `Cohen's Kappa` as performance metrics." - ], - "metadata": { - "id": "YWYPUzDpTWE5" - } + ] }, { "cell_type": "code", - "source": [ - "train_kappa = cohen_kappa_score(train_y_pred, y_train)\n", - "print(\"Training Kappa:\", round(train_kappa, 3))" - ], + "execution_count": null, "metadata": { "id": "1GPPPS0dR7ee" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "train_kappa = cohen_kappa_score(train_y_pred, y_train)\n", + "print(\"Training Kappa:\", round(train_kappa, 3))" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "UL_g9aFxSubH" + }, "source": [ "Looking good. It's not a perfect performance, but the model outperforms random guessing by a significant margin. Not bad for the simplest possible model with a fairly large number of target classes.\n", "\n", "Now, let's see if it manages to predict well on pixels which it hasn't been trained for." - ], - "metadata": { - "id": "UL_g9aFxSubH" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "TX2MyP5vBmsP" + }, + "outputs": [], "source": [ "val_y_pred = model.predict(x_val)\n", "\n", @@ -766,30 +764,25 @@ "\n", "val_kappa = cohen_kappa_score(val_y_pred, y_val)\n", "print(\"Validation Kappa:\", round(val_kappa, 3))" - ], - "metadata": { - "id": "TX2MyP5vBmsP" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "**Q6: Interpret the results. What do you think of the performance on the validation set compared to training, is this an expected outcome, why/why not? Considering the random split we did, do you think this model could suitable for predicting in new, unseen regions?**" - ], "metadata": { "id": "A1am1vKbVUDC" - } + }, + "source": [ + "**Q7: Interpret the results. What do you think of the performance on the validation set compared to training, is this an expected outcome, why/why not? Considering the random split we did, do you think this model could suitable for predicting in new, unseen regions?**" + ] }, { "cell_type": "markdown", - "source": [ - "Before we move on, let's make two quick functions that we can re-use whenever we want to evaluate our models quickly. It will save us a lot of code re-use when iterating through candidate models." - ], "metadata": { "id": "nm7CpdAmfO5U" - } + }, + "source": [ + "Before we move on, let's make two quick functions that we can re-use whenever we want to evaluate our models quickly. It will save us a lot of code re-use when iterating through candidate models." + ] }, { "cell_type": "code", @@ -834,12 +827,12 @@ }, { "cell_type": "markdown", - "source": [ - "Let's repeat the process of training a model by using a decision tree classifier. This is a parametrized model, which means that there are certain decisions to make, which will affect the performance of the model. First, let's run it with the default settings, and you'll quickly see why it's important to pay attention to the parameters of your models." - ], "metadata": { "id": "P_Vj87ExYbwg" - } + }, + "source": [ + "Let's repeat the process of training a model by using a decision tree classifier. This is a parametrized model, which means that there are certain decisions to make, which will affect the performance of the model. First, let's run it with the default settings, and you'll quickly see why it's important to pay attention to the parameters of your models." + ] }, { "cell_type": "code", @@ -858,14 +851,14 @@ }, { "cell_type": "markdown", + "metadata": { + "id": "55KDeyABdsaL" + }, "source": [ "This results in a very big contrast in the model's performance. How can it be that the model almost performs perfectly on the training dataset, but does poorly on the validation dataset? For the answer, [take a look at the documentation of the model](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html). In particular, look at the parameters `max_depth` and `min_samples_split`. Use the docs and any other means at your disposal to answer the following question.\n", "\n", - "**Q7: In your own words, what is the effect of changing `max depth` and `min_samples_split`? How could these two parameters result in a perfect fit for the model on the training data?**" - ], - "metadata": { - "id": "55KDeyABdsaL" - } + "**Q8: In your own words, what is the effect of changing `max depth` and `min_samples_split`? How could these two parameters result in a perfect fit for the model on the training data?**" + ] }, { "cell_type": "markdown", @@ -892,12 +885,12 @@ }, { "cell_type": "markdown", - "source": [ - "**Q8: Report the settings of the best-performing model on the validation dataset, along with the validation accuracy and Kappa. Why do you think the parameters you chose ended up working better than the default settings, which produced a perfect fit on the training dataset?**" - ], "metadata": { "id": "y1XZI7AbhSDi" - } + }, + "source": [ + "**Q9: Report the settings of the best-performing model on the validation dataset, along with the validation accuracy and Kappa. Why do you think the parameters you chose ended up working better than the default settings, which produced a perfect fit on the training dataset?**" + ] }, { "cell_type": "markdown", @@ -923,6 +916,9 @@ }, { "cell_type": "markdown", + "metadata": { + "id": "AcA_nTNEphG7" + }, "source": [ "[First, take a look at the documentation](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html), where you'll see that (logically) it is a parametrized model too. To keep it simple, let's focus on two important parameters while fixing the rest. We focus on `min_samples_split`, and `n_estimators`. You know the first one, and by its name you can reasonably figure out that `n_estimators` is the number of trees we'd like to use.\n", "\n", @@ -931,10 +927,7 @@ "![gridsearch.png](data:image/png;base64,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d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6MWM5NmZjY2YtZDRlZS00OWU3LWE5N2ItOTMzOTY5OGQxMjg1IgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBjYjQzNWIyLTA3MDItNGMxNy1hYTNkLWY0ZWQxMGU5Mzc5MiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjM5ZGQ2Y2E1LTJhZGYtNDJjNi05MGNhLWJmMTdhMjBhMWRmZiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IldpbmRvd3MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjQzMTI1NTk1NTk2NjAyIgogICBHSU1QOlZlcnNpb249IjIuMTAuMjQiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Njk1YTNkNGUtNjlhYy00NWY4LWIxNzMtZjllZGE1ZmY2NWViIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTAxLTI1VDE2OjQ2OjM1Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PgoMOVAAAAAJcEhZcwAAITQAACE0AZ7hvhcAAAAHdElNRQfmARkPLiO+hFz5AAAgAElEQVR42ux9d5hV1bn+t9ba9ZTpfQZmhmFgAGlSBEIVREWDnesVNfZrTIzJ1Z/RWBILJt5oNNEYRaORWGIFlVgooYhIB6UNAzNDGWCYfs6csssqvz/Wmc0BATWKqDnrOc96zuzZZ9f1ru/73q8sJISAVPsuNe5963pz+Bh7o9QD+zY1nHoEqZZq31hTUo/guztFflZ2pXSVlHxLtVRLtZR8+z62lLWWkm+p9rU2kdIaU/It1b551KVEXkq+pdo3rTKm4JTCW6p99ea6rvxCKWWMeRsFgMu4QCBQF9gQ2I4NQoAQgnMAcGybUcq7fvWlGmOM84MuPkpp8p/HuE4ASPbluq4rhGCMUUqTDw4AsVhM/imPbNv2f9BsmfJ3f3t1RiGEEBhjb9xrmsYERwghQAKEZVkYkGEYAABcAELyZwAgv8djMdPvO+LBOefyyEfcyDlHCCGEhBCccyGEonyO6cE5934FAMkHl6gjhCQfxHEcjPHnHjaFt1T7JhpjjBAixzoh5OB2QQHhZP2EC44RdpOHL0eu66qqCgj9ewqnPC/GWIJHCCG/HGNe8JCWLJZVVU0GHqUUISRvx7IswzDkD+XNpvCWaiesOY6jaVqyesYYs5w4A4YIsmJx13U1TRMCsAC/Pxj0B+SvVFVFAgNCnDFMyLHxlizQ5JcEUEEqp/xzYSB385B5xImDMSbv5Yi4opT+50i5FN6+7SacqqoNDQ1Lly7dsWPHgebG5o5mrOLOUKi5uZlSqqlGTlZ2SUm3s844c/jw4Xm5BQDgOlTTNGk4HWMoJ6t/nu6arGfKsSER9QUhIS00jLHruoQQKaIlbj1AetJSzilS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eiAQqK6uDgaDw4YNk246KTTkhCIhFAqF2tra/H5/NBrdsmXLm2++GQqFotEo53z06NGjRo16+umnFUWRZIlt2//93/89ceLEpUuXPvzwwxdddBHGeP78+SeffPKoUaP69Okza9asWbNmjRs3bu7cuZs2beKcSwnc2dnp+dCkRIrH45zz1tbWSCQye/bsXbt2BQIB13ULCwvHjx//8ssvl5eXFxcX79y5s7q6evr06SNGjOjevfuLL77oOM6DDz74BV93Cm8nXMAlyPpIJFJfXw8YyivKiIoBeNcHAEAgGZ2MDi1dggEAAffUJwZcISTuxBSdDB46sKS0cMe6fUuWLLnqqquys7O9DADoiqIwDCMnJ0fSdxkZGRdeeOHcuXPHjx8/ePBgznkoFIpEInIHzvmUKVN27dr10ksv/ehHP0pPTzdN86qrrrrwwgt1Xb/ttttuu+22X/ziFxkZGX379j333HPXrVuXlpYm8dbQ0PDBBx+sWbOmo6MjJydn8uTJQ4cOtW07FouZptnW1uY53yil6enpt9xyy2OPPXbxxRd379594MCBvXv3ltx6t27drrjiigceeOC2227Lzc3VNO20005LS0s799xzV61aNXv27AULFgQCgbS0tJEjR2ZkZFxxxRWrVq36v//7v2effbaiomLatGmLFi2S4jEjIyMej2uaFo1GNU0zDOPSSy99/PHHf/KTnxQXF0vzTFVVVVW7d+9+7bXX3nPPPTfffHMgEFBVdfLkybm5uT6fb9KkSQ899NCAAQN69uz5RafXVLzyCfYHUIYJESA+Xrls3KnjKfAH//CbcZN+AIRyTAXiACAAA2AQBABQAm8H9UmJN4JVSalrmhGPxzEmWMAjDz7++nPvlRSWvPLKK6NGjZLKpFSfZN/Q0LBu3bqJEydKhS0SiWzevDkvL6+0tFQCuKampq2tbdCgQYZhSG6jtra2pqamoKDA5/P16tXL08fq6+tramowxpWVlbm5uXV1dRUVFVJ3dRynurq6qanJMAzTNEtKSiQNGIlEqqurBw0aJPUuScNIA0k6uzIzM3v27FlfX19QUJCenm5ZlqIodXV1a9euzcvL8/l8ffv2TU9Pl4fasGFDQ0NDQUFBz5498/LypPnU0NCwdevWtLS08vJySe737duXUlpXV9fY2Dh06FCfz+clBNXX19fX1xuG0bdv35aW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)\n", "\n", "(A visual example of grid search, where parameter searching occurs in a grid with regular intervals. Adapted from [Pilario, Cao, and Shafiee](https://www.researchgate.net/publication/341691661_A_Kernel_Design_Approach_to_Improve_Kernel_Subspace_Identification))" - ], - "metadata": { - "id": "AcA_nTNEphG7" - } + ] }, { "cell_type": "code", @@ -952,6 +945,9 @@ }, { "cell_type": "markdown", + "metadata": { + "id": "XGvysGuTsObl" + }, "source": [ "The following loop goes through all of the parameter combinations to measure their performance. In a nutshell, the code below performs the following steps:\n", "\n", @@ -962,13 +958,15 @@ "4. In the inner loop, we train our model on the dataset, measure time taken and performance, and insert these in the matrices\n", "\n", "It can take a minute or two to complete running, so have a sip of coffee and wait patiently - after you finish filling in the code to complete it!" - ], - "metadata": { - "id": "XGvysGuTsObl" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "SoQTiliasbY_" + }, + "outputs": [], "source": [ "from datetime import datetime\n", "from tqdm import tqdm # fancy progress bar package\n", @@ -1012,24 +1010,24 @@ "\n", "# Clear the progress bar print(s) once it's done running\n", "clear_output()" - ], - "metadata": { - "id": "SoQTiliasbY_" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Let's have a look at which parameter combination provides the best performance, and how long it took to run each model." - ], "metadata": { "id": "oz4gOjMQsJ4M" - } + }, + "source": [ + "Let's have a look at which parameter combination provides the best performance, and how long it took to run each model." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "_PLD8spawTUb" + }, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -1062,12 +1060,7 @@ "for t_i, t_val in enumerate(n_estimator_ranges):\n", " for l_i, l_val in enumerate(min_sample_ranges):\n", " ax_time.text(t_i, l_i, s=time_paramsearch[t_i, l_i], ha='center')" - ], - "metadata": { - "id": "_PLD8spawTUb" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -1075,11 +1068,14 @@ "id": "IMpOi0rk0B_l" }, "source": [ - "**Q9: Interpret and discuss the performance matrices above. What do you believe are the best parameters for the model, and why?**" + "**Q10: Interpret and discuss the performance matrices above. What do you believe are the best parameters for the model, and why?**" ] }, { "cell_type": "markdown", + "metadata": { + "id": "X-_K6F73DoCU" + }, "source": [ "Let's use one more trick to evaluate the performance of our model - a confusion matrix. It is a simple table which compares the reference labels with the model's predictions by looking at the mistakes made between all reference class combinations to determine which classes are most often confused.\n", "\n", @@ -1091,13 +1087,15 @@ "* False Negatives (FN): The number of times the model incorrectly predicted the negative class when it was actually positive (also called a \"Type II error\").\n", "\n", "By looking at these values, you can understand how well your model is performing for each class, as well as which classes are confused most often." - ], - "metadata": { - "id": "X-_K6F73DoCU" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kgPBK3cnDnTn" + }, + "outputs": [], "source": [ "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "labels = sorted(set(y_val))\n", @@ -1106,26 +1104,24 @@ " display_labels=labels)\n", "disp.plot()\n", "plt.show()" - ], - "metadata": { - "id": "kgPBK3cnDnTn" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "YGTfcnNsFh36" + }, "source": [ - "**Q10: Which classes are most often confused, and why do you think this is the case?**\n", + "**Q11: Which classes are most often confused, and why do you think this is the case?**\n", "\n", "(look at the CLC class labels for a more insightful discussion)" - ], - "metadata": { - "id": "YGTfcnNsFh36" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "WGmpkc-2k55h" + }, "source": [ "Finally, let's consider the topic of *interpretability*. That is, how easy is it to understand the reasoning behind a model's decisions. When you use a large number of trees, it is technically possible to understand exactly how decisions are made by analyzing the splits in each trees. However, this is a very time-consuming task, and not realistic to do in almost any scenario. How then can we make sense of our predictions, while still making use of its complex, non-linear performance benefits?\n", "\n", @@ -1136,13 +1132,15 @@ "Gini coefficient (or Gini impurity) measures the probability of incorrectly classifying a randomly chosen element if it was randomly labeled according to the distribution of classes in the node. Like entropy, a higher Gini impurity for a given variable indicates that it is more important for the predictions of the model.\n", "\n", "For more information, please have a look at the book [Introduction to Statistical Learning](https://www.stat.berkeley.edu/users/rabbee/s154/ISLR_First_Printing.pdf), page 312 discusses these metrics." - ], - "metadata": { - "id": "WGmpkc-2k55h" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b1jFOOvOl6fd" + }, + "outputs": [], "source": [ "## We train two models with the same parameter settings - one for entropy, and one for the GINI coefficient.\n", "entropy_model = RandomForestClassifier(n_estimators=100, min_samples_split=10, max_depth=25, criterion='entropy')\n", @@ -1152,24 +1150,24 @@ "gini_model = RandomForestClassifier(n_estimators=n_trees, min_samples_split=min_samples, max_depth=25, criterion='gini')\n", "gini_model.fit(x_train.values, y_train.values)\n", "features_gini = gini_model.feature_importances_" - ], - "metadata": { - "id": "b1jFOOvOl6fd" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Let's plot the results for the model trained using both of these metrics." - ], "metadata": { "id": "rQ7Nabb-3-PX" - } + }, + "source": [ + "Let's plot the results for the model trained using both of these metrics." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Z-0SD4Efk4dB" + }, + "outputs": [], "source": [ "## Make bar plots\n", "x_axis = range(len(features_gini))\n", @@ -1184,21 +1182,16 @@ " ax_gini.text(index, y=features_gini[index]+0.003, s=label, ha='center', rotation=90)\n", "for index, label in enumerate(img_bands):\n", " ax_entropy.text(index, y=features_entropy[index]+0.003, s=label, ha='center', rotation=90)" - ], - "metadata": { - "id": "Z-0SD4Efk4dB" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "**Q10: What is depicted in the plots above? What do the metrics tell us about the variables we used? How would you interpret the results of these plots, and based on them, would you remove any variables?**\n" - ], "metadata": { "id": "N3f4lE4ox6dn" - } + }, + "source": [ + "**Q12: What is depicted in the plots above? What do the metrics tell us about the variables we used? How would you interpret the results of these plots, and based on them, would you remove any variables?**\n" + ] }, { "cell_type": "markdown", @@ -1215,30 +1208,35 @@ }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DNXuuh7dA6ki" + }, + "outputs": [], "source": [ "## Initialize the random forest classifier\n", "model = ...\n", "\n", "## Fit the classifier to the training data/labels and measure time taken\n", "..." - ], - "metadata": { - "id": "DNXuuh7dA6ki" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Sample new Landsat-8 image from 2018 in the same area" - ], "metadata": { "id": "c_iY9qUj7WJq" - } + }, + "source": [ + "Sample new Landsat-8 image from 2018 in the same area" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "52VYuUJC686F" + }, + "outputs": [], "source": [ "test_image = (\n", " ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')\n", @@ -1251,48 +1249,48 @@ "map.centerObject(point, 8)\n", "map.addLayer(test_image, vis_params, \"Landsat-8\")\n", "map" - ], - "metadata": { - "id": "52VYuUJC686F" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Add indices - you can add your own indices if you like." - ], "metadata": { "id": "-ygW3_nQ8gk0" - } + }, + "source": [ + "Add indices - you can add your own indices if you like." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "itsBGwNb8htp" + }, + "outputs": [], "source": [ "dvi = test_image.select('SR_B5').subtract(test_image.select('SR_B4')).rename('DVI') # Add the bands you need yoursef\n", "test_image = test_image.addBands(dvi)\n", "\n", "ndvi = test_image.normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI') # Add the bands you need yoursef\n", "test_image = test_image.addBands(ndvi)" - ], - "metadata": { - "id": "itsBGwNb8htp" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Sample CLC data in new area" - ], "metadata": { "id": "cvoffvJO7qF2" - } + }, + "source": [ + "Sample CLC data in new area" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "R6YPrXKM7xMd" + }, + "outputs": [], "source": [ "CLC = ee.Image('COPERNICUS/CORINE/V20/100m/2018').select('landcover').clip(test_image.geometry())\n", "### Use the same settings as during training. Take care not to load the 2012 version above here!\n", @@ -1303,47 +1301,47 @@ " }\n", ")\n", "test_lc_reference_pts = test_lc_points.map(generalize_clc_class) # Students do this themselves" - ], - "metadata": { - "id": "R6YPrXKM7xMd" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "Make test dataset" - ], "metadata": { "id": "WrBS4G9E7JM_" - } + }, + "source": [ + "Make test dataset" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Bzkx126168PK" + }, + "outputs": [], "source": [ "test_data = test_image.select(img_bands).sampleRegions(\n", " **{'collection': test_lc_reference_pts, 'properties': [label_col], 'scale': 100}\n", ")\n", "x_test, y_test = feature_collection_to_lists(test_data, img_bands, label_col)" - ], - "metadata": { - "id": "Bzkx126168PK" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "We already have our trained model, and we're not supposed to re-train it on this image. Therefore, all that's left to do is to run this model and test its performance on this new dataset." - ], "metadata": { "id": "50uZymf0_ENJ" - } + }, + "source": [ + "We already have our trained model, and we're not supposed to re-train it on this image. Therefore, all that's left to do is to run this model and test its performance on this new dataset." + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hzY4Lgff_J_T" + }, + "outputs": [], "source": [ "## Use the model to predict all of the validation pixels\n", "test_y_pred = model.predict(x_test)\n", @@ -1352,41 +1350,41 @@ "\n", "test_kappa = cohen_kappa_score(test_y_pred, y_test)\n", "print(\"Test Kappa:\", round(test_kappa, 3))" - ], - "metadata": { - "id": "hzY4Lgff_J_T" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "yQCOZhlo0N_P" + }, "source": [ "Lastly, let's quickly take a look at the classification for the entire area. For this, we re-train the model using packages built into GEE, such that we don't have to convert data back and forth.\n", "\n", "This will also show you how much Google Earth Engine has streamlined the pipeline of working with satellite data!" - ], - "metadata": { - "id": "yQCOZhlo0N_P" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KXpWvNd0JSbo" + }, + "outputs": [], "source": [ "def convert_to_float(feature):\n", " return feature.set(label_col, ee.Number.parse(feature.get(label_col)))\n", "\n", "train_data = train_data.map(convert_to_float)\n", "test_data = test_data.map(convert_to_float)" - ], - "metadata": { - "id": "KXpWvNd0JSbo" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "MNvycQ_tFTW3" + }, + "outputs": [], "source": [ "# Train the model\n", "classifier = ee.Classifier.smileRandomForest(numberOfTrees=250, minLeafPopulation=2, maxNodes=25)\n", @@ -1398,15 +1396,15 @@ "# Calculate the confusion matrix on test set\n", "confusion_matrix = classified_test.errorMatrix(label_col, 'classification')\n", "print('Test Accuracy:', confusion_matrix.accuracy().getInfo())" - ], - "metadata": { - "id": "MNvycQ_tFTW3" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QxzzxUhaFUCG" + }, + "outputs": [], "source": [ "# Classify the test image\n", "classified_image = image.classify(trained_classifier)\n", @@ -1429,36 +1427,30 @@ " 51: '#00FFFF', # Inland waters (Aqua)\n", " 52: '#E0FFFF' # Marine waters (Light Cyan)\n", "}\n", + "palette = [clc_colors[label] for label in clc_colors.keys()]\n", "\n", "# Convert string labels to numeric codes\n", "def classify_to_numeric(image):\n", - " # Create a dictionary that maps string labels to numeric values\n", " label_to_numeric = {label: index for index, label in enumerate(clc_colors.keys())}\n", "\n", - " # Convert string label to numeric value\n", " return image.remap(\n", " list(label_to_numeric.keys()),\n", " list(label_to_numeric.values())\n", " )\n", - "\n", - "# Convert the classified image\n", "numeric_classified_image = classify_to_numeric(classified_image)\n", "\n", - "# Generate a palette for visualization\n", - "palette = [clc_colors[label] for label in clc_colors.keys()]\n", - "\n", "# Add the numeric classified image to the map\n", "map.addLayer(numeric_classified_image, {'palette': palette, 'min': 0, 'max': len(clc_colors) - 1}, 'Classified Image')\n", "map" - ], - "metadata": { - "id": "QxzzxUhaFUCG" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7Q3AlI3XFWs1" + }, + "outputs": [], "source": [ "# In case you're curious, you can see approximations of your unique values with this script:\n", "unique_values = classified_image.reduceRegion(\n", @@ -1468,15 +1460,13 @@ " maxPixels=1e8\n", ").getInfo()\n", "unique_values" - ], - "metadata": { - "id": "7Q3AlI3XFWs1" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "9xYDtaSU7-rk" + }, "source": [ "In principle, the model's results on the test set are what we would report in a paper. Depending on your expectations, you might be surprised with the results of the model compared to the test set. However, it's important to remember a few things:\n", "1. We haven't played around much with the input variabes. There are more tricks that we could tap into that we haven't discussed (e.g. think about how important it is to see what happens around a pixel in order to determine what's happening inside it).\n", @@ -1485,22 +1475,22 @@ "4. We're training it on just 10'000 pixels. This is a limited amount for a hard task, and usually we'd prefer to use much more data.\n", "\n", "And there's many more reasons we could list. The reality is that modelling is a hard task, and a lot of the trial-and-error and failed models get underreported in papers. By showing you the harsh realities of real-life, difficult modelling problems, we hope to have demonstrated that this type of modelling has strong potential, but also that it doesn't come easy. With that in mind, let's reflect a little bit on how we can do better. Please answer the question below, and we will provide feedback and discuss some of the answers." - ], - "metadata": { - "id": "9xYDtaSU7-rk" - } + ] }, { "cell_type": "markdown", - "source": [ - "**Q11: What are your thoughts on the final test set results? Which factors of the image, reference data, and our workflow do you think affected the final performance of the model the most? How do you think the model workflow can be improved to provide better predictons?**" - ], "metadata": { "id": "0KLl5eZRCpK0" - } + }, + "source": [ + "**Q13: What are your thoughts on the final test set results? Which factors of the image, reference data, and our workflow do you think affected the final performance of the model the most? How do you think the model workflow can be improved to provide better predictons?**" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "rucZKCH0F_b2" + }, "source": [ "## Wrapping up\n", "That's it for this practical. There's many more nuances we could get into, but we'd need another lecture or two if we want to cover them all. Hopefully this practical gave you some insights into what it means to run a machine learning pipeline. We also hope that you see now that machine learning isn't a fully-automatic magical problem-solving box, but that there are quite a lot of steps involved and decisions to make. It's up to you, the modeller, to make the right choices with regards to data set-up and model parameter choices. Since this tutorial is getting lengthy already, we unfortunately can't go into more detail on how to improve the model further, especially on the test set. We will provide feedback based on the questions, and provide general tips on what makes a successful ML pipeline. We also hope that this tutorial inspires you to look deeper into modelling, while retaining a critical outlook on what it is and what it can do!\n", @@ -1510,10 +1500,7 @@ "> *All models are wrong, some are useful*\n", "\n", "*George Box, 1976*\n" - ], - "metadata": { - "id": "rucZKCH0F_b2" - } + ] } ], "metadata": {