Commit 4777a227 authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

changes to standard.

parent e3732c6e
Loading
Loading
Loading
Loading
+7 −30
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@ Code for processing datasets using scikit-learn.
"""
import numpy as np
from deep_chem.utils.analysis import results_to_csv
from deep_chem.utils.load import load_and_transform_dataset
from deep_chem.utils.preprocess import split_dataset
from deep_chem.utils.preprocess import dataset_to_numpy
from deep_chem.utils.evaluate import eval_model
@@ -21,8 +20,7 @@ from sklearn.linear_model import ElasticNetCV
from sklearn.linear_model import LassoLarsCV
from sklearn.svm import SVR

def fit_singletask_models(per_task_data, modeltype, task_types,
    num_to_train=None):
def fit_singletask_models(per_task_data, modeltype, task_types):
  """Fits singletask linear regression models to potency.

  Parameters
@@ -42,12 +40,8 @@ def fit_singletask_models(per_task_data, modeltype, task_types,
    dict mapping target names to label transform. Each output type must be either
    None or "log". Only for regression outputs.
  """
  all_results = {}
  aucs, r2s, rms = {}, {}, {}
  sorted_targets = sorted(per_task_data.keys())
  if num_to_train:
    sorted_targets = sorted_targets[:num_to_train]
  for index, target in enumerate(sorted_targets):
  models = {}
  for index, target in enumerate(sorted(per_task_data.keys())):
    print "Building model %d" % index
    (train, X_train, y_train, W_train), (test, X_test, y_test, W_test) = (
        per_task_data[target])
@@ -72,28 +66,11 @@ def fit_singletask_models(per_task_data, modeltype, task_types,
    else:
      raise ValueError("Invalid model type provided.")
    model.fit(X_train, y_train.ravel())
    results = eval_model(test, model, {target: task_types[target]},
        modeltype="sklearn")
    all_results[target] = results[target]

    target_aucs = compute_roc_auc_scores(results, task_types)
    target_r2s = compute_r2_scores(results, task_types)
    target_rms = compute_rms_scores(results, task_types)
    
    aucs.update(target_aucs)
    r2s.update(target_r2s)
    rms.update(target_rms)
  if aucs:
    print results_to_csv(aucs)
    print "Mean AUC: %f" % np.mean(np.array(aucs.values()))
  if r2s:
    print results_to_csv(r2s)
    print "Mean R^2: %f" % np.mean(np.array(r2s.values()))
  if rms:
    print results_to_csv(rms)
    print "Mean RMS: %f" % np.mean(np.array(rms.values()))
  return all_results
    models[target] = model
  return models

# TODO(rbharath): I believe this is broken. Update it to work with the rest of
# the package.
def fit_multitask_rf(train_data, test_data, task_types):
  """Fits a multitask RF model to provided dataset.
  """