Upload 6 files
Browse filesfeat: adding models and code
- README.MD +15 -0
- data/dataset_01_all.parquet +3 -0
- ecml_bare_soil_models.ipynb +0 -0
- ecml_conda.yml +24 -0
- utils/__init__.py +0 -0
- utils/helpers.py +46 -0
README.MD
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
This is a code for reproducibility of the Bare Soil models
|
3 |
+
|
4 |
+
|
5 |
+
- data / dataset_01_all.parquet - the bare soil dataset
|
6 |
+
|
7 |
+
- ecml_bare_soil_models.ipynb - bare soil detectors models code, the config for all variants is included in the notebook
|
8 |
+
|
9 |
+
- ecml_conda.yml - the Anacoda configuration file for the virtual environment we utilized
|
10 |
+
|
11 |
+
- utils / helpers.py - additional functions, i.e.: for indices computation
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
+
|
data/dataset_01_all.parquet
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3c5c436929118d2984b4d2303db198969d2e6c76a98b2933a711b7fd1fdd72dd
|
3 |
+
size 312244099
|
ecml_bare_soil_models.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
ecml_conda.yml
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
name: ecml_bare
|
2 |
+
channels:
|
3 |
+
- conda-forge
|
4 |
+
- defaults
|
5 |
+
dependencies:
|
6 |
+
- click=8.0.4
|
7 |
+
- jupyter=1.0.0
|
8 |
+
- pandas=1.4.1
|
9 |
+
- plotly=5.6.0
|
10 |
+
- pyarrow=8.0.0
|
11 |
+
- python=3.9.13
|
12 |
+
- scikit-learn=1.1.3
|
13 |
+
- scipy=1.9.3
|
14 |
+
- seaborn=0.13.2
|
15 |
+
- setuptools=59.5.0
|
16 |
+
- setuptools-git=1.2
|
17 |
+
- statsmodels=0.14.4
|
18 |
+
- streamlit=1.10.0
|
19 |
+
- tqdm=4.63.0
|
20 |
+
- xgboost=1.5.0
|
21 |
+
- yaml=0.2.5
|
22 |
+
- pip:
|
23 |
+
- eli5==0.11.0
|
24 |
+
- pytest==7.2.0
|
utils/__init__.py
ADDED
File without changes
|
utils/helpers.py
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
import seaborn as sns
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
+
|
5 |
+
|
6 |
+
EPS = 1e-10
|
7 |
+
|
8 |
+
|
9 |
+
def set_style() -> None:
|
10 |
+
sns.set(font='serif')
|
11 |
+
sns.set_style("darkgrid", {
|
12 |
+
"font.family": "serif",
|
13 |
+
"font.serif": ["umr10", "Times", "Palatino", "serif"]
|
14 |
+
})
|
15 |
+
plt.rcParams.update({"mathtext.fontset": "cm", "mathtext.rm": "serif"})
|
16 |
+
|
17 |
+
|
18 |
+
# 138, 74, 18, 43
|
19 |
+
def bsi(nir, red, blue, green):
|
20 |
+
return ((nir+green-(red+blue))/(nir+green+red+blue+EPS))
|
21 |
+
|
22 |
+
|
23 |
+
# 138, 74
|
24 |
+
def sr(nir, red):
|
25 |
+
return (nir)/(red+EPS)
|
26 |
+
|
27 |
+
|
28 |
+
# 138, 74
|
29 |
+
def ndvi(nir, red):
|
30 |
+
return (nir-red)/(nir+red+EPS)
|
31 |
+
|
32 |
+
# 138, 74, 18
|
33 |
+
def evi(nir, red, blue):
|
34 |
+
return (2.5*(nir-red))/(nir+6*red-7.5*blue+1+EPS)
|
35 |
+
|
36 |
+
|
37 |
+
# 138, 74, 18
|
38 |
+
def osavi(nir, red, blue):
|
39 |
+
return (nir-red)/(nir+red+0.16+EPS)
|
40 |
+
|
41 |
+
|
42 |
+
def osavi2(nir, red, blue):
|
43 |
+
n = improve_img_levels(nir)
|
44 |
+
r = improve_img_levels(red)
|
45 |
+
b = improve_img_levels(blue)
|
46 |
+
return (1+0.16)*((nir-red)/(nir+red+0.16+EPS))
|