https://cdn-icons-png.flaticon.com/512/5968/5968914.png

Integrate predictive ML models with SaaS apps and update fields in your business applications.

The Peliqan platform allows you to write predictions to a SaaS application such as Salesforce. Use Writeback to update fields or create new records (e.g. Tasks) to automate actions based on predictions.

This tutorial is tailored for a Churn Prediction App. We will create Tasks in Salesforce, you can modify it to work with other models as well.

Import required modules

from sklearn.feature_extraction.text import TfidfVectorizer
from joblib import load
import pandas as pd

# Loading models to make predictions
model = load('/data_app/model_churn_prediction')
encoder = load('/data_app/encoder_churn_prediction')

Load new records

Load new records that do not have a prediction yet (prediction is null). Make sure you create a “Prediction” column first in the spreadsheet view of the table:

dbconn = pq.dbconnect('dw_123')
my_query = 'select * from customer_churn where prediction is null limit 5'
df = dbconn.fetch('dw_123', query = my_query, df = True)

Data Preprocessing & Predicting

For predicting, we have to prepare the data in the same format as it was trained on.

X = df.drop(['Prediction', 'Churn', 'CustomerName'], axis=1)
# converting categorical columns to numeric
cat_cols = X.select_dtypes('object').columns
X[cat_cols] = X[cat_cols].apply(lambda x: encoder[x.name].transform(x))

# Making prediction
prediction = model.predict(X)
proba = model.predict_proba(X)[0][prediction]
result = pd.DataFrame({'CustomerID':X['CustomerID'], 'Customer Name':df['CustomerName'],'Prediction': prediction, })#'Probability': proba})

st.dataframe(result)

Note: It's recommended to add Try/Except statement to capture the error when there are no records to update.

Task creation in Salesforce

for _, record in results.iterrows()
	if record['Prediction'] == 1:
		# create a Task in Salesforce for follow up by an Sales Account Manager
		Salesforce.add("task", title = "Reach out to " + record["name"])

Click here to learn more about write-back to SaaS apps.