def visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred, y_test_pred, show_figure=True, save_figure=False): # pragma: no cover """ Utility function for visualizing the results in examples Internal use only :param clf_name: The name of the detector :type clf_name: str :param X_train: The training samples :param X_train: numpy array of shape (n_samples, n_features) :param y_train: The ground truth of training samples :type y_train: list or array of shape (n_samples,) :param X_test: The test samples :type X_test: numpy array of shape (n_samples, n_features) :param y_test: The ground truth of test samples :type y_test: list or array of shape (n_samples,) :param y_train_pred: The predicted outlier scores on the training samples :type y_train_pred: numpy array of shape (n_samples, n_features) :param y_test_pred: The predicted outlier scores on the test samples :type y_test_pred: numpy array of shape (n_samples, n_features) :param show_figure: If set to True, show the figure :type show_figure: bool, optional (default=True) :param save_figure: If set to True, save the figure to the local :type save_figure: bool, optional (default=False) """ if X_train.shape[1] != 2 or X_test.shape[1] != 2: raise ValueError("Input data has to be 2-d for visualization. The " "input data has {shape}.".format(shape=X_train.shape)) X_train, y_train = check_X_y(X_train, y_train) X_test, y_test = check_X_y(X_test, y_test) c_train = get_color_codes(y_train) c_test = get_color_codes(y_test) fig = plt.figure(figsize=(12, 10)) plt.suptitle("Demo of {clf_name}".format(clf_name=clf_name)) fig.add_subplot(221) plt.scatter(X_train[:, 0], X_train[:, 1], c=c_train) plt.title('Train ground truth') legend_elements = [ Line2D([0], [0], marker='o', color='w', label='normal', markerfacecolor='b', markersize=8), Line2D([0], [0], marker='o', color='w', label='outlier', markerfacecolor='r', markersize=8) ] plt.legend(handles=legend_elements, loc=4) fig.add_subplot(222) plt.scatter(X_test[:, 0], X_test[:, 1], c=c_test) plt.title('Test ground truth') plt.legend(handles=legend_elements, loc=4) fig.add_subplot(223) plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train_pred) plt.title('Train prediction by {clf_name}'.format(clf_name=clf_name)) legend_elements = [ Line2D([0], [0], marker='o', color='w', label='normal', markerfacecolor='0', markersize=8), Line2D([0], [0], marker='o', color='w', label='outlier', markerfacecolor='yellow', markersize=8) ] plt.legend(handles=legend_elements, loc=4) fig.add_subplot(224) plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test_pred) plt.title('Test prediction by {clf_name}'.format(clf_name=clf_name)) plt.legend(handles=legend_elements, loc=4) if save_figure: plt.savefig('{clf_name}.png'.format(clf_name=clf_name), dpi=300) if show_figure: plt.show() return
def visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred, y_test_pred, show_figure=True, save_figure=False): # pragma: no cover """ Utility function for visualizing the results in examples Internal use only :param clf_name: The name of the detector :type clf_name: str :param X_train: The training samples :param X_train: numpy array of shape (n_samples, n_features) :param y_train: The ground truth of training samples :type y_train: list or array of shape (n_samples,) :param X_test: The test samples :type X_test: numpy array of shape (n_samples, n_features) :param y_test: The ground truth of test samples :type y_test: list or array of shape (n_samples,) :param y_train_pred: The predicted outlier scores on the training samples :type y_train_pred: numpy array of shape (n_samples, n_features) :param y_test_pred: The predicted outlier scores on the test samples :type y_test_pred: numpy array of shape (n_samples, n_features) :param show_figure: If set to True, show the figure :type show_figure: bool, optional (default=True) :param save_figure: If set to True, save the figure to the local :type save_figure: bool, optional (default=False) """ if X_train.shape[1] != 2 or X_test.shape[1] != 2: raise ValueError("Input data has to be 2-d for visualization. The " "input data has {shape}.".format(shape=X_train.shape)) X_train, y_train = check_X_y(X_train, y_train) X_test, y_test = check_X_y(X_test, y_test) c_train = get_color_codes(y_train) c_test = get_color_codes(y_test) fig = plt.figure(figsize=(12, 10)) plt.suptitle("Demo of {clf_name}".format(clf_name=clf_name)) fig.add_subplot(221) plt.scatter(X_train[:, 0], X_train[:, 1], c=c_train) plt.title('Train ground truth') legend_elements = [Line2D([0], [0], marker='o', color='w', label='inlier', markerfacecolor='b', markersize=8), Line2D([0], [0], marker='^', color='w', label='outlier', markerfacecolor='r', markersize=8)] plt.legend(handles=legend_elements, loc=4) fig.add_subplot(222) plt.scatter(X_test[:, 0], X_test[:, 1], c=c_test) plt.title('Test ground truth') plt.legend(handles=legend_elements, loc=4) fig.add_subplot(223) plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train_pred) plt.title('Train prediction by {clf_name}'.format(clf_name=clf_name)) legend_elements = [Line2D([0], [0], marker='o', color='w', label='inlier', markerfacecolor='0', markersize=8), Line2D([0], [0], marker='^', color='w', label='outlier', markerfacecolor='yellow', markersize=8)] plt.legend(handles=legend_elements, loc=4) fig.add_subplot(224) plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test_pred) plt.title('Test prediction by {clf_name}'.format(clf_name=clf_name)) plt.legend(handles=legend_elements, loc=4) if save_figure: plt.savefig('{clf_name}.png'.format(clf_name=clf_name), dpi=300) if show_figure: plt.show() return