Example #1
0
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=True):
        """
            1. data preprocess
            2. get the number of features
            3. initialize
        """
        data_processed, features_mean, features_deviation = \
            prepare_for_training(data, polynomial_degree=0, sinusoid_degree=0, normalize_data=True)

        self.data = data_processed
        self.labels = labels
        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        # features: x(1), x(2), x(3)...
        num_features = self.data.shape[1]
        # Θ matrix
        self.theta = np.zeros((num_features, 1))
Example #2
0
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=True):
        """
        1.对数据进行预处理操作
        2.先得到所有的特征个数
        3.初始化参数矩阵
        """
        (data_processed, features_mean,
         features_deviation) = prepare_for_training(data,
                                                    polynomial_degree,
                                                    sinusoid_degree,
                                                    normalize_data=True)

        self.data = data_processed
        self.labels = labels
        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        num_features = self.data.shape[1]
        self.theta = np.zeros((num_features, 1))
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=False):
        """
        1.对数据进行预处理操作
        2.先得到所有的特征个数
        3.初始化参数矩阵
        """
        (data_processed, features_mean,
         features_deviation) = prepare_for_training(data,
                                                    polynomial_degree,
                                                    sinusoid_degree,
                                                    normalize_data=False)

        self.data = data_processed
        self.labels = labels
        self.unique_labels = np.unique(labels)
        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        num_features = self.data.shape[1]
        num_unique_labels = self.unique_labels.shape[0]

        # 参数为二维矩阵,行为标签种类数目,列为参数
        self.theta = np.zeros((num_unique_labels, num_features))
Example #4
0
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=True):
        """
            1. data preprocess
            2. get the number of features
            3. initialize
        """
        data_processed, features_mean, features_deviation = \
            prepare_for_training(data, polynomial_degree=0, sinusoid_degree=0, normalize_data=True)

        self.data = data_processed
        self.labels = labels
        # multi-class will have unique_labels classes
        # thus have
        self.unique_labels = np.unique(labels)
        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        # features: x(1), x(2), x(3)...
        num_features = self.data.shape[1]
        # np.unique(labels).shape: (num_labels,)
        num_unique_labels = np.unique(labels).shape[0]
        # Θ matrix, since we have multiple classes, the first dimension is num_unique_labels
        self.theta = np.zeros((num_unique_labels, num_features))
 def predict(self, data):
     """
     预测
     :param data:
     :return:
     """
     data_processed = prepare_for_training(data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data)[0]
     return np.dot(data_processed, self.theta)
Example #6
0
 def __init__(self, data, labels, layers, normalize_data=False):
     data_processed = prepare_for_training(data,
                                           normalize_data=normalize_data)[0]
     self.data = data_processed
     self.labels = labels
     self.layers = layers  #784 25 10
     self.normalize_data = normalize_data
     self.thetas = MultilayerPerceptron.thetas_init(layers)
Example #7
0
    def predict(self, data):
        """
            predict after training
        """
        data_processed = \
            prepare_for_training(data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data)[0]

        return LinearRegression.make_prediction(data_processed, self.theta)
 def loss(self, data):
     """
     损失值
     :param data:
     :return:
     """
     data_processed = prepare_for_training(data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data)[0]
     return data_processed
Example #9
0
    def predict(self, data):
        data_processed = prepare_for_training(
            data, normalize_data=self.normalize_data)[0]
        num_examples = data_processed.shape[0]

        predictions = MultilayerPerceptron.feedforward_propagation(
            data_processed, self.thetas, self.layers)

        return np.argmax(predictions, axis=1).reshape((num_examples, 1))
Example #10
0
 def predict(self,data):
     num_examples = data.shape[0]
     data_processed = prepare_for_training(data, self.polynomial_degree, self.sinusoid_degree,self.normalize_data)[0]
     prob = LogisticRegression.hypothesis(data_processed,self.theta.T)
     max_prob_index = np.argmax(prob, axis=1)
     class_prediction = np.empty(max_prob_index.shape,dtype=object)
     for index,label in enumerate(self.unique_labels):
         class_prediction[max_prob_index == index] = label
     return class_prediction.reshape((num_examples,1))
 def predict(self, data):
     """
     用训练的参数模型,与预测得到回归值结果
     """
     data_processed = prepare_for_training(
         data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data
      )[0]
      
     predictions = LinearRegression.hypothesis(data_processed, self.theta)
     return predictions
 def predict(self, data):
     num_examples = data.shape[0]
     data_processed, features_mean, features_deviation = prepare_for_training(
         data,
         self.polynomial_degree,
         self.sinusoid_degree,
         normalize_data=self.normalize_data)
     prob = self.hypothesis(data_processed, self.theta.T)
     prob_index = np.argmax(prob, axis=1)  # 找出行最大值的位置, 即找出预测概率值的最大值的位置
     class_prediction = np.empty(prob_index.shape, dtype=object)
     for index, label in enumerate(self.unique_labels):
         class_prediction[prob_index == index] = label
     return class_prediction.reshape((num_examples, 1))
Example #13
0
 def predict(self, data):
     """
     预测
     :param data:
     :return:
     """
     num_examples = data.shape[0]
     data_processed, *_ = prepare_for_training(data, self.polynomial_degree,
                                               self.sinusoid_degree,
                                               self.normalize_data)
     predictions = self.hypothesis(data_processed, self.theta.T)
     max_prob_index = np.argmax(predictions, axis=1)  # 找出概率值最大的所在位置
     predict_cls = np.empty(max_prob_index.shape, dtype=object)  # 初始化预测标签
     for index, label in enumerate(self.unique_labels):
         predict_cls[max_prob_index == index] = label
     return predict_cls.reshape((num_examples, 1))
    def __init__(self, data, labels, polynomial_degree=0, sinusoid_degree=0, normalize_data=True):
        """
        1、对数据进行预处理
        2、先得到所有的参数个数
        3、初始化参数矩阵
        :param data:
        :param labels:
        :param polynomial_degree:
        :param sinusoid_degree:
        :param normalize_data:
        """
        data_processed, features_mean, features_deviation = prepare_for_training(
            data, polynomial_degree, sinusoid_degree, normalize_data)
        self.data = data_processed
        self.labels = labels
        self.features_mean = features_mean
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        num_features = self.data.shape[1]
        self.theta = np.zeros((num_features, 1))
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=False):
        data_processed, features_mean, features_deviation = prepare_for_training(
            data, polynomial_degree, sinusoid_degree, normalize_data)
        self.data = data_processed
        self.labels = labels
        self.unique_labels = np.unique(
            labels)  # 标签个数(不重复)--多分类标签个数,如二分类,就是0, 1
        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        num_features = self.data.shape[1]
        num_unique_labels = self.unique_labels.shape[0]
        self.theta = np.zeros(
            (num_unique_labels, num_features
             ))  # 每个特征对应一个theta, 每个类别对应一组theta值, 以鸢尾花数据为例,theta值是一组3行4列的值
Example #16
0
    def __init__(self,
                 data,
                 labels,
                 polynomial_degree=0,
                 sinusoid_degree=0,
                 normalize_data=False):
        data_processed, features_mean, features_deviation = prepare_for_training(
            data, polynomial_degree, sinusoid_degree, normalize_data)
        self.data = data_processed
        self.labels = labels

        self.features_mean = features_mean
        self.features_deviation = features_deviation
        self.polynomial_degree = polynomial_degree
        self.sinusoid_degree = sinusoid_degree
        self.normalize_data = normalize_data

        self.num_examples, self.num_features = self.data.shape

        self.unique_labels = np.unique(self.labels)  # labels里有多少个不同值(分为几类)
        self.num_unique_labels, *_ = self.unique_labels.shape
        self.theta = np.zeros(
            (self.num_unique_labels, self.num_features))  # 初始化theta
    def get_cost(self, data, labels):
        data_processed = prepare_for_training(
            data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data
         )[0]

        return self.cost_function(data_processed, labels)
    def get_loss(self, data, labels):
        data_processed = prepare_for_training(data, self.polynomial_degree,
                                              self.sinusoid_degree,
                                              self.normalize_data)[0]

        return self.caluate_loss(data_processed, labels)