def calc_metrics(self, data, history, dataset, logs): y_true = [] predictions = [] B = self.batch_size for i in range(0, len(data[0]), B): if self.verbose == 1: print("\r\tdone {}/{}".format(i, len(data[0]))) if self.target_repl: (x, y, y_repl) = (data[0][i:i + B], data[1][0][i:i + B], data[1][1][i:i + B]) else: (x, y) = (data[0][i:i + B], data[1][i:i + B]) outputs = self.model.predict(x, batch_size=B) if self.target_repl: predictions += list(np.array(outputs[0]).flatten()) else: predictions += list(np.array(outputs).flatten()) y_true += list(np.array(y).flatten()) print("\n") predictions = np.array(predictions) predictions = np.stack([1 - predictions, predictions], axis=1) ret = metrics.print_metrics_binary(y_true, predictions) for k, v in ret.iteritems(): logs[dataset + '_' + k] = v history.append(ret)
def calc_metrics(self, data_gen, history, dataset, logs): y_true = [] predictions = [] for i in range(data_gen.steps): if self.verbose == 1: print "\r\tdone {}/{}".format(i, data_gen.steps), (x, y) = next(data_gen) pred = self.model.predict(x, batch_size=self.batch_size) if self.deep_supervision: for m, t, p in zip(x[1].flatten(), y.flatten(), pred.flatten()): if np.equal(m, 1): y_true.append(t) predictions.append(p) else: y_true += list(y.flatten()) predictions += list(pred.flatten()) print "\n" predictions = np.array(predictions) predictions = np.stack([1 - predictions, predictions], axis=1) ret = metrics.print_metrics_binary(y_true, predictions) for k, v in ret.iteritems(): logs[dataset + '_' + k] = v history.append(ret)
def calc_metrics(self, data_gen, history, dataset, logs): y_true = [] predictions = [] for i in range(data_gen.steps): if self.verbose == 1: print "\r\tdone {}/{}".format(i, data_gen.steps), (x, y) = next(data_gen) pred = self.model.predict(x, batch_size=self.batch_size) if self.deep_supervision: for m, t, p in zip(x[1].flatten(), y.flatten(), pred.flatten()): if np.equal(m, 1): y_true.append(t) predictions.append(p) else: y_true += list(y.flatten()) predictions += list(pred.flatten()) print "\n" predictions = np.array(predictions) predictions = np.stack([1 - predictions, predictions], axis=1) ret = metrics.print_metrics_binary(y_true, predictions) for k, v in ret.iteritems(): logs[dataset + '_' + k] = v history.append(ret)
def calc_metrics(self, data, history, dataset, logs): y_true = [] predictions = [] B = self.batch_size for i in range(0, len(data[0]), B): if self.verbose == 1: print "\r\tdone {}/{}".format(i, len(data[0])), if self.target_repl: (x, y, y_repl) = (data[0][i:i + B], data[1][0][i:i + B], data[1][1][i:i + B]) else: (x, y) = (data[0][i:i + B], data[1][i:i + B]) outputs = self.model.predict(x, batch_size=B) if self.target_repl: predictions += list(np.array(outputs[0]).flatten()) else: predictions += list(np.array(outputs).flatten()) y_true += list(np.array(y).flatten()) print "\n" predictions = np.array(predictions) predictions = np.stack([1 - predictions, predictions], axis=1) ret = metrics.print_metrics_binary(y_true, predictions) for k, v in ret.iteritems(): logs[dataset + '_' + k] = v history.append(ret)
def calc_metrics(self, data, history, dataset, logs): y_true = [] predictions = [] for i in range(0, len(data[0]), self.batch_size): if self.verbose == 1: print "\r\tdone {}/{}".format(i, len(data[0])), (x, y) = (data[0][i:i + self.batch_size], data[1][i:i + self.batch_size]) if len(y) == 2: # target replication y_true += list(y[0].flatten()) else: y_true += list(np.array(y).flatten()) outputs = self.model.predict(x, batch_size=self.batch_size) if len(outputs) == 2: predictions += list(outputs[0].flatten()) else: predictions += list(outputs.flatten()) print "\n" predictions = np.array(predictions) predictions = np.stack([1 - predictions, predictions], axis=1) ret = metrics.print_metrics_binary(y_true, predictions) for k, v in ret.iteritems(): logs[dataset + '_' + k] = v history.append(ret)
def calc_metrics(self, data_gen, history, dataset, logs): ihm_y_true = [] decomp_y_true = [] los_y_true = [] pheno_y_true = [] ihm_pred = [] decomp_pred = [] los_pred = [] pheno_pred = [] for i in range(data_gen.steps): if self.verbose == 1: print("\r\tdone {}/{}".format(i, data_gen.steps)) (X, y, los_y_reg) = data_gen.next(return_y_true=True) outputs = self.model.predict(X, batch_size=self.batch_size) ihm_M = X[1] decomp_M = X[2] los_M = X[3] if not data_gen.target_repl: # no target replication (ihm_p, decomp_p, los_p, pheno_p) = outputs (ihm_t, decomp_t, los_t, pheno_t) = y else: # target replication (ihm_p, _, decomp_p, los_p, pheno_p, _) = outputs (ihm_t, _, decomp_t, los_t, pheno_t, _) = y los_t = los_y_reg # real value not the label # ihm for (m, t, p) in zip(ihm_M.flatten(), ihm_t.flatten(), ihm_p.flatten()): if np.equal(m, 1): ihm_y_true.append(t) ihm_pred.append(p) # decomp for (m, t, p) in zip(decomp_M.flatten(), decomp_t.flatten(), decomp_p.flatten()): if np.equal(m, 1): decomp_y_true.append(t) decomp_pred.append(p) # los if los_p.shape[-1] == 1: # regression for (m, t, p) in zip(los_M.flatten(), los_t.flatten(), los_p.flatten()): if np.equal(m, 1): los_y_true.append(t) los_pred.append(p) else: # classification for (m, t, p) in zip(los_M.flatten(), los_t.flatten(), los_p.reshape((-1, 10))): if np.equal(m, 1): los_y_true.append(t) los_pred.append(p) # pheno for (t, p) in zip(pheno_t.reshape((-1, 25)), pheno_p.reshape((-1, 25))): pheno_y_true.append(t) pheno_pred.append(p) print("\n") # ihm print("\n ================= 48h mortality ================") ihm_pred = np.array(ihm_pred) ihm_pred = np.stack([1 - ihm_pred, ihm_pred], axis=1) ret = metrics.print_metrics_binary(ihm_y_true, ihm_pred) for k, v in ret.iteritems(): logs[dataset + '_ihm_' + k] = v # decomp print("\n ================ decompensation ================") decomp_pred = np.array(decomp_pred) decomp_pred = np.stack([1 - decomp_pred, decomp_pred], axis=1) ret = metrics.print_metrics_binary(decomp_y_true, decomp_pred) for k, v in ret.iteritems(): logs[dataset + '_decomp_' + k] = v # los print("\n ================ length of stay ================") if self.partition == 'log': los_pred = [metrics.get_estimate_log(x, 10) for x in los_pred] ret = metrics.print_metrics_log_bins(los_y_true, los_pred) if self.partition == 'custom': los_pred = [metrics.get_estimate_custom(x, 10) for x in los_pred] ret = metrics.print_metrics_custom_bins(los_y_true, los_pred) if self.partition == 'none': ret = metrics.print_metrics_regression(los_y_true, los_pred) for k, v in ret.iteritems(): logs[dataset + '_los_' + k] = v # pheno print("\n =================== phenotype ==================") pheno_pred = np.array(pheno_pred) ret = metrics.print_metrics_multilabel(pheno_y_true, pheno_pred) for k, v in ret.iteritems(): logs[dataset + '_pheno_' + k] = v history.append(logs)
def on_epoch_end(self, epoch, logs={}): print("\n==>predicting on validation") yhat = self.model.predict(self.val_X, batch_size=self.batch_size) yhat = np.array(yhat)[:, 0] result = metrics.print_metrics_binary(np.array(self.val_y), yhat) self.results.append(result)
def calc_metrics(self, data_gen, history, dataset, logs): ihm_y_true = [] decomp_y_true = [] los_y_true = [] pheno_y_true = [] ihm_pred = [] decomp_pred = [] los_pred = [] pheno_pred = [] for i in range(data_gen.steps): if self.verbose == 1: print "\r\tdone {}/{}".format(i, data_gen.steps), (X, y, los_y_reg) = data_gen.next(return_y_true=True) outputs = self.model.predict(X, batch_size=self.batch_size) ihm_M = X[1] decomp_M = X[2] los_M = X[3] if not data_gen.target_repl: # no target replication (ihm_p, decomp_p, los_p, pheno_p) = outputs (ihm_t, decomp_t, los_t, pheno_t) = y else: # target replication (ihm_p, _, decomp_p, los_p, pheno_p, _) = outputs (ihm_t, _, decomp_t, los_t, pheno_t, _) = y los_t = los_y_reg # real value not the label # ihm for (m, t, p) in zip(ihm_M.flatten(), ihm_t.flatten(), ihm_p.flatten()): if np.equal(m, 1): ihm_y_true.append(t) ihm_pred.append(p) # decomp for (m, t, p) in zip(decomp_M.flatten(), decomp_t.flatten(), decomp_p.flatten()): if np.equal(m, 1): decomp_y_true.append(t) decomp_pred.append(p) # los if los_p.shape[-1] == 1: # regression for (m, t, p) in zip(los_M.flatten(), los_t.flatten(), los_p.flatten()): if np.equal(m, 1): los_y_true.append(t) los_pred.append(p) else: # classification for (m, t, p) in zip(los_M.flatten(), los_t.flatten(), los_p.reshape((-1, 10))): if np.equal(m, 1): los_y_true.append(t) los_pred.append(p) # pheno for (t, p) in zip(pheno_t.reshape((-1, 25)), pheno_p.reshape((-1, 25))): pheno_y_true.append(t) pheno_pred.append(p) print "\n" # ihm print "\n ================= 48h mortality ================" ihm_pred = np.array(ihm_pred) ihm_pred = np.stack([1 - ihm_pred, ihm_pred], axis=1) ret = metrics.print_metrics_binary(ihm_y_true, ihm_pred) for k, v in ret.iteritems(): logs[dataset + '_ihm_' + k] = v # decomp print "\n ================ decompensation ================" decomp_pred = np.array(decomp_pred) decomp_pred = np.stack([1 - decomp_pred, decomp_pred], axis=1) ret = metrics.print_metrics_binary(decomp_y_true, decomp_pred) for k, v in ret.iteritems(): logs[dataset + '_decomp_' + k] = v # los print "\n ================ length of stay ================" if self.partition == 'log': los_pred = [metrics.get_estimate_log(x, 10) for x in los_pred] ret = metrics.print_metrics_log_bins(los_y_true, los_pred) if self.partition == 'custom': los_pred = [metrics.get_estimate_custom(x, 10) for x in los_pred] ret = metrics.print_metrics_custom_bins(los_y_true, los_pred) if self.partition == 'none': ret = metrics.print_metrics_regression(los_y_true, los_pred) for k, v in ret.iteritems(): logs[dataset + '_los_' + k] = v # pheno print "\n =================== phenotype ==================" pheno_pred = np.array(pheno_pred) ret = metrics.print_metrics_multilabel(pheno_y_true, pheno_pred) for k, v in ret.iteritems(): logs[dataset + '_pheno_' + k] = v history.append(logs)