calibration.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:introspective 作者: numeristical 项目源码 文件源码
def _fit_multiclass(self, X, y, verbose=False):
        """Fit the calibrated model in multiclass setting

        Parameters
        ----------
        X : array-like, shape (n_samples, n_features)
            Training data.

        y : array-like, shape (n_samples,)
            Target values.

        Returns
        -------
        self : object
            Returns an instance of self.
        """
        class_list = np.unique(y)
        num_classes = len(class_list)
        y_mod = np.zeros(len(y))
        for i in range(num_classes):
           y_mod[y==class_list[i]]=i

        y_mod = y_mod.astype(int)
        if ((type(self.cv)==str) and (self.cv=='prefit')):
            self.uncalibrated_classifier = self.base_estimator
            y_pred = self.uncalibrated_classifier.predict_proba(X)

        else:
            y_pred = np.zeros((len(y_mod),num_classes))
            if sklearn.__version__ < '0.18':
                skf = StratifiedKFold(y_mod, n_folds=self.cv,shuffle=True)
            else:
                skf = StratifiedKFold(n_splits=self.cv, shuffle=True).split(X, y)
            for idx, (train_idx, test_idx) in enumerate(skf):
                if verbose:
                    print("training fold {} of {}".format(idx+1, self.cv))
                X_train = np.array(X)[train_idx,:]
                X_test = np.array(X)[test_idx,:]
                y_train = np.array(y_mod)[train_idx]
                # We could also copy the model first and then fit it
                this_estimator = clone(self.base_estimator)
                this_estimator.fit(X_train,y_train)
                y_pred[test_idx,:] = this_estimator.predict_proba(X_test)

            if verbose:
                print("Training Full Model")
            self.uncalibrated_classifier = clone(self.base_estimator)
            self.uncalibrated_classifier.fit(X, y_mod)

        # calibrating function
        if verbose:
            print("Determining Calibration Function")
        if self.method=='logistic':
            self.calib_func, self.cf_list = prob_calibration_function_multiclass(y_mod, self.pre_transform(y_pred), verbose=verbose, **self.calib_kwargs)
        if self.method=='ridge':
            self.calib_func, self.cf_list = prob_calibration_function_multiclass(y_mod, self.pre_transform(y_pred), verbose=verbose, method='ridge', **self.calib_kwargs)
        # training full model

        return self
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号