import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as seabornInstance
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
#from sklearn.feature_selection import SelectFromModel
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
ServiceLevel = pd.read_csv("Service Level.csv")
#print(ServiceLevel.head())
#print(ServiceLevel.shape)
#print(ServiceLevel.describe())
#print(ServiceLevel.isnull().any())
y = ServiceLevel['SL'].values # Create arrays for the feature variable
X = ServiceLevel.drop(['SL','Date'], axis=1).values # Create arrays for the response variables
#X = ServiceLevel[['Volume Offered', 'Answered', 'Call Answered Within 20 Secs',
# 'Actual Staffing', 'AHT', 'MY AHT']].values # Create arrays for the response variables
# Check the average value of target (SL) column
plt.figure(figsize=(15,10))
plt.tight_layout()
seabornInstance.distplot(ServiceLevel['SL'])
#plt.show()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=42) # Split into training and test set
regressor = LinearRegression()
regressor.fit(X_train, y_train) # training the algorithm
print(regressor.intercept_) # retrieve the intercept
print(regressor.coef_) # retrieve the slop
y_pred = regressor.predict(X_test)
df = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
#print(df)
#print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))
#print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
#print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
# Mean Absolute Error: 0.0707227818477136
# Mean Squared Error: 0.009289545553397342
# Root Mean Squared Error: 0.09638228858767228
# Predicted SL
value = [((500*-1.62258670e-03) + (480*1.54044403e-03) + (150*2.09853820e-03) +
(600*-8.34715959e-04) + (700*-9.69616262e-05)) + 1.2884114995794873]
print(value)
# intercept
1.2884114995794873
# slope
[-1.62258670e-03 1.54044403e-03 2.09853820e-03 -8.34715959e-04
-9.69616262e-05]
# Predicted SL
[0.9626093002394872]