def CF_QuanCal(X, Y, estimator): # X_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.20, random_state=42) acp = AggregatedCp( IcpRegressor( RegressorNc( RegressorAdapter(estimator), AbsErrorErrFunc(), RegressorNormalizer(estimator, copy.copy(estimator), AbsErrorErrFunc())), RandomSubSampler()), ) acp.fit(X, Y) # icp.calibrate(X_test, y_test) return acp
def test_acp_regression_tree(self): # ----------------------------------------------------------------------------- # Experiment setup # ----------------------------------------------------------------------------- data = load_diabetes() idx = np.random.permutation(data.target.size) train = idx[:int(2 * idx.size / 3)] test = idx[int(2 * idx.size / 3):] truth = data.target[test] columns = ["min", "max", "truth"] significance = 0.1 # ----------------------------------------------------------------------------- # Define models # ----------------------------------------------------------------------------- models = { "ACP-RandomSubSampler": AggregatedCp( IcpRegressor( RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), RandomSubSampler(), ), "ACP-CrossSampler": AggregatedCp( IcpRegressor( RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), CrossSampler(), ), "ACP-BootstrapSampler": AggregatedCp( IcpRegressor( RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), BootstrapSampler(), ), } # ----------------------------------------------------------------------------- # Train, predict and evaluate # ----------------------------------------------------------------------------- for name, model in models.items(): model.fit(data.data[train, :], data.target[train]) prediction = model.predict(data.data[test, :]) prediction_sign = model.predict(data.data[test, :], significance=significance) table = np.vstack((prediction_sign.T, truth)).T df = pd.DataFrame(table, columns=columns) print("\n{}".format(name)) print("Error rate: {}".format( reg_mean_errors(prediction, truth, significance))) print(df)
def SelectLabeled(self, labeled_data_x, labeled_data_y, unlabeled_data_x): # just append train data to labeled data labeled_x = np.concatenate( (self.init_labeled_data_x, labeled_data_x )) if len(labeled_data_x) > 0 else self.init_labeled_data_x labeled_y = np.concatenate( (self.init_labeled_data_y, labeled_data_y )) if len(labeled_data_x) > 0 else self.init_labeled_data_y # # create model to predict with confidence and credibility model = ClassifierAdapter( DecisionTreeClassifier(random_state=config.random_state, min_samples_leaf=config.min_samples_leaf)) model_acp = AggregatedCp( IcpClassifier(ClassifierNc(model), smoothing=True), RandomSubSampler()) model_acp.fit(labeled_x, labeled_y) s = model_acp.predict(unlabeled_data_x) # print(s) # # selection method labeled_ind = [ i for i, a in enumerate(s) if 1 - a.min() > config.confidence and a.max() > config.credibility ] unlabeled_ind = [ i for i, a in enumerate(s) if 1 - a.min() < config.confidence or a.max() < config.credibility ] labeled_unlabeled_x, labeled_unlabeled_y, unlabeled_data_x = \ np.take(unlabeled_data_x, labeled_ind, axis=0), np.take(s.argmax(axis=1), labeled_ind), np.take( unlabeled_data_x, unlabeled_ind, axis=0) # return labeled_unlabeled_x, labeled_unlabeled_y, unlabeled_data_x
train = idx[:int(2 * idx.size / 3)] test = idx[int(2 * idx.size / 3):] truth = data.target[test] columns = ['min', 'max', 'truth'] significance = 0.1 # ----------------------------------------------------------------------------- # Define models # ----------------------------------------------------------------------------- models = { 'ACP-RandomSubSampler': AggregatedCp( IcpRegressor(RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), RandomSubSampler()), 'ACP-CrossSampler': AggregatedCp( IcpRegressor(RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), CrossSampler()), 'ACP-BootstrapSampler': AggregatedCp( IcpRegressor(RegressorNc(RegressorAdapter(DecisionTreeRegressor()))), BootstrapSampler()) } # ----------------------------------------------------------------------------- # Train, predict and evaluate # ----------------------------------------------------------------------------- for name, model in models.iteritems(): model.fit(data.data[train, :], data.target[train])
train = idx[:int(2 * idx.size / 3)] test = idx[int(2 * idx.size / 3):] truth = data.target[test].reshape(-1, 1) columns = ['C-{}'.format(i) for i in np.unique(data.target)] + ['truth'] significance = 0.1 # ----------------------------------------------------------------------------- # Define models # ----------------------------------------------------------------------------- models = { 'ACP-RandomSubSampler': AggregatedCp( IcpClassifier(ClassifierNc(ClassifierAdapter( DecisionTreeClassifier()))), RandomSubSampler()), 'ACP-CrossSampler': AggregatedCp( IcpClassifier(ClassifierNc(ClassifierAdapter( DecisionTreeClassifier()))), CrossSampler()), 'ACP-BootstrapSampler': AggregatedCp( IcpClassifier(ClassifierNc(ClassifierAdapter( DecisionTreeClassifier()))), BootstrapSampler()), 'CCP': CrossConformalClassifier( IcpClassifier(ClassifierNc(ClassifierAdapter( DecisionTreeClassifier())))), 'BCP': BootstrapConformalClassifier( IcpClassifier(ClassifierNc(ClassifierAdapter(
def test_acp_classification_tree(self): # ----------------------------------------------------------------------------- # Experiment setup # ----------------------------------------------------------------------------- data = load_iris() idx = np.random.permutation(data.target.size) train = idx[:int(2 * idx.size / 3)] test = idx[int(2 * idx.size / 3):] truth = data.target[test].reshape(-1, 1) columns = ["C-{}".format(i) for i in np.unique(data.target)] + ["truth"] significance = 0.1 # ----------------------------------------------------------------------------- # Define models # ----------------------------------------------------------------------------- models = { "ACP-RandomSubSampler": AggregatedCp( IcpClassifier( ClassifierNc(ClassifierAdapter(DecisionTreeClassifier()))), RandomSubSampler(), ), "ACP-CrossSampler": AggregatedCp( IcpClassifier( ClassifierNc(ClassifierAdapter(DecisionTreeClassifier()))), CrossSampler(), ), "ACP-BootstrapSampler": AggregatedCp( IcpClassifier( ClassifierNc(ClassifierAdapter(DecisionTreeClassifier()))), BootstrapSampler(), ), "CCP": CrossConformalClassifier( IcpClassifier( ClassifierNc(ClassifierAdapter( DecisionTreeClassifier())))), "BCP": BootstrapConformalClassifier( IcpClassifier( ClassifierNc(ClassifierAdapter( DecisionTreeClassifier())))), } # ----------------------------------------------------------------------------- # Train, predict and evaluate # ----------------------------------------------------------------------------- for name, model in models.items(): model.fit(data.data[train, :], data.target[train]) prediction = model.predict(data.data[test, :], significance=significance) table = np.hstack((prediction, truth)) df = pd.DataFrame(table, columns=columns) print("\n{}".format(name)) print("Error rate: {}".format( class_mean_errors(prediction, truth, significance))) print(df) self.assertTrue(True)