One of the most exciting areas of machine learning is prediction.
To predict events gives you an almost unfair advantage to competitors.
Example:
What if a bank could predict the customers that will leave the bank?
With the Churn Prediction Model below that is possible!
This models uses predefined parameters to show the customers that are most likely to leave the bank.
The model is trained using the following data from the history of the bank's customers:
- Customer ID
- Surname
- Credit Score
- Location
- Gender
- Age
- Tenure
- Balance
- Number of products the customer consumes
- If the customer has Credit Card
- Customer Estimated Salary,
- The customer exited the bank already?
With model trained, the data from current customers is loaded to make the prediction.
It is actually a quite short and "simple" code in python.
Here it is:
# Artificial Neural Network # Importing the libraries import numpy as np import pandas as pd import tensorflow as tf tf.__version__ # Part 1 - Data Preprocessing # Importing the dataset dataset = pd.read_csv('dataset.csv') X = dataset.iloc[:, 3:-1].values y = dataset.iloc[:, -1].values print(X) print(y) # Encoding categorical data # Label Encoding the "Gender" column from sklearn.preprocessing import LabelEncoder le = LabelEncoder() X[:, 2] = le.fit_transform(X[:, 2]) print(X) # One Hot Encoding the "Geography" column from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough') X = np.array(ct.fit_transform(X)) print(X) # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # Part 2 - Building the ANN # Initializing the ANN ann = tf.keras.models.Sequential() # Adding the input layer and the first hidden layer ann.add(tf.keras.layers.Dense(units=6, activation='relu')) # Adding the second hidden layer ann.add(tf.keras.layers.Dense(units=6, activation='relu')) # Adding the output layer ann.add(tf.keras.layers.Dense(units=1, activation='sigmoid')) # Part 3 - Training the ANN # Compiling the ANN ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy']) # Training the ANN on the Training set ann.fit(X_train, y_train, batch_size = 32, epochs = 100) # Part 4 - Making the predictions and evaluating the model # Predicting the result of a single observation print(ann.predict(sc.transform([[1, 0, 0, 600, 1, 40, 3, 60000, 2, 1, 1, 50000]])) > 0.5) # Predicting the Test set results y_pred = ann.predict(X_test) y_pred = (y_pred > 0.5) print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1)) # Making the Confusion Matrix from sklearn.metrics import confusion_matrix, accuracy_score cm = confusion_matrix(y_test, y_pred) print(cm) accuracy_score(y_test, y_pred)
Thanks for reading!