In [2]:
%load_ext load_style
%load_style talk.css


The load_style extension is already loaded. To reload it, use:
  %reload_ext load_style

k-means clustering of SST anomalies in the Pacific with scikit-learn


In [3]:
%matplotlib inline
from matplotlib import pyplot as plt

In [4]:
import os
import numpy as np
import pandas as pd
from mpl_toolkits.basemap import Basemap as bm

In [5]:
import xray

defines a function to plot a field (must be 2D)


In [8]:
def plot_field(X, lat, lon, vmin, vmax, step, cmap=plt.get_cmap('jet'), ax=False, title=False, grid=False):
    if not ax: 
        f, ax = plt.subplots(figsize=(10, (X.shape[0] / float(X.shape[1])) * 10))
    m.ax = ax
    im = m.contourf(lons, lats, X, np.arange(vmin, vmax+step, step), latlon=True, cmap=cmap, extend='both', ax=ax)
    m.drawcoastlines()
    if grid: 
        m.drawmeridians(np.arange(0, 360, 60), labels=[0,0,0,1])
        m.drawparallels([-40, 0, 40], labels=[1,0,0,0])
    m.colorbar(im)
    if title: 
        ax.set_title(title)

reads the PCs (obtained before, see sklearn_EOF_decomposition.ipynb)


In [10]:
PCs = pd.read_csv('../outputs/EOF_ERSST_PCs.csv', index_col=0, parse_dates=True)

In [11]:
PCs.head()


Out[11]:
EOF1 EOF2 EOF3 EOF4 EOF5 EOF6 EOF7 EOF8 EOF9
time
1980-01-15 1.100268 -0.473141 1.082161 0.284773 -0.122347 1.691922 -1.243047 2.784704 -1.128199
1980-02-15 1.102311 -0.834280 1.457097 0.714391 -0.377864 1.966317 -2.102305 3.611191 -1.640436
1980-03-15 0.820466 -0.539195 1.220918 0.952919 -0.923083 2.017179 -1.482474 2.650050 -0.094746
1980-04-15 0.983487 -0.890013 0.919056 -0.080937 -1.150593 0.927583 -1.409878 1.554210 0.548674
1980-05-15 0.943051 -1.097338 0.497011 -0.078840 -0.949889 0.541508 -1.854121 1.298071 -0.434732

import the KMeans class from scikit-learn


In [12]:
from sklearn.cluster import KMeans

How many clusters do we want ?


In [13]:
nclusters = 6

instantiates the k-means class


In [14]:
kmeans = KMeans(init='k-means++', n_clusters=nclusters, n_init=10, n_jobs=-1)

fit to the data


In [15]:
kmeans.fit(PCs.values)


Out[15]:
KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=6, n_init=10,
    n_jobs=-1, precompute_distances=True, random_state=None, tol=0.0001,
    verbose=0)

the classes (clusters) are contained in the .labels_ attributes


In [16]:
kmeans.labels_


Out[16]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 1, 5, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 0, 0, 5, 5, 5, 4, 4, 4,
       4, 4, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0, 5, 5, 5, 5, 5,
       5, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 0, 0,
       0, 0, 5, 5, 5, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 5, 2, 2, 5, 0, 0, 0, 0,
       0, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3,
       3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3,
       3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 5, 5, 5,
       5, 5, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1, 1, 0, 5, 5, 5, 1, 1, 1, 1, 1, 1,
       5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
       1, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
       3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 1, 1, 1, 3,
       3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
       1, 1, 1, 5, 1, 1, 1, 3, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1], dtype=int32)

Calculate composite anomalies for each of the clusters


In [17]:
dpath = os.path.join(os.environ['HOME'],'data/SST/ER_SST/V4')
# dpath = os.path.join(os.environ['HOME'],'data/SST/ER_SST')

In [18]:
ncfname = os.path.join(dpath,'ersst.realtime.nc')

In [19]:
dset = xray.open_dataset(ncfname)

In [20]:
dsub = dset.sel(time=slice('1980','2014'),lat=slice(-40,40), lon=slice(120,290))

In [21]:
dsub


Out[21]:
<xray.Dataset>
Dimensions:   (lat: 41, lon: 86, nv: 2, time: 420, zlev: 1)
Coordinates:
  * time      (time) datetime64[ns] 1980-01-15 1980-02-15 1980-03-15 1980-04-15 ...
  * zlev      (zlev) float32 0.0
  * lat       (lat) float32 -40.0 -38.0 -36.0 -34.0 -32.0 -30.0 -28.0 -26.0 -24.0 -22.0 ...
  * lon       (lon) float32 120.0 122.0 124.0 126.0 128.0 130.0 132.0 134.0 136.0 138.0 ...
  * nv        (nv) int64 0 1
Variables:
    lat_bnds  (lat, nv) float32 -41.0 -39.0 -39.0 -37.0 -37.0 -35.0 -35.0 -33.0 -33.0 ...
    lon_bnds  (lon, nv) float32 119.0 121.0 121.0 123.0 123.0 125.0 125.0 127.0 127.0 ...
    sst       (time, zlev, lat, lon) float64 15.36 15.33 15.28 15.26 15.26 15.23 15.23 ...
    anom      (time, zlev, lat, lon) float64 0.04 0.03 0.0 -0.04 -0.1 -0.18 -0.25 -0.32 ...
Attributes:
    Conventions: CF-1.6
    Metadata_Conventions: CF-1.6, Unidata Dataset Discovery v1.0
    metadata_link: C00884
    id: ersst.v4.194801
    naming_authority: gov.noaa.ncdc
    title: NOAA Extended Reconstructed Sea Surface Temperature (ERSST), Version 4 (in situ only)
    summary: ERSST.v4 is developped based on v3b after revisions of 11 parameters using updated data sets and advanced knowledge of ERSST analysis
    institution: NOAA/NESDIS/NCDC
    creator_name: Boyin Huang
    creator_email: boyin.huang@noaa.gov
    date_created: 2014-10-24
    production_version: Beta Version 4
    history: Fri Feb 13 15:18:09 2015: ncrcat ersst.194801_ft.nc ersst.194802_ft.nc ersst.194803_ft.nc ersst.194804_ft.nc ersst.194805_ft.nc ersst.194806_ft.nc ersst.194807_ft.nc ersst.194808_ft.nc ersst.194809_ft.nc ersst.194810_ft.nc ersst.194811_ft.nc ersst.194812_ft.nc ersst.194901_ft.nc ersst.194902_ft.nc ersst.194903_ft.nc ersst.194904_ft.nc ersst.194905_ft.nc ersst.194906_ft.nc ersst.194907_ft.nc ersst.194908_ft.nc ersst.194909_ft.nc ersst.194910_ft.nc ersst.194911_ft.nc ersst.194912_ft.nc ersst.195001_ft.nc ersst.195002_ft.nc ersst.195003_ft.nc ersst.195004_ft.nc ersst.195005_ft.nc ersst.195006_ft.nc ersst.195007_ft.nc ersst.195008_ft.nc ersst.195009_ft.nc ersst.195010_ft.nc ersst.195011_ft.nc ersst.195012_ft.nc ersst.195101_ft.nc ersst.195102_ft.nc ersst.195103_ft.nc ersst.195104_ft.nc ersst.195105_ft.nc ersst.195106_ft.nc ersst.195107_ft.nc ersst.195108_ft.nc ersst.195109_ft.nc ersst.195110_ft.nc ersst.195111_ft.nc ersst.195112_ft.nc ersst.195201_ft.nc ersst.195202_ft.nc ersst.195203_ft.nc ersst.195204_ft.nc ersst.195205_ft.nc ersst.195206_ft.nc ersst.195207_ft.nc ersst.195208_ft.nc ersst.195209_ft.nc ersst.195210_ft.nc ersst.195211_ft.nc ersst.195212_ft.nc ersst.195301_ft.nc ersst.195302_ft.nc ersst.195303_ft.nc ersst.195304_ft.nc ersst.195305_ft.nc ersst.195306_ft.nc ersst.195307_ft.nc ersst.195308_ft.nc ersst.195309_ft.nc ersst.195310_ft.nc ersst.195311_ft.nc ersst.195312_ft.nc ersst.195401_ft.nc ersst.195402_ft.nc ersst.195403_ft.nc ersst.195404_ft.nc ersst.195405_ft.nc ersst.195406_ft.nc ersst.195407_ft.nc ersst.195408_ft.nc ersst.195409_ft.nc ersst.195410_ft.nc ersst.195411_ft.nc ersst.195412_ft.nc ersst.195501_ft.nc ersst.195502_ft.nc ersst.195503_ft.nc ersst.195504_ft.nc ersst.195505_ft.nc ersst.195506_ft.nc ersst.195507_ft.nc ersst.195508_ft.nc ersst.195509_ft.nc ersst.195510_ft.nc ersst.195511_ft.nc ersst.195512_ft.nc ersst.195601_ft.nc ersst.195602_ft.nc ersst.195603_ft.nc ersst.195604_ft.nc ersst.195605_ft.nc ersst.195606_ft.nc ersst.195607_ft.nc ersst.195608_ft.nc ersst.195609_ft.nc ersst.195610_ft.nc ersst.195611_ft.nc ersst.195612_ft.nc ersst.195701_ft.nc ersst.195702_ft.nc ersst.195703_ft.nc ersst.195704_ft.nc ersst.195705_ft.nc ersst.195706_ft.nc ersst.195707_ft.nc ersst.195708_ft.nc ersst.195709_ft.nc ersst.195710_ft.nc ersst.195711_ft.nc ersst.195712_ft.nc ersst.195801_ft.nc ersst.195802_ft.nc ersst.195803_ft.nc ersst.195804_ft.nc ersst.195805_ft.nc ersst.195806_ft.nc ersst.195807_ft.nc ersst.195808_ft.nc ersst.195809_ft.nc ersst.195810_ft.nc ersst.195811_ft.nc ersst.195812_ft.nc ersst.195901_ft.nc ersst.195902_ft.nc ersst.195903_ft.nc ersst.195904_ft.nc ersst.195905_ft.nc ersst.195906_ft.nc ersst.195907_ft.nc ersst.195908_ft.nc ersst.195909_ft.nc ersst.195910_ft.nc ersst.195911_ft.nc ersst.195912_ft.nc ersst.196001_ft.nc ersst.196002_ft.nc ersst.196003_ft.nc ersst.196004_ft.nc ersst.196005_ft.nc ersst.196006_ft.nc ersst.196007_ft.nc ersst.196008_ft.nc ersst.196009_ft.nc ersst.196010_ft.nc ersst.196011_ft.nc ersst.196012_ft.nc ersst.196101_ft.nc ersst.196102_ft.nc ersst.196103_ft.nc ersst.196104_ft.nc ersst.196105_ft.nc ersst.196106_ft.nc ersst.196107_ft.nc ersst.196108_ft.nc ersst.196109_ft.nc ersst.196110_ft.nc ersst.196111_ft.nc ersst.196112_ft.nc ersst.196201_ft.nc ersst.196202_ft.nc ersst.196203_ft.nc ersst.196204_ft.nc ersst.196205_ft.nc ersst.196206_ft.nc ersst.196207_ft.nc ersst.196208_ft.nc ersst.196209_ft.nc ersst.196210_ft.nc ersst.196211_ft.nc ersst.196212_ft.nc ersst.196301_ft.nc ersst.196302_ft.nc ersst.196303_ft.nc ersst.196304_ft.nc ersst.196305_ft.nc ersst.196306_ft.nc ersst.196307_ft.nc ersst.196308_ft.nc ersst.196309_ft.nc ersst.196310_ft.nc ersst.196311_ft.nc ersst.196312_ft.nc ersst.196401_ft.nc ersst.196402_ft.nc ersst.196403_ft.nc ersst.196404_ft.nc ersst.196405_ft.nc ersst.196406_ft.nc ersst.196407_ft.nc ersst.196408_ft.nc ersst.196409_ft.nc ersst.196410_ft.nc ersst.196411_ft.nc ersst.196412_ft.nc ersst.196501_ft.nc ersst.196502_ft.nc ersst.196503_ft.nc ersst.196504_ft.nc ersst.196505_ft.nc ersst.196506_ft.nc ersst.196507_ft.nc ersst.196508_ft.nc ersst.196509_ft.nc ersst.196510_ft.nc ersst.196511_ft.nc ersst.196512_ft.nc ersst.196601_ft.nc ersst.196602_ft.nc ersst.196603_ft.nc ersst.196604_ft.nc ersst.196605_ft.nc ersst.196606_ft.nc ersst.196607_ft.nc ersst.196608_ft.nc ersst.196609_ft.nc ersst.196610_ft.nc ersst.196611_ft.nc ersst.196612_ft.nc ersst.196701_ft.nc ersst.196702_ft.nc ersst.196703_ft.nc ersst.196704_ft.nc ersst.196705_ft.nc ersst.196706_ft.nc ersst.196707_ft.nc ersst.196708_ft.nc ersst.196709_ft.nc ersst.196710_ft.nc ersst.196711_ft.nc ersst.196712_ft.nc ersst.196801_ft.nc ersst.196802_ft.nc ersst.196803_ft.nc ersst.196804_ft.nc ersst.196805_ft.nc ersst.196806_ft.nc ersst.196807_ft.nc ersst.196808_ft.nc ersst.196809_ft.nc ersst.196810_ft.nc ersst.196811_ft.nc ersst.196812_ft.nc ersst.196901_ft.nc ersst.196902_ft.nc ersst.196903_ft.nc ersst.196904_ft.nc ersst.196905_ft.nc ersst.196906_ft.nc ersst.196907_ft.nc ersst.196908_ft.nc ersst.196909_ft.nc ersst.196910_ft.nc ersst.196911_ft.nc ersst.196912_ft.nc ersst.197001_ft.nc ersst.197002_ft.nc ersst.197003_ft.nc ersst.197004_ft.nc ersst.197005_ft.nc ersst.197006_ft.nc ersst.197007_ft.nc ersst.197008_ft.nc ersst.197009_ft.nc ersst.197010_ft.nc ersst.197011_ft.nc ersst.197012_ft.nc ersst.197101_ft.nc ersst.197102_ft.nc ersst.197103_ft.nc ersst.197104_ft.nc ersst.197105_ft.nc ersst.197106_ft.nc ersst.197107_ft.nc ersst.197108_ft.nc ersst.197109_ft.nc ersst.197110_ft.nc ersst.197111_ft.nc ersst.197112_ft.nc ersst.197201_ft.nc ersst.197202_ft.nc ersst.197203_ft.nc ersst.197204_ft.nc ersst.197205_ft.nc ersst.197206_ft.nc ersst.197207_ft.nc ersst.197208_ft.nc ersst.197209_ft.nc ersst.197210_ft.nc ersst.197211_ft.nc ersst.197212_ft.nc ersst.197301_ft.nc ersst.197302_ft.nc ersst.197303_ft.nc ersst.197304_ft.nc ersst.197305_ft.nc ersst.197306_ft.nc ersst.197307_ft.nc ersst.197308_ft.nc ersst.197309_ft.nc ersst.197310_ft.nc ersst.197311_ft.nc ersst.197312_ft.nc ersst.197401_ft.nc ersst.197402_ft.nc ersst.197403_ft.nc ersst.197404_ft.nc ersst.197405_ft.nc ersst.197406_ft.nc ersst.197407_ft.nc ersst.197408_ft.nc ersst.197409_ft.nc ersst.197410_ft.nc ersst.197411_ft.nc ersst.197412_ft.nc ersst.197501_ft.nc ersst.197502_ft.nc ersst.197503_ft.nc ersst.197504_ft.nc ersst.197505_ft.nc ersst.197506_ft.nc ersst.197507_ft.nc ersst.197508_ft.nc ersst.197509_ft.nc ersst.197510_ft.nc ersst.197511_ft.nc ersst.197512_ft.nc ersst.197601_ft.nc ersst.197602_ft.nc ersst.197603_ft.nc ersst.197604_ft.nc ersst.197605_ft.nc ersst.197606_ft.nc ersst.197607_ft.nc ersst.197608_ft.nc ersst.197609_ft.nc ersst.197610_ft.nc ersst.197611_ft.nc ersst.197612_ft.nc ersst.197701_ft.nc ersst.197702_ft.nc ersst.197703_ft.nc ersst.197704_ft.nc ersst.197705_ft.nc ersst.197706_ft.nc ersst.197707_ft.nc ersst.197708_ft.nc ersst.197709_ft.nc ersst.197710_ft.nc ersst.197711_ft.nc ersst.197712_ft.nc ersst.197801_ft.nc ersst.197802_ft.nc ersst.197803_ft.nc ersst.197804_ft.nc ersst.197805_ft.nc ersst.197806_ft.nc ersst.197807_ft.nc ersst.197808_ft.nc ersst.197809_ft.nc ersst.197810_ft.nc ersst.197811_ft.nc ersst.197812_ft.nc ersst.197901_ft.nc ersst.197902_ft.nc ersst.197903_ft.nc ersst.197904_ft.nc ersst.197905_ft.nc ersst.197906_ft.nc ersst.197907_ft.nc ersst.197908_ft.nc ersst.197909_ft.nc ersst.197910_ft.nc ersst.197911_ft.nc ersst.197912_ft.nc ersst.198001_ft.nc ersst.198002_ft.nc ersst.198003_ft.nc ersst.198004_ft.nc ersst.198005_ft.nc ersst.198006_ft.nc ersst.198007_ft.nc ersst.198008_ft.nc ersst.198009_ft.nc ersst.198010_ft.nc ersst.198011_ft.nc ersst.198012_ft.nc ersst.198101_ft.nc ersst.198102_ft.nc ersst.198103_ft.nc ersst.198104_ft.nc ersst.198105_ft.nc ersst.198106_ft.nc ersst.198107_ft.nc ersst.198108_ft.nc ersst.198109_ft.nc ersst.198110_ft.nc ersst.198111_ft.nc ersst.198112_ft.nc ersst.198201_ft.nc ersst.198202_ft.nc ersst.198203_ft.nc ersst.198204_ft.nc ersst.198205_ft.nc ersst.198206_ft.nc ersst.198207_ft.nc ersst.198208_ft.nc ersst.198209_ft.nc ersst.198210_ft.nc ersst.198211_ft.nc ersst.198212_ft.nc ersst.198301_ft.nc ersst.198302_ft.nc ersst.198303_ft.nc ersst.198304_ft.nc ersst.198305_ft.nc ersst.198306_ft.nc ersst.198307_ft.nc ersst.198308_ft.nc ersst.198309_ft.nc ersst.198310_ft.nc ersst.198311_ft.nc ersst.198312_ft.nc ersst.198401_ft.nc ersst.198402_ft.nc ersst.198403_ft.nc ersst.198404_ft.nc ersst.198405_ft.nc ersst.198406_ft.nc ersst.198407_ft.nc ersst.198408_ft.nc ersst.198409_ft.nc ersst.198410_ft.nc ersst.198411_ft.nc ersst.198412_ft.nc ersst.198501_ft.nc ersst.198502_ft.nc ersst.198503_ft.nc ersst.198504_ft.nc ersst.198505_ft.nc ersst.198506_ft.nc ersst.198507_ft.nc ersst.198508_ft.nc ersst.198509_ft.nc ersst.198510_ft.nc ersst.198511_ft.nc ersst.198512_ft.nc ersst.198601_ft.nc ersst.198602_ft.nc ersst.198603_ft.nc ersst.198604_ft.nc ersst.198605_ft.nc ersst.198606_ft.nc ersst.198607_ft.nc ersst.198608_ft.nc ersst.198609_ft.nc ersst.198610_ft.nc ersst.198611_ft.nc ersst.198612_ft.nc ersst.198701_ft.nc ersst.198702_ft.nc ersst.198703_ft.nc ersst.198704_ft.nc ersst.198705_ft.nc ersst.198706_ft.nc ersst.198707_ft.nc ersst.198708_ft.nc ersst.198709_ft.nc ersst.198710_ft.nc ersst.198711_ft.nc ersst.198712_ft.nc ersst.198801_ft.nc ersst.198802_ft.nc ersst.198803_ft.nc ersst.198804_ft.nc ersst.198805_ft.nc ersst.198806_ft.nc ersst.198807_ft.nc ersst.198808_ft.nc ersst.198809_ft.nc ersst.198810_ft.nc ersst.198811_ft.nc ersst.198812_ft.nc ersst.198901_ft.nc ersst.198902_ft.nc ersst.198903_ft.nc ersst.198904_ft.nc ersst.198905_ft.nc ersst.198906_ft.nc ersst.198907_ft.nc ersst.198908_ft.nc ersst.198909_ft.nc ersst.198910_ft.nc ersst.198911_ft.nc ersst.198912_ft.nc ersst.199001_ft.nc ersst.199002_ft.nc ersst.199003_ft.nc ersst.199004_ft.nc ersst.199005_ft.nc ersst.199006_ft.nc ersst.199007_ft.nc ersst.199008_ft.nc ersst.199009_ft.nc ersst.199010_ft.nc ersst.199011_ft.nc ersst.199012_ft.nc ersst.199101_ft.nc ersst.199102_ft.nc ersst.199103_ft.nc ersst.199104_ft.nc ersst.199105_ft.nc ersst.199106_ft.nc ersst.199107_ft.nc ersst.199108_ft.nc ersst.199109_ft.nc ersst.199110_ft.nc ersst.199111_ft.nc ersst.199112_ft.nc ersst.199201_ft.nc ersst.199202_ft.nc ersst.199203_ft.nc ersst.199204_ft.nc ersst.199205_ft.nc ersst.199206_ft.nc ersst.199207_ft.nc ersst.199208_ft.nc ersst.199209_ft.nc ersst.199210_ft.nc ersst.199211_ft.nc ersst.199212_ft.nc ersst.199301_ft.nc ersst.199302_ft.nc ersst.199303_ft.nc ersst.199304_ft.nc ersst.199305_ft.nc ersst.199306_ft.nc ersst.199307_ft.nc ersst.199308_ft.nc ersst.199309_ft.nc ersst.199310_ft.nc ersst.199311_ft.nc ersst.199312_ft.nc ersst.199401_ft.nc ersst.199402_ft.nc ersst.199403_ft.nc ersst.199404_ft.nc ersst.199405_ft.nc ersst.199406_ft.nc ersst.199407_ft.nc ersst.199408_ft.nc ersst.199409_ft.nc ersst.199410_ft.nc ersst.199411_ft.nc ersst.199412_ft.nc ersst.199501_ft.nc ersst.199502_ft.nc ersst.199503_ft.nc ersst.199504_ft.nc ersst.199505_ft.nc ersst.199506_ft.nc ersst.199507_ft.nc ersst.199508_ft.nc ersst.199509_ft.nc ersst.199510_ft.nc ersst.199511_ft.nc ersst.199512_ft.nc ersst.199601_ft.nc ersst.199602_ft.nc ersst.199603_ft.nc ersst.199604_ft.nc ersst.199605_ft.nc ersst.199606_ft.nc ersst.199607_ft.nc ersst.199608_ft.nc ersst.199609_ft.nc ersst.199610_ft.nc ersst.199611_ft.nc ersst.199612_ft.nc ersst.199701_ft.nc ersst.199702_ft.nc ersst.199703_ft.nc ersst.199704_ft.nc ersst.199705_ft.nc ersst.199706_ft.nc ersst.199707_ft.nc ersst.199708_ft.nc ersst.199709_ft.nc ersst.199710_ft.nc ersst.199711_ft.nc ersst.199712_ft.nc ersst.199801_ft.nc ersst.199802_ft.nc ersst.199803_ft.nc ersst.199804_ft.nc ersst.199805_ft.nc ersst.199806_ft.nc ersst.199807_ft.nc ersst.199808_ft.nc ersst.199809_ft.nc ersst.199810_ft.nc ersst.199811_ft.nc ersst.199812_ft.nc ersst.199901_ft.nc ersst.199902_ft.nc ersst.199903_ft.nc ersst.199904_ft.nc ersst.199905_ft.nc ersst.199906_ft.nc ersst.199907_ft.nc ersst.199908_ft.nc ersst.199909_ft.nc ersst.199910_ft.nc ersst.199911_ft.nc ersst.199912_ft.nc ersst.200001_ft.nc ersst.200002_ft.nc ersst.200003_ft.nc ersst.200004_ft.nc ersst.200005_ft.nc ersst.200006_ft.nc ersst.200007_ft.nc ersst.200008_ft.nc ersst.200009_ft.nc ersst.200010_ft.nc ersst.200011_ft.nc ersst.200012_ft.nc ersst.200101_ft.nc ersst.200102_ft.nc ersst.200103_ft.nc ersst.200104_ft.nc ersst.200105_ft.nc ersst.200106_ft.nc ersst.200107_ft.nc ersst.200108_ft.nc ersst.200109_ft.nc ersst.200110_ft.nc ersst.200111_ft.nc ersst.200112_ft.nc ersst.200201_ft.nc ersst.200202_ft.nc ersst.200203_ft.nc ersst.200204_ft.nc ersst.200205_ft.nc ersst.200206_ft.nc ersst.200207_ft.nc ersst.200208_ft.nc ersst.200209_ft.nc ersst.200210_ft.nc ersst.200211_ft.nc ersst.200212_ft.nc ersst.200301_ft.nc ersst.200302_ft.nc ersst.200303_ft.nc ersst.200304_ft.nc ersst.200305_ft.nc ersst.200306_ft.nc ersst.200307_ft.nc ersst.200308_ft.nc ersst.200309_ft.nc ersst.200310_ft.nc ersst.200311_ft.nc ersst.200312_ft.nc ersst.200401_ft.nc ersst.200402_ft.nc ersst.200403_ft.nc ersst.200404_ft.nc ersst.200405_ft.nc ersst.200406_ft.nc ersst.200407_ft.nc ersst.200408_ft.nc ersst.200409_ft.nc ersst.200410_ft.nc ersst.200411_ft.nc ersst.200412_ft.nc ersst.200501_ft.nc ersst.200502_ft.nc ersst.200503_ft.nc ersst.200504_ft.nc ersst.200505_ft.nc ersst.200506_ft.nc ersst.200507_ft.nc ersst.200508_ft.nc ersst.200509_ft.nc ersst.200510_ft.nc ersst.200511_ft.nc ersst.200512_ft.nc ersst.200601_ft.nc ersst.200602_ft.nc ersst.200603_ft.nc ersst.200604_ft.nc ersst.200605_ft.nc ersst.200606_ft.nc ersst.200607_ft.nc ersst.200608_ft.nc ersst.200609_ft.nc ersst.200610_ft.nc ersst.200611_ft.nc ersst.200612_ft.nc ersst.200701_ft.nc ersst.200702_ft.nc ersst.200703_ft.nc ersst.200704_ft.nc ersst.200705_ft.nc ersst.200706_ft.nc ersst.200707_ft.nc ersst.200708_ft.nc ersst.200709_ft.nc ersst.200710_ft.nc ersst.200711_ft.nc ersst.200712_ft.nc ersst.200801_ft.nc ersst.200802_ft.nc ersst.200803_ft.nc ersst.200804_ft.nc ersst.200805_ft.nc ersst.200806_ft.nc ersst.200807_ft.nc ersst.200808_ft.nc ersst.200809_ft.nc ersst.200810_ft.nc ersst.200811_ft.nc ersst.200812_ft.nc ersst.200901_ft.nc ersst.200902_ft.nc ersst.200903_ft.nc ersst.200904_ft.nc ersst.200905_ft.nc ersst.200906_ft.nc ersst.200907_ft.nc ersst.200908_ft.nc ersst.200909_ft.nc ersst.200910_ft.nc ersst.200911_ft.nc ersst.200912_ft.nc ersst.201001_ft.nc ersst.201002_ft.nc ersst.201003_ft.nc ersst.201004_ft.nc ersst.201005_ft.nc ersst.201006_ft.nc ersst.201007_ft.nc ersst.201008_ft.nc ersst.201009_ft.nc ersst.201010_ft.nc ersst.201011_ft.nc ersst.201012_ft.nc ersst.201101_ft.nc ersst.201102_ft.nc ersst.201103_ft.nc ersst.201104_ft.nc ersst.201105_ft.nc ersst.201106_ft.nc ersst.201107_ft.nc ersst.201108_ft.nc ersst.201109_ft.nc ersst.201110_ft.nc ersst.201111_ft.nc ersst.201112_ft.nc ersst.201201_ft.nc ersst.201202_ft.nc ersst.201203_ft.nc ersst.201204_ft.nc ersst.201205_ft.nc ersst.201206_ft.nc ersst.201207_ft.nc ersst.201208_ft.nc ersst.201209_ft.nc ersst.201210_ft.nc ersst.201211_ft.nc ersst.201212_ft.nc ersst.201301_ft.nc ersst.201302_ft.nc ersst.201303_ft.nc ersst.201304_ft.nc ersst.201305_ft.nc ersst.201306_ft.nc ersst.201307_ft.nc ersst.201308_ft.nc ersst.201309_ft.nc ersst.201310_ft.nc ersst.201311_ft.nc ersst.201312_ft.nc ersst.201401_ft.nc ersst.201402_ft.nc ersst.201403_ft.nc ersst.201404_ft.nc ersst.201405_ft.nc ersst.201406_ft.nc ersst.201407_ft.nc ersst.201408_ft.nc ersst.201409_ft.nc ersst.201410_ft.nc ersst.201411_ft.nc ersst.201412_ft.nc ersst.realtime.nc
Version 4 based on Version 3b
    publisher_name: Boyin Huang
    publisher_email: boyin.huang@noaa.gov
    publisher_url: http://www.ncdc.noaa.gov
    creator_url: http://www.ncdc.noaa.gov
    license: No constraints on data access or use
    time_coverage_start: 1948-01-15T000000Z
    time_coverage_end: 1948-01-15T000000Z
    geospatial_lon_min: -1.0f
    geospatial_lon_max: 359.0f
    geospatial_lat_min: -89.0f
    geospatial_lat_max: 89.0f
    geospatial_lat_units: degrees_north
    geospatial_lat_resolution: 2.0
    geospatial_lon_units: degrees_east
    geospatial_lon_resolution: 2.0
    spatial_resolution: 2.0 degree grid
    cdm_data_type: Grid
    processing_level: L4
    standard_name_vocabulary: CF Standard Name Table v27
    keywords: Earth Science &gt; Oceans &gt; Ocean Temperature &gt; Sea Surface Temperature &gt
    keywords_vocabulary: NASA Global Change Master Directory (GCMD) Science Keywords
    project: NOAA Extended Reconstructed Sea Surface Temperature (ERSST)
    platform: Ship and Buoy SSTs from ICOADS R2.5 and NCEP GTS
    instrument: Conventional thermometers
    source: ICOADS R2.5 SST, NCEP GTS SST, HadISST ice, NCEP ice
    comment: SSTs were observed by conventional thermometers in Buckets (insulated or un-insulated canvas and wooded buckets) or Engine Room Intaker
    references: Huang et al, 2014: Extended Reconstructed Sea Surface Temperatures Version 4 (ERSST.v4), Part I. Upgrades and Intercomparisons. Journal of Climate, DOI: 10.1175/JCLI-D-14-00006.1.
    climatology: Climatology is based on 1971-2000 SST, Xue, Y., T. M. Smith, and R. W. Reynolds, 2003: Interdecadal changes of 30-yr SST normals during 1871.2000. Journal of Climate, 16, 1601-1612.
    description: In situ data: ICOADS2.5 before 2007 and NCEP in situ data from 2008 to present. Ice data: HadISST ice before 2010 and NCEP ice after 2010.
    nco_openmp_thread_number: 1

In [22]:
lat = dsub['lat'].values
lon = dsub['lon'].values
lons, lats = np.meshgrid(lon, lat)

In [23]:
labels = pd.DataFrame(kmeans.labels_, index=dsub['time'], columns=['cluster'])

In [24]:
labels.head()


Out[24]:
cluster
time
1980-01-15 0
1980-02-15 0
1980-03-15 0
1980-04-15 0
1980-05-15 0

In [25]:
pd.unique(labels.cluster)


Out[25]:
array([0, 2, 5, 1, 4, 3])

In [26]:
c = 0

In [28]:
index = labels.query('cluster == {}'.format(c))

In [30]:
cluster = dsub.sel(time=index.index).mean('time')

In [31]:
plt.imshow(cluster['anom'][0,::-1,:])


Out[31]:
<matplotlib.image.AxesImage at 0x10a84e750>

In [32]:
m = bm(projection='cyl',llcrnrlat=-40,urcrnrlat=40,\
            llcrnrlon=120,urcrnrlon=290,\
            lat_ts=0,resolution='c')

In [33]:
f, axes = plt.subplots(nrows=3,ncols=2, figsize=(14,10))
f.subplots_adjust(hspace=0.1, wspace=0.1)
axes = axes.flatten()
for c in xrange(nclusters):
    index = labels.query('cluster == {}'.format(c))
    cluster = dsub.sel(time=index.index).mean('time')
    ax = axes[c]
    plot_field(cluster['anom'][0,:,:], lats, lons, -2, 2, 0.1, \
               ax=ax, cmap=plt.get_cmap('RdBu_r'), \
               title="Cluster #{}: {} months".format(c+1, len(index)))



In [ ]: