Ejemplo n.º 1
0
class DataProcess(object):  # 特征处理
    def __init__(self, process_type):
        self.process_type = process_type

        if self.process_type == "Binary":  # 二值化处理
            self.processmodule = Binarizer(copy=True, threshold=0.0)
            # 大于 threshold 的映射为1, 小于 threshold 的映射为0

        elif self.process_type == "MinMax":  # 归一化处理
            self.processmodule = MinMaxScaler(feature_range=(0, 1), copy=True)

        elif self.process_type == "Stand":  # 标准化处理
            self.processmodule = StandardScaler(copy=True, with_mean=True, with_std=True)

        elif self.process_type == "Normal":  # 正则化处理
            self.processmodule = Normalizer(copy=True, norm="l2")  # 可选择l1, max ,l2三种

        elif self.process_type == "MultiLabelBinar":   # 多标签二值化处理
            self.processmodule = MultiLabelBinarizer(sparse_output=False)  # 使用其他CRS格式使用True
        else:
            raise ValueError("please select a correct process_type")

    def fit_transform(self, data):
        return self.processmodule.fit_transform(data)

    def fit(self, data):
        self.processmodule.fit(data)

    def transform(self, data):
        self.processmodule.transform(data)

    def set_params(self, params):
        self.processmodule.set_params(**params)

    def get_params(self):
        return self.processmodule.get_params(deep=True)

    def get_classes(self):
        assert self.process_type in {"MultiLabelBinar"}
        return self.processmodule.classes_  # 输出相关的classs有哪些不同的值

    def invser_transform(self, data):
        assert self.process_type in {"MultiLabelBinar", "MinMax", "Stand"}
        return self.processmodule.inverse_transform(data)

    def get_max(self):  # 获取数组中所多有维度上的最大值与最小值
        assert self.process_type in {"MinMax", "Stand"}
        return self.processmodule.data_max_

    def get_min(self):
        assert self.process_type in {"MinMax", "Stand"}
        return self.processmodule.data_min_

    def partial_fit(self):
        # 使用最后的一个缩放函数来在线计算最大值与最小值
        assert self.process_type in {"MinMax", "Stand"}
        return self.processmodule.partial_fit()