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))
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))
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)
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)
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
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))
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))
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列的值
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)