def _test_plot(self, evas): """Check if `stored_vars` is correctly populated. Parameters ---------- evas : CAttackEvasionCleverhans """ if self.make_figures is False: self.logger.debug("Skipping figures...") return fig = CFigure() fig.sp.plot_path(evas.x_seq) fig.sp.plot_fun(evas.objective_function, plot_levels=False, multipoint=True, n_grid_points=50) fig.sp.plot_decision_regions(self.clf, plot_background=False, n_grid_points=100) fig.title("ATTACK: {}, y_target: {}".format( evas._clvrh_attack_class.__name__, self.y_target)) name_file = '{}_evasion2D_target_{}.pdf'.format( evas._clvrh_attack_class.__name__, self.y_target) fig.savefig(fm.join(self.images_folder, name_file), file_format='pdf')
def _create_params_grad_plot(self, normalizer): """ Show the gradient of the classifier parameters w.r.t the poisoning point """ self.logger.info("Create 2-dimensional plot of the poisoning " "gradient") self._test_init(normalizer) pois_clf = self._clf_poisoning()[0] if self.n_features == 2: debug_pois_obj = _CAttackPoisoningLinTest(self.poisoning) fig = CFigure(height=8, width=10) n_rows = 2 n_cols = 2 fig.title(self.clf_idx) fig.subplot(n_rows, n_cols, grid_slot=1) fig.sp.title('w1 wrt xc') self._plot_param_sub(fig, debug_pois_obj.w1, debug_pois_obj.gradient_w1_xc, pois_clf) fig.subplot(n_rows, n_cols, grid_slot=2) fig.sp.title('w2 wrt xc') self._plot_param_sub(fig, debug_pois_obj.w2, debug_pois_obj.gradient_w2_xc, pois_clf) fig.subplot(n_rows, n_cols, grid_slot=3) fig.sp.title('b wrt xc') self._plot_param_sub(fig, debug_pois_obj.b, debug_pois_obj.gradient_b_xc, pois_clf) fig.tight_layout() exp_idx = "2d_grad_pois_" exp_idx += self.clf_idx if self.classifier.preprocess is not None: exp_idx += "_norm" fig.savefig(exp_idx + '.pdf', file_format='pdf')
from secml.array import CArray from secml.figure import CFigure fig = CFigure(fontsize=14) fig.title('loglog base 4 on x') t = CArray.arange(0.01, 20.0, 0.01) fig.sp.loglog(t, 20 * (-t / 10.0).exp(), basex=2) fig.sp.grid() fig.show()
from secml.array import CArray from secml.figure import CFigure fig = CFigure(fontsize=14) # example data mu = 100 # mean of distribution sigma = 15 # standard deviation of distribution x = mu + sigma * CArray.randn((10000, )) num_bins = 50 # the histogram of the data n, bins, patches = fig.sp.hist(x, num_bins, density=1, facecolor='green', alpha=0.5) # add a 'best fit' line y = bins.normpdf(mu, sigma) fig.sp.plot(bins, y, 'r--') fig.sp.xlabel('Smarts') fig.sp.ylabel('Probability') fig.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$') # Tweak spacing to prevent clipping of ylabel fig.subplots_adjust(left=0.15) fig.sp.grid() fig.show()
from secml.array import CArray from secml.figure import CFigure fig = CFigure(fontsize=16) fig.title('Errorbars can go negative!') fig.sp.xscale("symlog", nonposx='clip') fig.sp.yscale("symlog", nonposy='clip') x = CArray(10.0).pow(CArray.linspace(0.0, 2.0, 20)) y = x ** 2.0 fig.sp.errorbar(x, y, xerr=0.1 * x, yerr=5.0 + 0.75 * y) fig.sp.ylim(bottom=0.1) fig.sp.grid() fig.show()