Final Code
Final Code
"""New_3.ipynb
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import datetime as dt
# Recency
df['Recency'] = df['Recency']
# Frequency
df['Frequency'] = df['NumDealsPurchases'] + df['NumCatalogPurchases'] +
df['NumStorePurchases'] + df['NumWebPurchases']
# Monetary
df['Monetary'] = df['MntFishProducts'] + df['MntMeatProducts'] + df['MntFruits'] +
df['MntSweetProducts'] + df['MntWines'] +df['MntGoldProds']
rfm.head()
print(type(outliers))
outliers.head(10)
rfm_outliers=df[outliers].reset_index(drop=True)
rfm_outliers.head(10)
#print(rfm_outliers)
rfm_df = rfm_cleaned[['RFM_score']]
print(rfm_df)
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans # Import KMeans
from sklearn.metrics import silhouette_score # Import silhouette_score
# Finding the optimal k using the Elbow Method (point of maximum curvature)
diff_wcss = np.diff(wcss)
diff_wcss_ratio = diff_wcss[:-1] / diff_wcss[1:]
optimal_k = k_range[np.argmax(diff_wcss_ratio) + 1] # Use the defined k_range
print(f'Optimal number of clusters (k) based on Elbow Method: {optimal_k}')