class_docstr: Class for learning a locally linear sparse model from perturbed data
class_docstr_tok: ["Class","for","learning","a","locally","linear","sparse","model","from","perturbed","data"]
docstr: Takes perturbed data, labels and distances, returns explanation.
  
  Args:
      neighborhood_data: perturbed data, 2d array. first element is
                         assumed to be the original data point.
      neighborhood_labels: corresponding perturbed labels. should have as
                           many columns as the number of possible labels.
      distances: distances to original data point.
      label: label for which we want an explanation
      num_features: maximum number of features in explanation
      feature_selection: how to select num_features. options are:
          'forward_selection': iteratively add features to the model.
              This is costly when num_features is high
          'highest_weights': selects the features that have the highest
              product of absolute weight * original data point when
              learning with all the features
          'lasso_path': chooses features based on the lasso
              regularization path
          'none': uses all features, ignores num_features
          'auto': uses forward_selection if num_features <= 6, and
              'highest_weights' otherwise.
      model_regressor: sklearn regressor to use in explanation.
          Defaults to Ridge regression if None. Must have
          model_regressor.coef_ and 'sample_weight' as a parameter
          to model_regressor.fit()
  
  Returns:
      (intercept, exp, score, local_pred):
      intercept is a float.
      exp is a sorted list of tuples, where each tuple (x,y) corresponds
      to the feature id (x) and the local weight (y). The list is sorted
      by decreasing absolute value of y.
      score is the R^2 value of the returned explanation
      local_pred is the prediction of the explanation model on the original instance
docstr_tok: ["Takes","perturbed","data",",","labels","and","distances",",","returns","explanation",".","Args",":","neighborhood_data",":","perturbed","data",",","2d","array",".","first","element","is","assumed","to","be","the","original","data","point",".","neighborhood_labels",":","corresponding","perturbed","labels",".","should","have","as","many","columns","as","the","number","of","possible","labels",".","distances",":","distances","to","original","data","point",".","label",":","label","for","which","we","want","an","explanation","num_features",":","maximum","number","of","features","in","explanation","feature_selection",":","how","to","select","num_features",".","options","are",":","'forward_selection","'",":","iteratively","add","features","to","the","model",".","This","is","costly","when","num_features","is","high","'highest_weights","'",":","selects","the","features","that","have","the","highest","product","of","absolute","weight","*","original","data","point","when","learning","with","all","the","features","'lasso_path","'",":","chooses","features","based","on","the","lasso","regularization","path","'none","'",":","uses","all","features",",","ignores","num_features","'auto","'",":","uses","forward_selection","if","num_features","<","=","6",",","and","'highest_weights","'","otherwise",".","model_regressor",":","sklearn","regressor","to","use","in","explanation",".","Defaults","to","Ridge","regression","if","None",".","Must","have","model_regressor.coef_","and","'sample_weight","'","as","a","parameter","to","model_regressor.fit","(",")","Returns",":","(","intercept",",","exp",",","score",",","local_pred",")",":","intercept","is","a","float",".","exp","is","a","sorted","list","of","tuples",",","where","each","tuple","(","x",",","y",")","corresponds","to","the","feature","id","(","x",")","and","the","local","weight","(","y",")",".","The","list","is","sorted","by","decreasing","absolute","value","of","y.","score","is","the","R^2","value","of","the","returned","explanation","local_pred","is","the","prediction","of","the","explanation","model","on","the","original","instance"]
code: def explain_instance_with_data(
      self,
      neighborhood_data,
      neighborhood_labels,
      distances,
      label,
      num_features,
      feature_selection="auto",
      model_regressor=None,
  ):
      """Takes perturbed data, labels and distances, returns explanation.
  
      Args:
          neighborhood_data: perturbed data, 2d array. first element is
                             assumed to be the original data point.
          neighborhood_labels: corresponding perturbed labels. should have as
                               many columns as the number of possible labels.
          distances: distances to original data point.
          label: label for which we want an explanation
          num_features: maximum number of features in explanation
          feature_selection: how to select num_features. options are:
              'forward_selection': iteratively add features to the model.
                  This is costly when num_features is high
              'highest_weights': selects the features that have the highest
                  product of absolute weight * original data point when
                  learning with all the features
              'lasso_path': chooses features based on the lasso
                  regularization path
              'none': uses all features, ignores num_features
              'auto': uses forward_selection if num_features <= 6, and
                  'highest_weights' otherwise.
          model_regressor: sklearn regressor to use in explanation.
              Defaults to Ridge regression if None. Must have
              model_regressor.coef_ and 'sample_weight' as a parameter
              to model_regressor.fit()
  
      Returns:
          (intercept, exp, score, local_pred):
          intercept is a float.
          exp is a sorted list of tuples, where each tuple (x,y) corresponds
          to the feature id (x) and the local weight (y). The list is sorted
          by decreasing absolute value of y.
          score is the R^2 value of the returned explanation
          local_pred is the prediction of the explanation model on the original instance
      """
  
      weights = self.kernel_fn(distances)
      labels_column = neighborhood_labels[:, label]
      used_features = self.feature_selection(
          neighborhood_data,
          labels_column,
          weights,
          num_features,
          feature_selection,
      )
  
      if model_regressor is None:
          model_regressor = Ridge(
              alpha=1,
              fit_intercept=True,
              random_state=self.random_state,
          )
      easy_model = model_regressor
      easy_model.fit(
          neighborhood_data[:, used_features],
          labels_column,
          sample_weight=weights,
      )
      prediction_score = easy_model.score(
          neighborhood_data[:, used_features],
          labels_column,
          sample_weight=weights,
      )
  
      local_pred = easy_model.predict(
          neighborhood_data[0, used_features].reshape(1, -1)
      )
  
      if self.verbose:
          print("Intercept", easy_model.intercept_)
          print(
              "Prediction_local",
              local_pred,
          )
          print("Right:", neighborhood_labels[0, label])
      return (
          easy_model.intercept_,
          sorted(
              zip(used_features, easy_model.coef_),
              key=lambda x: np.abs(x[1]),
              reverse=True,
          ),
          prediction_score,
          local_pred,
      )
  
file_path: tensorwatch/tensorwatch/saliency/lime/lime_base.py
imports: from __future__ import print_function
  import numpy
  from sklearn.linear_model import Ridge, lars_path
  from sklearn.utils import check_random_state
label_desc: Use image node_id 5 for calling the LimeBase obj's underlying member method code with example usage: obj.explain_instance_with_data(neighborhood_data, neighborhood_labels, distances, label, num_features, feature_selection, model_regressor) and returns: easy_model,  sorted,  prediction_score,  local_pred