In [1]:
import numpy as np
import scipy
import pandas
import treelib
import pyclust
import pandas

import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline

In [2]:
pyclust.__version__


Out[2]:
'0.1.3'

In [4]:
#### co-centric circles
d = np.random.uniform(low=-6, high=6, size=(1000,2))

d1a = d[(d[:,0]**2 + d[:,1]**2 <36) & (d[:,0]**2 + d[:,1]**2 >25), :]

d = np.random.uniform(low=-4, high=4, size=(800,2))

#d1b = d[(d[:,0]**2 + d[:,1]**2 <9) & (d[:,0]**2 + d[:,1]**2 > 4),:]
d1c = d[(d[:,0]**2 + d[:,1]**2 <=1), :]

X = np.vstack((d1a,d1c))

print("Cluster sizes %s "%[d1a.shape[0], d1c.shape[0]]) #, d1c.shape[0]])


Cluster sizes [250, 43] 

In [5]:
def plot_scatter(X, labels1=None, labels2=None, titles=["Scatter Plot", None]):
    
    labels1 = np.zeros(shape=X.shape[0], dtype=int) if labels1 is None else labels1
    
    colors = ['b', 'r', 'g', 'm', 'y']
    col_dict = {}
    
    for i,lab in enumerate(np.unique(labels1)):
        col_dict[lab] = colors[i]
        
    
    if labels2 is None:
        fig = plt.figure(1, figsize=(8,6))
        ax1 = fig.add_subplot(1, 1, 1)
    else:
        fig = plt.figure(1, figsize=(10,6))
        ax1 = fig.add_subplot(1, 2, 1)

    for i in np.unique(labels1):
        indx = np.where(labels1 == i)[0]
        plt.scatter(X[indx,0], X[indx,1], color=col_dict[i], marker='o', s=100, alpha=0.5)

    plt.setp(ax1.get_xticklabels(), rotation='horizontal', fontsize=16)
    plt.setp(ax1.get_yticklabels(), rotation='vertical', fontsize=16)

    plt.xlabel('$x_1$', size=20)
    plt.ylabel('$x_2$', size=20)
    plt.title(titles[0], size=20)

    
    if labels2 is not None:
        ax2 = fig.add_subplot(1, 2, 2)
        for i in np.unique(labels2):
            indx = np.where(labels2 == i)[0]
            plt.scatter(X[indx,0], X[indx,1], color=col_dict[i], marker='o', s=100, alpha=0.5)

        plt.setp(ax1.get_xticklabels(), rotation='horizontal', fontsize=16)
        plt.setp(ax1.get_yticklabels(), rotation='vertical', fontsize=16)

        plt.xlabel('$x_1$', size=20)
        plt.ylabel('$x_2$', size=20)
        plt.title(titles[1], size=20)
        
    plt.show()
    
## test plot original data
plot_scatter(X, labels1=None, titles=["Scatter Plot: Original Labels"])



In [6]:
## Performing KMeans  
km = pyclust.KMeans(n_clusters=2, n_trials=50)

km.fit(X)

### Performing Kernel K-means

kkm = pyclust.KernelKMeans(n_clusters=2, kernel='rbf', params={'gamma':0.5})
kkm.fit(X)
print("Converged after %d iterations"%kkm.n_iter_)
plot_scatter(X, labels1=km.labels_, labels2=kkm.labels_, titles=["KMeans", "Kernel KMeans"])


0 inf
0 15 [ 114.19058941  142.64795074] 256.838540159 inf
[1 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1
 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1
 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0
 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1
 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 0
 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
1 256.838540159
1 3 [ 124.39356131  132.89571407] 257.289275388 256.838540159
2 256.838540159
2 4 [ 101.54273232  157.02254674] 258.565279057 256.838540159
3 256.838540159
3 6 [ 166.7103518    88.98589652] 255.696248322 256.838540159
[0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0
 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1
 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0
 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0
 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
4 255.696248322
4 7 [ 162.04093402   93.90167427] 255.942608289 255.696248322
5 255.696248322
5 9 [ 143.14512522  114.53419721] 257.679322438 255.696248322
6 255.696248322
6 6 [ 139.46737473  118.23823286] 257.705607589 255.696248322
7 255.696248322
7 6 [ 163.755599     94.46269783] 258.218296836 255.696248322
8 255.696248322
8 11 [  40.69567663  210.95232398] 251.648000607 255.696248322
[1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1
 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1
 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
9 251.648000607
9 11 [ 150.37638304  106.60423064] 256.980613683 251.648000607
10 251.648000607
10 3 [ 122.83904461  133.58149228] 256.420536882 251.648000607
11 251.648000607
11 8 [ 150.6253834   104.21770193] 254.843085333 251.648000607
12 251.648000607
12 10 [ 107.44047791  150.81946185] 258.259939758 251.648000607
13 251.648000607
13 2 [ 120.41378726  137.91124585] 258.325033107 251.648000607
14 251.648000607
14 9 [ 173.26978782   85.72888815] 258.99867597 251.648000607
15 251.648000607
15 4 [ 124.0685393   133.54841173] 257.616951027 251.648000607
16 251.648000607
16 7 [  73.02145407  181.8386668 ] 254.860120868 251.648000607
17 251.648000607
17 3 [ 108.15071909  148.60805467] 256.758773768 251.648000607
18 251.648000607
18 5 [ 113.00828911  142.36236025] 255.370649358 251.648000607
19 251.648000607
19 7 [ 157.26164781   98.59674704] 255.858394843 251.648000607
20 251.648000607
20 7 [ 105.78878843  150.78193412] 256.570722552 251.648000607
21 251.648000607
21 4 [ 115.92148295  141.29966358] 257.221146525 251.648000607
22 251.648000607
22 4 [ 150.58546229  106.89136372] 257.476826008 251.648000607
23 251.648000607
23 3 [ 148.73425876  108.54209888] 257.276357641 251.648000607
24 251.648000607
24 3 [ 143.93184724  113.12226667] 257.054113914 251.648000607
25 251.648000607
25 8 [ 124.06661348  133.20826455] 257.274878026 251.648000607
26 251.648000607
26 9 [ 155.49151587  101.64067797] 257.13219384 251.648000607
27 251.648000607
27 2 [ 173.30795166   83.47348529] 256.781436949 251.648000607
28 251.648000607
28 8 [ 163.23764212   93.89048713] 257.128129253 251.648000607
29 251.648000607
29 3 [ 151.34768989  105.82872398] 257.176413869 251.648000607
30 251.648000607
30 2 [ 106.02609395  150.72308071] 256.749174661 251.648000607
31 251.648000607
31 15 [ 139.33713434  118.19066797] 257.527802314 251.648000607
32 251.648000607
32 5 [  73.85490437  180.66862065] 254.523525028 251.648000607
33 251.648000607
33 8 [ 209.02262288   43.08420058] 252.106823462 251.648000607
34 251.648000607
34 4 [ 144.06273891  111.94307777] 256.005816689 251.648000607
35 251.648000607
35 6 [ 109.14726627  148.28081037] 257.428076641 251.648000607
36 251.648000607
36 3 [ 138.60610994  117.70478984] 256.310899776 251.648000607
37 251.648000607
37 5 [ 103.09173731  154.13866619] 257.230403503 251.648000607
38 251.648000607
38 8 [ 152.42772107  104.3830366 ] 256.810757668 251.648000607
39 251.648000607
39 3 [  98.41143404  159.30869245] 257.720126491 251.648000607
40 251.648000607
40 7 [ 125.06774826  132.89400248] 257.961750739 251.648000607
41 251.648000607
41 5 [ 148.51282769  110.44011341] 258.952941098 251.648000607
42 251.648000607
42 6 [ 117.32612809  140.63466758] 257.960795668 251.648000607
43 251.648000607
43 6 [ 120.07798241  136.73631288] 256.814295297 251.648000607
44 251.648000607
44 4 [ 153.69895085  103.29428824] 256.993239086 251.648000607
45 251.648000607
45 2 [ 131.05031426  126.54081579] 257.591130051 251.648000607
46 251.648000607
46 3 [ 130.72004191  127.25368465] 257.973726557 251.648000607
47 251.648000607
47 8 [ 155.20435823  101.63027703] 256.834635265 251.648000607
48 251.648000607
48 5 [ 158.55608074   99.19179356] 257.747874299 251.648000607
49 251.648000607
49 4 [ 145.87010825  111.02886975] 256.898977997 251.648000607
50 251.648000607
50 8 [ 103.64342091  152.24373706] 255.887157962 251.648000607
51 251.648000607
51 7 [ 185.61383716   68.25644493] 253.870282084 251.648000607
52 251.648000607
52 7 [ 163.28871519   93.77811972] 257.066834912 251.648000607
53 251.648000607
53 3 [ 159.71727049   98.71642575] 258.433696241 251.648000607
54 251.648000607
54 4 [ 174.57531125   81.65984271] 256.235153961 251.648000607
55 251.648000607
55 10 [  68.97223497  185.6779818 ] 254.650216773 251.648000607
56 251.648000607
56 4 [ 137.81932994  120.56968551] 258.389015445 251.648000607
57 251.648000607
57 16 [ 172.2331721    84.30404363] 256.537215731 251.648000607
58 251.648000607
58 10 [ 114.72307523  140.49308086] 255.216156084 251.648000607
59 251.648000607
59 5 [ 119.64863165  138.63045649] 258.279088135 251.648000607
60 251.648000607
60 4 [  77.47806135  178.37458633] 255.852647673 251.648000607
61 251.648000607
61 5 [ 123.35106043  132.79087899] 256.141939424 251.648000607
62 251.648000607
62 13 [  66.16267481  188.39923438] 254.5619092 251.648000607
63 251.648000607
63 13 [  66.16267481  188.39923438] 254.5619092 251.648000607
64 251.648000607
64 5 [ 129.77942793  127.54161766] 257.321045585 251.648000607
65 251.648000607
65 10 [  95.21674464  160.88122461] 256.097969248 251.648000607
66 251.648000607
66 12 [ 107.15304704  150.29119749] 257.444244527 251.648000607
67 251.648000607
67 4 [ 106.5954609   149.84769104] 256.443151941 251.648000607
68 251.648000607
68 14 [ 129.68275521  126.74615162] 256.428906829 251.648000607
69 251.648000607
69 7 [ 132.58166976  124.2964    ] 256.878069761 251.648000607
70 251.648000607
70 15 [ 181.63703221   72.53250215] 254.169534352 251.648000607
71 251.648000607
71 3 [ 107.76518252  149.29748715] 257.062669672 251.648000607
72 251.648000607
72 2 [ 153.80492294  105.69804201] 259.502964943 251.648000607
73 251.648000607
73 5 [ 120.09356569  136.83123116] 256.924796853 251.648000607
74 251.648000607
74 22 [  55.6521528   198.00287087] 253.655023676 251.648000607
75 251.648000607
75 12 [ 164.43825123   91.61694628] 256.055197508 251.648000607
76 251.648000607
76 11 [ 102.46326082  153.89913634] 256.362397162 251.648000607
77 251.648000607
77 7 [ 139.1102063   116.30532086] 255.415527156 251.648000607
78 251.648000607
78 10 [ 139.93051355  115.89472685] 255.825240397 251.648000607
79 251.648000607
79 13 [  49.83298523  202.81889981] 252.651885034 251.648000607
80 251.648000607
80 3 [ 152.22468744  104.51113117] 256.735818603 251.648000607
81 251.648000607
81 16 [ 188.39923438   66.16267481] 254.5619092 251.648000607
82 251.648000607
82 6 [ 125.81114988  132.68837421] 258.49952409 251.648000607
83 251.648000607
83 12 [ 103.95146222  154.72899297] 258.680455189 251.648000607
84 251.648000607
84 10 [ 160.88122461   95.21674464] 256.097969248 251.648000607
85 251.648000607
85 7 [ 133.16641976  124.3575608 ] 257.52398056 251.648000607
86 251.648000607
86 7 [ 109.157054    148.20571906] 257.362773056 251.648000607
87 251.648000607
87 13 [ 122.46429954  135.27458212] 257.738881669 251.648000607
88 251.648000607
88 4 [ 130.97862307  127.35441208] 258.333035151 251.648000607
89 251.648000607
89 6 [  78.68881141  176.55612468] 255.244936091 251.648000607
90 251.648000607
90 6 [ 115.53897608  141.29309136] 256.832067439 251.648000607
91 251.648000607
91 10 [  90.21727384  166.96957308] 257.186846921 251.648000607
92 251.648000607
92 5 [ 114.38844326  143.17299089] 257.561434153 251.648000607
93 251.648000607
93 7 [  47.37143989  205.02145855] 252.392898442 251.648000607
94 251.648000607
94 14 [ 155.75786367  100.7892512 ] 256.547114866 251.648000607
95 251.648000607
95 3 [ 116.77027957  141.13516471] 257.905444281 251.648000607
96 251.648000607
96 9 [ 137.22085669  120.46089918] 257.681755868 251.648000607
97 251.648000607
97 2 [ 150.20411375  106.35339164] 256.55750539 251.648000607
98 251.648000607
98 3 [ 132.4864043   125.07079898] 257.557203281 251.648000607
99 251.648000607
99 5 [ 122.87701458  135.07529052] 257.952305096 251.648000607
100 251.648000607
100 7 [  68.25644493  185.61383716] 253.870282084 251.648000607
101 251.648000607
101 6 [ 149.97950243  106.84378695] 256.823289384 251.648000607
102 251.648000607
102 6 [ 123.46304533  135.68921475] 259.152260082 251.648000607
103 251.648000607
103 6 [ 142.29461234  116.33678818] 258.631400524 251.648000607
104 251.648000607
104 4 [  80.7688403   174.25493189] 255.023772191 251.648000607
105 251.648000607
105 10 [ 120.96125001  137.47113488] 258.432384894 251.648000607
106 251.648000607
106 7 [ 114.6129571   142.81493148] 257.427888581 251.648000607
107 251.648000607
107 5 [ 190.36269352   64.69231866] 255.055012186 251.648000607
108 251.648000607
108 9 [  77.32923486  176.23175305] 253.560987904 251.648000607
109 251.648000607
109 7 [ 103.04732719  152.98690511] 256.034232298 251.648000607
110 251.648000607
110 11 [  59.97572361  194.79940709] 254.775130694 251.648000607
111 251.648000607
111 3 [ 152.96021819  104.44808838] 257.40830657 251.648000607
112 251.648000607
112 10 [ 193.04568604   61.78432681] 254.830012851 251.648000607
113 251.648000607
113 5 [ 112.54885234  145.14545519] 257.694307529 251.648000607
114 251.648000607
114 8 [ 100.51792029  155.51894444] 256.036864731 251.648000607
115 251.648000607
115 5 [ 122.48530187  136.45267325] 258.937975122 251.648000607
116 251.648000607
116 5 [ 141.69788807  114.3055512 ] 256.003439271 251.648000607
117 251.648000607
117 4 [ 129.38324597  127.07852816] 256.461774126 251.648000607
118 251.648000607
118 6 [ 103.01866477  154.28666417] 257.305328937 251.648000607
119 251.648000607
119 8 [ 133.5390925   124.75239008] 258.291482584 251.648000607
120 251.648000607
120 4 [ 129.73289071  126.22117372] 255.954064425 251.648000607
121 251.648000607
121 7 [ 124.53832848  131.86795954] 256.406288023 251.648000607
122 251.648000607
122 9 [ 160.06588265   94.32609905] 254.391981706 251.648000607
123 251.648000607
123 8 [ 115.23844613  142.6305196 ] 257.868965735 251.648000607
124 251.648000607
124 4 [ 121.9015477   135.85524972] 257.756797424 251.648000607
125 251.648000607
125 10 [  89.91311512  164.88871996] 254.801835079 251.648000607
126 251.648000607
126 7 [ 126.98253413  130.17054482] 257.153078953 251.648000607
127 251.648000607
127 3 [ 154.48657112  104.92674965] 259.413320776 251.648000607
128 251.648000607
128 10 [ 153.3782697   103.50445975] 256.882729451 251.648000607
129 251.648000607
129 3 [ 146.61411689  111.2082746 ] 257.822391489 251.648000607
130 251.648000607
130 15 [ 210.95232398   40.69567663] 251.648000607 251.648000607
131 251.648000607
131 4 [ 133.47041216  124.39782903] 257.868241186 251.648000607
132 251.648000607
132 2 [  93.84178708  162.17644044] 256.018227525 251.648000607
133 251.648000607
133 4 [ 115.53640151  141.5205165 ] 257.05691801 251.648000607
134 251.648000607
134 7 [ 161.2387002    95.73104699] 256.969747191 251.648000607
135 251.648000607
135 3 [ 111.73986588  146.51692667] 258.256792554 251.648000607
136 251.648000607
136 9 [ 115.3036363   140.10428795] 255.407924249 251.648000607
137 251.648000607
137 8 [ 137.30387222  120.59932721] 257.903199431 251.648000607
138 251.648000607
138 5 [  98.95533605  157.80790088] 256.763236936 251.648000607
139 251.648000607
139 10 [ 113.02008115  144.98634629] 258.006427441 251.648000607
140 251.648000607
140 5 [ 131.81473257  126.05456768] 257.869300253 251.648000607
141 251.648000607
141 3 [ 130.18430846  126.77095765] 256.955266113 251.648000607
142 251.648000607
142 7 [ 106.19190678  151.15482439] 257.346731166 251.648000607
143 251.648000607
143 8 [ 103.57455932  154.08978817] 257.664347494 251.648000607
144 251.648000607
144 15 [  14.67552783  232.38997766] 247.065505492 251.648000607
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
145 247.065505492
145 5 [ 139.40663301  119.54202758] 258.948660583 247.065505492
146 247.065505492
146 11 [ 232.38997766   14.67552783] 247.065505492 247.065505492
147 247.065505492
147 5 [  92.63594181  161.88007557] 254.516017381 247.065505492
148 247.065505492
148 6 [ 122.21317849  136.36190473] 258.575083216 247.065505492
149 247.065505492
149 11 [ 209.02262288   43.08420058] 252.106823462 247.065505492
150 247.065505492
150 3 [ 128.94077806  128.5919699 ] 257.532747958 247.065505492
151 247.065505492
151 5 [  96.76958676  161.72590356] 258.495490328 247.065505492
152 247.065505492
152 4 [ 158.36252207   97.54574114] 255.908263206 247.065505492
153 247.065505492
153 6 [ 120.1811941   137.39760087] 257.578794978 247.065505492
154 247.065505492
154 7 [  14.67552783  232.38997766] 247.065505492 247.065505492
155 247.065505492
155 16 [ 160.42462031   95.69039571] 256.115016022 247.065505492
156 247.065505492
156 5 [ 130.19815389  127.261165  ] 257.459318891 247.065505492
157 247.065505492
157 14 [  40.69567663  210.95232398] 251.648000607 247.065505492
158 247.065505492
158 3 [ 124.22993261  132.77493189] 257.004864498 247.065505492
159 247.065505492
159 4 [ 188.76503995   65.94052693] 254.705566884 247.065505492
160 247.065505492
160 5 [  77.32923486  176.23175305] 253.560987904 247.065505492
161 247.065505492
161 11 [ 149.39578416  109.24504566] 258.640829818 247.065505492
162 247.065505492
162 7 [ 109.394571    148.17808455] 257.572655551 247.065505492
163 247.065505492
163 4 [ 137.93993625  119.8456079 ] 257.785544148 247.065505492
164 247.065505492
164 4 [ 142.28612811  114.70762303] 256.993751135 247.065505492
165 247.065505492
165 4 [  97.39283765  158.15956082] 255.552398469 247.065505492
166 247.065505492
166 7 [ 133.37375335  124.60427885] 257.978032201 247.065505492
167 247.065505492
167 6 [ 170.35865627   85.58169246] 255.940348724 247.065505492
168 247.065505492
168 5 [ 170.30136604   86.54037202] 256.84173806 247.065505492
169 247.065505492
169 11 [ 127.85584608  129.13304285] 256.988888926 247.065505492
170 247.065505492
170 3 [ 138.14152431  119.69247126] 257.833995571 247.065505492
171 247.065505492
171 11 [ 205.02145855   47.37143989] 252.392898442 247.065505492
172 247.065505492
172 3 [ 122.76654997  134.25498917] 257.021539143 247.065505492
173 247.065505492
173 11 [  14.67552783  232.38997766] 247.065505492 247.065505492
174 247.065505492
174 2 [ 136.46593698  120.59782203] 257.063759013 247.065505492
175 247.065505492
175 9 [ 148.37436255  107.39788902] 255.772251566 247.065505492
176 247.065505492
176 3 [ 122.59081448  134.8185881 ] 257.409402582 247.065505492
177 247.065505492
177 9 [ 150.4849708   106.88361245] 257.368583256 247.065505492
178 247.065505492
178 10 [ 147.01525424  109.01769545] 256.032949687 247.065505492
179 247.065505492
179 7 [ 128.42950514  129.8652715 ] 258.294776643 247.065505492
180 247.065505492
180 4 [ 185.92290412   69.24200256] 255.164906684 247.065505492
181 247.065505492
181 10 [  96.4966281   158.10383802] 254.600466114 247.065505492
182 247.065505492
182 13 [ 178.46739081   76.46352974] 254.930920551 247.065505492
183 247.065505492
183 4 [ 108.99066668  146.35512778] 255.345794458 247.065505492
184 247.065505492
184 7 [  88.48918419  168.10257158] 256.591755771 247.065505492
185 247.065505492
185 14 [ 202.81889981   49.83298523] 252.651885034 247.065505492
186 247.065505492
186 4 [  95.53147615  160.81426406] 256.345740211 247.065505492
187 247.065505492
187 3 [ 144.43828673  111.1805034 ] 255.618790131 247.065505492
188 247.065505492
188 3 [ 120.09500977  137.18194586] 257.276955625 247.065505492
189 247.065505492
189 8 [ 147.69678274  107.01245882] 254.709241567 247.065505492
190 247.065505492
190 12 [ 119.84932183  137.99735616] 257.846677994 247.065505492
191 247.065505492
191 11 [ 129.7157269   128.12198049] 257.837707391 247.065505492
192 247.065505492
192 3 [  92.9216907   163.51000787] 256.431698567 247.065505492
193 247.065505492
193 3 [ 124.98322043  132.54150439] 257.524724819 247.065505492
194 247.065505492
194 9 [ 168.61585919   86.73798201] 255.353841204 247.065505492
195 247.065505492
195 9 [  95.68265419  159.85969997] 255.542354153 247.065505492
196 247.065505492
196 5 [ 141.89632963  114.67191022] 256.568239847 247.065505492
197 247.065505492
197 6 [ 138.64496792  118.02918066] 256.674148581 247.065505492
198 247.065505492
198 3 [ 109.780814    147.35272121] 257.133535208 247.065505492
199 247.065505492
199 8 [ 151.45446031  105.35987385] 256.814334161 247.065505492
Converged after 8 iterations

In [24]:
s1 = np.array([[0.02, 0.05], [0.5, 2.0]])
s2 = np.array([[0.6, 0.0], [0.0, 1.1]])
#s3 = np.array([[0.4, -0.5], [-0.04, 0.3]])
s3 = np.array([[0.4, -0.5], [-0.02, 0.2]])

m1 = np.array([-2.0, 1.0])
m2 = np.array([0.0, -3.0])
m3 = np.array([1.0, 2.0])

X1 = np.random.multivariate_normal(mean=m1, cov=s1, size=200)
X2 = np.random.multivariate_normal(mean=m2, cov=s2, size=300)
X3 = np.random.multivariate_normal(mean=m3, cov=s3, size=100)

X = np.vstack((X1, X2, X3))

indx_arr = np.arange(X.shape[0])
np.random.shuffle(indx_arr)

y = np.hstack((np.zeros(200, dtype=int), np.ones(300, dtype=int), 2*np.ones(100, dtype=int)))
X = X[indx_arr,:]
y = y[indx_arr]

In [25]:
kkm = pyclust.KernelKMeans(n_clusters=3, kernel='rbf')
kkm.fit(X)

plot_scatter(X, labels1=kkm.labels_, titles=["Scatter Plot: Original Labels"])



In [4]:
import sys
sys.path.append('/home/vahid/')

import ketnel_kmeans

In [18]:
km2 = ketnel_kmeans.KernelKMeans(n_clusters=2, kernel='rbf')

res = km2.fit_predict(X)

plot_scatter(X, labels1=res, titles=["Scatter Plot: Original Labels"])



In [17]:




In [ ]:


In [ ]: