Example #1
0
    def test_plot20(self):
        np.random.seed(seed)
        Xa = np.array([[i, 0.0] for i in np.linspace(-10.0, 10.0, 40)])
        Xb = np.array([[i, 0.2] for i in np.linspace(-10.0, 10.0, 20)])
        Xc = np.array([[i, -0.2] for i in np.linspace(-10.0, 10.0, 20)])
        ya = ['A' for i in range(40)]
        yb = ['B' for i in range(20)]
        yc = ['C' for i in range(20)]
        X = np.concatenate([Xa, Xb, Xc], axis=0)
        y = np.concatenate([ya, yb, yc])

        nca = NCA()
        # rcParams['text.usetex'] = 'True' # Latex installed needed
        # rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
        nca.fit(X, y)
        dml_multiplot(
            X,
            y,
            nrow=1,
            ncol=3,
            ks=[1, 1, 1],
            fitted=True,
            dmls=[None, nca, nca],
            transforms=[False, False, True],
            cmap="gist_rainbow",
            # subtitles=[r'$M=\begin{pmatrix}1 & 0 \\ 0 & 1 \end{pmatrix}$',
            #            r'$M \approx \begin{pmatrix} 0 & -0.004 \\ -0.004 & 27.5 \end{pmatrix}$',
            #            r'$L \approx \begin{pmatrix} -0.0001 & 0.073 \\ -0.0008 & 5.24 \end{pmatrix}$'],
            figsize=(18, 6))
        self.newsave()
        plt.close()
Example #2
0
 def test_plot22(self):
     np.random.seed(seed)
     X, y = toy_datasets.circular_toy_dataset(rads=[1, 2],
                                              samples=[200, 200],
                                              noise=[0.0, 0.0])
     y = y.astype(str)
     yy = y.astype(str)
     yy[40:200] = '?'
     yy[220:] = '?'
     knn1 = KNeighborsClassifier(1)
     knn1.fit(X[np.isin(yy, ['0', '1'])], yy[np.isin(yy, ['0', '1'])])
     knn2 = KNeighborsClassifier(1)
     knn2.fit(X, y)
     dml_multiplot(X,
                   yy,
                   clfs=[knn1, knn2],
                   label_colors=['red', 'blue', 'lightgray'],
                   fitted=True,
                   figsize=(12, 6))
     self.newsave()
     plt.close()
Example #3
0
 def test_plot23(self):
     np.random.seed(seed)
     X, y = iris_data()
     y = [
         'Setosa' if yi == 0 else 'Versicolor' if yi == 1 else 'Virginica'
         for yi in y
     ]
     X = pd.DataFrame(X,
                      columns=[
                          'Sepal Length', 'Sepal Width', 'Petal Length',
                          'Petal Width'
                      ])
     arr = ['Sepal Length', 'Sepal Width']
     X = X[arr]
     dml_multiplot(X,
                   y,
                   ks=[1, 30],
                   cmap='rainbow',
                   subtitles=[r'$k=1$', r'$k=30$'],
                   figsize=(12, 6))
     self.newsave()
     plt.close()
Example #4
0
    def test_plot16(self):
        np.random.seed(seed)
        X, y = toy_datasets.balls_toy_dataset(centers=[[-1.0, 0.0], [0.0, 0.0],
                                                       [1.0, 0.0]],
                                              rads=[0.3, 0.3, 0.3],
                                              samples=[50, 50, 50],
                                              noise=[0.1, 0.1, 0.1])
        y[y == 2] = 0
        y = y.astype(int)

        ncm = NearestCentroid()
        ncmc = NCMC_Classifier(centroids_num=[2, 1])
        dml_multiplot(X,
                      y,
                      nrow=1,
                      ncol=2,
                      clfs=[ncm, ncmc],
                      cmap='rainbow',
                      subtitles=['NCM', 'NCMC'],
                      figsize=(6, 3))
        self.newsave()
        plt.close()
Example #5
0
    def test_plot9(self):
        np.random.seed(seed)
        X, y = digits_data()
        selected = np.where(np.isin(y, [0, 1, 3, 4, 6, 9]))[0]
        X, y = X[selected, :], y[selected]

        lda = LDA(num_dims=2)
        anmm = ANMM(num_dims=2, n_friends=1, n_enemies=1)

        dml_multiplot(
            X,
            y,
            nrow=2,
            ncol=2,
            ks=[1, 1, 11, 11],
            dmls=[lda, anmm, lda, anmm],
            title="Comparing DMLS",
            subtitles=["k=1, LDA", "k=1, ANMM", "k=11, LDA", "k=11, ANMM"],
            cmap="gist_rainbow",
            plot_points=True,
            figsize=(20, 16))
        self.newsave()
        plt.close()
Example #6
0
    def test_plot12(self):
        np.random.seed(seed)
        X = np.array([[0.0, 0.1], [0.5, 0.1], [-0.5, -0.1], [1.0, 0.2],
                      [-1.0, -0.1], [0.1, 1.0], [-0.1, 1.0], [0.1, -1.0],
                      [-0.1, -1.0]])
        y = np.array([0, 0, 0, 0, 0, 1, 1, 2, 2])

        lmnn = LMNN(max_iter=1000,
                    learning_rate="adaptive",
                    eta0=1.0,
                    k=1,
                    mu=0.5,
                    tol=1e-15,
                    prec=1e-15)
        dml_multiplot(X,
                      y,
                      2,
                      2,
                      ks=[1, 1, 1],
                      dmls=[None, lmnn, lmnn],
                      transforms=[True, True, False],
                      title="LMNN",
                      subtitles=["Original", "Transformed", "Region LMNN+KNN"],
                      cmap="rainbow",
                      figsize=(20, 20))
        self.newsave()
        knn_plot(X, y, k=1, cmap="gist_rainbow", figsize=(15, 8))
        self.newsave()
        knn_plot(X,
                 y,
                 k=1,
                 cmap="gist_rainbow",
                 figsize=(15, 8),
                 transformer=np.array([[0.0, 0.0], [0.0, 3.0]]),
                 transform=False)
        self.newsave()
        plt.close()
Example #7
0
    def test_plot18(self):
        np.random.seed(seed)
        svm = SVC(kernel='linear')
        Xa = np.array([[1.8 * np.random.random() + -0.9, 0.0]
                       for i in range(40)])
        Xb = np.array([[0.4 * np.random.random() + 1.1, 0.0]
                       for i in range(20)])
        Xc = np.array([[0.4 * np.random.random() - 1.5, 0.0]
                       for i in range(20)])
        X = np.concatenate([Xa, Xb, Xc], axis=0)
        y = np.empty(X.shape[0])
        y[np.abs(X[:, 0]) > 1] = 1
        y[np.abs(X[:, 0]) < 1] = -1
        y = y.astype(int)
        f, ax = plt.subplots(sharex='row', sharey='row', figsize=(6, 3))
        sc = ax.scatter(X[:, 0],
                        X[:, 1],
                        c=y,
                        cmap='rainbow',
                        s=20,
                        edgecolor='k')
        handles = [
            plt.plot([],
                     color=sc.get_cmap()(sc.norm(c)),
                     ls="",
                     marker="o",
                     mec="k")[0] for c in [-1, 1]
        ]
        ax.legend(handles, [-1, 1], loc="lower right")
        self.newsave()

        f1, ax1 = plt.subplots(figsize=(4, 4))
        ax1.set_xlim([-1.6, 1.6])
        ax1.set_ylim([-2.0, 2.0])
        sc = ax1.scatter(X[:, 0],
                         X[:, 1],
                         c=y,
                         cmap='rainbow',
                         s=20,
                         edgecolor='k')
        handles = [
            plt.plot([],
                     color=sc.get_cmap()(sc.norm(c)),
                     ls="",
                     marker="o",
                     mec="k")[0] for c in [-1, 1]
        ]
        ax1.legend(handles, [-1, 1], loc="lower right")

        X[:, 1] = X[:, 0] * X[:, 0]
        L = np.array([[1, 0], [0, 0]])
        svq = SVC(kernel='poly', degree=2)
        dml_multiplot(X,
                      y,
                      nrow=1,
                      ncol=2,
                      clfs=[svm, svq],
                      transformers=[None, L],
                      transforms=[False, True],
                      cmap='rainbow',
                      figsize=(12, 6))
        self.newsave()

        f2, ax2 = plt.subplots(figsize=(4, 4))
        ax2.set_xlim([-1.6, 1.6])
        ax2.set_ylim([-0.1, 2.5])
        ax2.scatter(X[:, 0], X[:, 1], c=y, cmap='rainbow', s=20, edgecolor='k')
        handles = [
            plt.plot([],
                     color=sc.get_cmap()(sc.norm(c)),
                     ls="",
                     marker="o",
                     mec="k")[0] for c in [-1, 1]
        ]
        ax2.legend(handles, [-1, 1], loc="lower right")
        self.newsave()

        dml_plot(X,
                 y,
                 clf=svm,
                 transform=False,
                 cmap='rainbow',
                 figsize=(4, 4),
                 xrange=[-1.6, 1.6],
                 yrange=[-0.1, 2.5])
        self.newsave()
        dml_plot(X,
                 y,
                 clf=svq,
                 transformer=L,
                 transform=True,
                 cmap='rainbow',
                 xrange=[-1.6, 1.6],
                 yrange=[-2.0, 2.0],
                 figsize=(4, 4))
        self.newsave()
        plt.close()