Python:生成三个高斯分布的二维散点图

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeniuHe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值