import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt
MarkerList = ["<","*","o"]
add = [0,8,4]
data = None
for i in range(3):
X, y = datasets.make_blobs(n_samples=120,n_features=2,center_box=(0,0),cluster_std=2,random_state=5)
X += add[i]
if i == 0:
data = X
else:
data = np.vstack((data,X))
plt.scatter(X[:,0],X[:,1],marker=MarkerList[i])
print(data.shape)
plt.show()
import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt
from copy import deepcopy
from mord import LogisticAT
class nAOR():
def __init__(self,X_pool,y_pool,labeled,budget):
self.X_pool = X_pool
self.y_pool = y_pool.astype(np.int)
self.nClass = len(np.unique(self.y_pool))
self.labeled = list(deepcopy(labeled))
self.model = LogisticAT()
self.theta = None
self.w = None
self.unlabeled = self.initialization()
self.budgetLeft = deepcopy(budget)
self.budget = deepcopy(budget)
def initialization(self):
unlabeled = [i for i in range(len(self.y_pool))]
for j in self.labeled:
unlabeled.remove(j)
self.model.fit(X=self.X_pool[self.labeled], y=self.y_pool[self.labeled])
self.theta, self.w = self.model.theta_w()
return unlabeled
def evaluation(self):
self.model.fit(X=self.X_pool[self.labeled],y=self.y_pool[self.labeled])
self.theta, self.w = self.model.theta_w()
def select(self):
n_theta = self.nClass - 1
while self.budgetLeft > 0:
for t in range(n_theta):
if self.budgetLeft <= 0:
break
unlab_project = self.X_pool[self.unlabeled].dot(self.w)
tmp = self.theta[t] - np.asarray(unlab_project)
ordjdx = np.argsort(abs(tmp))
tar_idx = self.unlabeled[ordjdx[0]]
self.labeled.append(tar_idx)
self.unlabeled.remove(tar_idx)
self.budgetLeft -= 1
self.evaluation()
MarkerList = ["<","o",">"]
ColorList = ["cornflowerblue","darkorange","seagreen","springgreen","pink"]
add = [0,8,4]
data = None
# for j in range(300,360):
# for i in range(3):
# X, y = datasets.make_blobs(n_samples=120,n_features=2,center_box=(0,0),cluster_std=2,random_state=5)
# X += add[i]
# if i == 0:
# data = X
# else:
# data = np.vstack((data,X))
# plt.scatter(X[:,0],X[:,1],marker=MarkerList[i])
# plt.scatter(data[j][0],data[j][1],marker="o",c='r',s=200)
#
# print(data.shape)
# plt.title("the {}-th point".format(j))
# plt.show()
#
# labeled = [28,327,234]
for i in range(3):
X, yy = datasets.make_blobs(n_samples=120,n_features=2,center_box=(0,0),cluster_std=2,random_state=5)
X += add[i]
if i == 0:
data = X
else:
data = np.vstack((data,X))
y = np.ones(360)
y[:120] = 0
y[120:240] = 2
y[240:360] = 1
X = data
budget = 30
labeled = [28,354,234]
model = nAOR(X_pool=X, y_pool=y, labeled=labeled, budget=budget)
model.select()
selected = model.labeled
for idx in labeled:
selected.remove(idx)
for i in range(3):
ids = np.where(y==i)
plt.scatter(X[ids][:,0],X[ids][:,1],c=ColorList[i],marker=MarkerList[i],alpha=0.6)
plt.scatter(X[labeled[i]][0], X[labeled[i]][1],c=ColorList[i], marker=MarkerList[i],edgecolors='r', linewidths=1.5,s=80,alpha=0.8)
plt.show()