In [ ]:
!wget https://github.com/goto-ru/Unsupervised_ML/raw/20779daf2aebca80bfe38401bc87cf41fc7b493d/03_zebrafish/zebrafish.npy -O zebrafish.npy
#alternative link: https://www.dropbox.com/s/hhep0wj4c11qibu/zebrafish.npy?dl=1
In [ ]:
import numpy as np
data = np.load("zebrafish.npy")/255.
In [ ]:
import matplotlib.pyplot as plt
%matplotlib inline
tick0 = data[:,0]
tick0_image = tick0.reshape(230, 202)
print "размер 1 картинки:", tick0_image.shape
plt.imshow(tick0_image.T);
In [ ]:
#мини-библиотека для рисования рыбы
from zebrafish_drawing_factory import draw_component
draw_component(data[:,0])
In [ ]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=[10,10])
for i in range(0,240,10):
plt.plot(data[i])
In [ ]:
from sklearn.decomposition import PCA
pca = <создайте и обучите PCA с 20+ компонентами>
In [ ]:
data_pca = <преобразуйте данные в пространство главных компонент pca.transform>
In [ ]:
draw_component(data_pca[:,1])
In [ ]:
draw_component(data_pca[:,2])
In [ ]:
from zebrafish_drawing_factory import draw_components
draw_components(data_pca[:,2],data_pca[:,3])
In [ ]:
def extract_features(impulses):
"""given time series(array) of region activity, compute some feature representation of those time series
Ideas:
- fourier transform
- mean, variance and percentiles
- sums of every k-th element with shift b
"""
features = []<любые фичи>
return features
In [ ]:
data_features = np.array(list(map(extract_features, data)))
print "shape:",data_features.shape
In [ ]:
from sklearn.decomposition import PCA
pca = <обучи PCA>
In [ ]:
data_pca = <преобразуй в пространство PCA>
In [ ]:
<визуализируй полученные компоненты>
draw_component(...)
draw_components(...)
In [ ]:
from sklearn.cluster import KMeans
from sklearn.mixture import GMM
<покластеризуй области изображения на основе двух полученных PCA-представлений, используй любой метод на выбор>
In [ ]:
cluster_ids = <предскажи номер кластера для каждого пикселя>
In [ ]:
#cluster_ids должен содержать по 1 чиселке на пиксель
assert np.prod(cluster_ids.shape) == (230*202)
In [ ]:
plt.imshow(cluster_ids.reshape(230,202),cmap='spectral')