コード例 #1
0
print("test", test_score)    
print(classification_report(y_test, pipe.predict(X_test)))
data[labels.name + ' probability'] = pipe.predict_proba(X)[:, 1]


# Create LIME Explainer
feature_names = list(ce.columns_)
categorical_features = list(ce.cat_columns_ix_.values())
categorical_names = {i: ce.classes_[c]
                     for c, i in ce.cat_columns_ix_.items()}
class_names = ['No ' + labels.name, labels.name]
explainer = LimeTabularExplainer(ce.transform(data),
                                 feature_names=feature_names,
                                 class_names=class_names,
                                 categorical_features=categorical_features,
                                 categorical_names=categorical_names)    


# Create and save the combined Logistic Regression and LIME Explained Model.
explainedmodel = ExplainedModel(data=data, labels=labels, model_name='telco_linear',
                                categoricalencoder=ce, pipeline=pipe,
                                explainer=explainer,data_dir=data_dir)
explainedmodel.save()


# If running as as experiment, this will track the metrics and add the model trained in this training run to the experiment history.
cdsw.track_metric("train_score",round(train_score,2))
cdsw.track_metric("test_score",round(test_score,2))
cdsw.track_metric("model_path",explainedmodel.model_path)
cdsw.track_file(explainedmodel.model_path)
コード例 #2
0
#import os, sys
from collections import ChainMap
#from pandas.io.json import dumps as jsonify

from churnexplainer import ExplainedModel

em = ExplainedModel(model_name='telco_linear',data_dir='/home/cdsw')

def explain(args):
    #data = dict(ChainMap(request.args, em.default_data))
    data = dict(ChainMap(args, em.default_data))
    data = em.cast_dct(data)
    probability, explanation = em.explain_dct(data)
    return {
        'data': dict(data),
        'probability': probability,
        'explanation': explanation
        }

#test
#x={"StreamingTV":"No","MonthlyCharges":70.35,"PhoneService":"No","PaperlessBilling":"No","Partner":"No","OnlineBackup":"No","gender":"Female","Contract":"Month-to-month","TotalCharges":1397.475,"StreamingMovies":"No","DeviceProtection":"No","PaymentMethod":"Bank transfer (automatic)","tenure":29,"Dependents":"No","OnlineSecurity":"No","MultipleLines":"No","InternetService":"DSL","SeniorCitizen":"No","TechSupport":"No"}
#explain(x)
コード例 #3
0
log = logging.getLogger("werkzeug")
log.setLevel(logging.ERROR)

# Since we have access in an environment variable, we want to write it to our UI
# Change the line in the flask/single_view.html file.
if os.environ.get("SHTM_ACCESS_KEY") != None:
    access_key = os.environ.get("SHTM_ACCESS_KEY", "")
    subprocess.call([
        "sed",
        "-i",
        's/const\saccessKey.*/const accessKey = "' + access_key + '";/',
        "/home/cdsw/flask/single_view.html",
    ])

# Load the explained model
em = ExplainedModel(model_name="telco_linear", data_dir="/home/cdsw")


# Creates an explained version of a partiuclar data point. This is almost exactly the same as the data used in the model serving code.
def explainid(N):
    customer_data = dataid(N)[0]
    customer_data.pop("id")
    customer_data.pop("Churn probability")
    data = em.cast_dct(customer_data)
    probability, explanation = em.explain_dct(data)
    return {
        "data": dict(data),
        "probability": probability,
        "explanation": explanation,
        "id": int(N),
    }