<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Примеры анализа данных аэрокосмической съемки
Дмитрий Колесов (kolesov.dm@gmail.com)
NextGIS
О чем пойдет речь
Что это за такие "Данные аэрокосмической съемки"
Как их обрабатывать
На чем можно споткнуться
Где их брать
Исторический обзор
Появление аэрофотосьемки
Ручное дешифрирование
Многозональная (многоканальная) съемка
Примеры задач
Применяется, в задачах, где нужно
Step1:  Не все так плохо, если
создать больше классов;
аккуратнее выбирать обучающие примеры;
выбирать примеры не с одного участка снимка, а разных;
...
<img src="IMG/try.jpg" >
Подводные камни и как с ними бороться
Модель, обученная на одной сцене обычно не годится для анализа другой
<ASSISTANT_TASK:>
Python Code:
import numpy as np
import pandas as pd
points = pd.read_csv('rand.txt')
points.tail()
y = points["class"]
X = points[['r1', 'r2', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10', 'r11']]
# Разбиваем на обучающее и тестовое множества:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# Нормируем входные данные:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
from sklearn.model_selection import cross_val_score
from sklearn.metrics import confusion_matrix
from sklearn.linear_model import LogisticRegression
# from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
# Подгоняем модель
pipe_lr = Pipeline([
        # ('pca', PCA(n_components=10)), 
        ('clf', LogisticRegression(random_state=1))])
param_range = [0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0]
param_grid = [{'clf__C': param_range, 'clf__penalty': ['l1', 'l2']}]
gs = GridSearchCV(estimator=pipe_lr, param_grid=param_grid,
    scoring='accuracy', cv=10)
gs = gs.fit(X, y)
print(gs.best_score_)
print(gs.best_params_)
clf = gs.best_estimator_
clf.fit(X_train, y_train)
print('Test accuracy: %.3f' % clf.score(X_test, y_test))
Explanation: Примеры анализа данных аэрокосмической съемки
Дмитрий Колесов (kolesov.dm@gmail.com)
NextGIS
О чем пойдет речь
Что это за такие "Данные аэрокосмической съемки"
Как их обрабатывать
На чем можно споткнуться
Где их брать
Исторический обзор
Появление аэрофотосьемки
Ручное дешифрирование
Многозональная (многоканальная) съемка
Примеры задач
Применяется, в задачах, где нужно:
обследовать большие территории (например, экологические исследования Сибири);
наземные исследования слишком дороги/опасны;
нужно быстрое реагирование (например, пожары);
...
Сферы применения:
Нефтегазовая отрасль.
Экология.
Военное дело.
Сельское хозяйство.
...
Пара наших задач
Поиск незаконных рубок леса
<img src="IMG/crop0.jpg" >
Пример: До вырубки, После вырубки. Дальний Восток, зимняя рубка. Распознать ее можно по более светлому пятну по сравнению с окружающим его участком. Сам участок помимо того, что поменял цвет, стал более "шершавый" на вид.
Поиск посадок марихуаны в Калифорнии
<img src="IMG/KD2S.png"> 
Да, почти на взлетном поле
Немного теории
Солнечное излучение и датчик
<img src="IMG/Dos_img_1.jpg">
Многоканальные снимки
<img src="IMG/Reflectance.png" >
Пространство признаков
<img src="IMG/feature_space.png" >
Пример №1: Landsat-8, Казань
Спектральный канал | Длины волн | Разрешение (размер 1 пикселя)
----------------------|---------|---
Канал 1 — Побережья и аэрозоли (Coastal / Aerosol, New Deep Blue) | 0.433 — 0.453 мкм | 30 м
Канал 2 — Синий (Blue) | 0.450 — 0.515 мкм | 30 м
Канал 3 — Зелёный (Green) | 0.525 — 0.600 мкм | 30 м
Канал 4 — Красный (Red) | 0.630 — 0.680 мкм | 30 м
Канал 5 — Ближний ИК (Near Infrared, NIR) | 0.845 — 0.885 мкм | 30 м
Канал 6 — Ближний ИК (Short Wavelength Infrared, SWIR 2) | 1.560 — 1.660 мкм | 30 м
Канал 7 — Ближний ИК (Short Wavelength Infrared, SWIR 3) | 2.100 — 2.300 мкм | 30 м
Канал 8 — Панхроматический (Panchromatic, PAN) | 0.500 — 0.680 мкм | 15 м
Канал 9 — Перистые облака (Cirrus, SWIR) | 1.360 — 1.390 мкм | 30 м
Канал 10 — Дальний ИК (Long Wavelength Infrared, TIR1) |10.30 — 11.30 мкм |100 м
Канал 11 — Дальний ИК (Long Wavelength Infrared, TIR2) |11.50 — 12.50 мкм | 100 м
End of explanation
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
x = np.array(range(72))
y = 10 + 0.5*x + 10*np.sin(x)
plt.plot(x,y)
plot_acf(y);
Explanation: Не все так плохо, если
создать больше классов;
аккуратнее выбирать обучающие примеры;
выбирать примеры не с одного участка снимка, а разных;
...
<img src="IMG/try.jpg" >
Подводные камни и как с ними бороться
Модель, обученная на одной сцене обычно не годится для анализа другой:
Другое состояние атмосферы.
Произошли изменения земной поверности (растительность уже поменялась).
Модель, хоршо работающая на одном участке снимка, не работает на другом:
Другое состояние атмосферы.
Иной рельеф.
Состояние атмосферы. Атмосферная коррекция
<img src="IMG/Dos_img_1.jpg">
Влияние рельефа. Топографическая коррекция
<img src="IMG/reflection.png" >
Пространственная автокорреляция и обучение моделей
End of explanation
<END_TASK>