Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
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])
Exemplo n.º 5
0
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(
Exemplo n.º 6
0
    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)