Instantly share code, notes, and snippets.

## rooneyroy / gist:f34276fa3049a598d2401ef64189133b

- Download ZIP
- Star ( 0 ) 0 You must be signed in to star a gist
- Fork ( 0 ) 0 You must be signed in to fork a gist
- Embed Embed this gist in your website.
- Share Copy sharable link for this gist.
- Clone via HTTPS Clone using the web URL.
- Learn more about clone URLs
- Save rooneyroy/f34276fa3049a598d2401ef64189133b to your computer and use it in GitHub Desktop.

# Set Working Directory | |

setwd("F:/IIITB - Upgrad/Course 3 - Predictive Analysis/Case Study") | |

# Install and Load the required packages | |

install.packages("MASS") | |

install.packages("car") | |

install.packages("e1071") | |

install.packages("ROCR") | |

install.packages("caret") | |

install.packages("Hmisc") | |

install.packages("plyr") | |

install.packages("ggplot2") | |

install.packages("moments") | |

install.packages("arules") | |

install.packages("ROCR") | |

install.packages("class") | |

library(ROCR) | |

library(arules) | |

library(MASS) | |

library(car) | |

library(caret) | |

library(ROCR) | |

library(e1071) | |

library(Hmisc) | |

library(plyr) | |

library(ggplot2) | |

library(arules) | |

library(class) | |

#Checkpoint 1 | |

# Load the given files. | |

churn_data <- read.csv("churn_data.csv", stringsAsFactors = FALSE) | |

customer_data <- | |

read.csv("customer_data.csv", stringsAsFactors = FALSE) | |

internet_data <- | |

read.csv("internet_data.csv", stringsAsFactors = FALSE) | |

str(churn_data) | |

str(customer_data) | |

str(internet_data) | |

# Collate the 3 files in a single file. | |

merge1 <- merge(churn_data, customer_data, by = 'customerID') | |

churn <- merge(merge1, internet_data, by = 'customerID') | |

# Understand the structure of the collated file. | |

str(churn) | |

#Checkpoint 2 - EDA | |

# Make bar charts to find interesting relationships between variables. | |

#Distribution of monthly charges along with churn | |

ggplot(churn, aes(x = churn$MonthlyCharges)) + geom_histogram() + aes(fill = churn$Churn) | |

#Distribution of tenure along with churn | |

ggplot(churn, aes(x = churn$tenure)) + geom_histogram() + aes(fill = churn$Churn) | |

#Gender wise churn | |

ggplot(churn, aes(x = churn$Churn, fill = churn$gender)) + geom_bar() | |

#internet service wise churn | |

ggplot(churn, aes(x = churn$InternetService, fill = churn$Churn)) + geom_bar() | |

#payment method wise churn | |

ggplot(churn, aes(x = churn$PaymentMethod, fill = churn$Churn)) + geom_bar() | |

#Techsupport wise churn | |

ggplot(churn, aes(x = churn$TechSupport, fill = churn$Churn)) + geom_bar() | |

#Checkpoint 3 - Data Preparation | |

# Make Box plots for numeric variables to look for outliers. | |

boxplot(churn$tenure) | |

boxplot.stats(churn$tenure) #No Outlier | |

boxplot(churn$MonthlyCharges) | |

boxplot.stats(churn$MonthlyCharges) #No Outlier | |

boxplot(churn$TotalCharges) | |

boxplot.stats(churn$TotalCharges) #No Outlier | |

# Perform De-Duplication if required | |

which(duplicated(churn) == 'TRUE') #No Duplicates | |

# Impute the missing values, and perform the outlier treatment. | |

sapply(churn, function(x) | |

sum(is.na(x))) | |

churn$TotalCharges[which(is.na(churn$TotalCharges) == 'TRUE')] <- | |

mean(churn$TotalCharges, na.rm = TRUE) | |

#CHECKPOINT 4: Modeling | |

#Model 1: Logistics Regression | |

#Creating object for modeling | |

churn_df = cbind.data.frame(churn$tenure, churn$MonthlyCharges, churn$TotalCharges) | |

names(churn_df)[names(churn_df) == 'churn$tenure'] <- 'tenure' | |

names(churn_df)[names(churn_df) == 'churn$MonthlyCharges'] <- | |

'MonthlyCharges' | |

names(churn_df)[names(churn_df) == 'churn$TotalCharges'] <- | |

'TotalCharges' | |

# Bring the variables in the correct format | |

dummy_PhoneService = as.data.frame(model.matrix( ~ PhoneService - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_PhoneService[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_PhoneService[, -1]'] <- | |

'dummy_PhoneService' | |

dummy_PaperlessBilling = as.data.frame(model.matrix( ~ PaperlessBilling - | |

1, data = churn)) | |

churn_df = cbind(churn_df, dummy_PaperlessBilling[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_PaperlessBilling[, -1]'] <- | |

'dummy_PaperlessBilling' | |

dummy_Churn = as.data.frame(model.matrix( ~ Churn - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_Churn[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_Churn[, -1]'] <- | |

'dummy_Churn' | |

dummy_gender = as.data.frame(model.matrix( ~ gender - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_gender[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_gender[, -1]'] <- | |

'dummy_gender' | |

#Senior Citizen data is already in 0-1 format, changing it to numeric | |

churn_df = cbind(churn_df, as.numeric(churn$SeniorCitizen)) | |

names(churn_df)[names(churn_df) == 'as.numeric(churn$SeniorCitizen)'] <- | |

'dummy_SeniorCitizen' | |

dummy_Partner = as.data.frame(model.matrix( ~ Partner - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_Partner[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_Partner[, -1]'] <- | |

'dummy_Partner' | |

dummy_Dependents = as.data.frame(model.matrix( ~ Dependents - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_Dependents[, -1]) | |

names(churn_df)[names(churn_df) == 'dummy_Dependents[, -1]'] <- | |

'dummy_Dependents' | |

dummy_contract = as.data.frame(model.matrix( ~ Contract - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_contract[, -3]) | |

dummy_PaymentMethod = as.data.frame(model.matrix( ~ PaymentMethod - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_PaymentMethod[, -4]) | |

dummy_InternetService = as.data.frame(model.matrix( ~ InternetService - | |

1, data = churn)) | |

churn_df = cbind(churn_df, dummy_InternetService[, -3]) | |

dummy_OnlineSecurity = as.data.frame(model.matrix( ~ OnlineSecurity - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_OnlineSecurity[, -3]) | |

dummy_OnlineBackup = as.data.frame(model.matrix( ~ OnlineBackup - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_OnlineBackup[, -3]) | |

dummy_multiplelines = as.data.frame(model.matrix( ~ MultipleLines - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_multiplelines[, -3]) | |

dummy_DeviceProtection = as.data.frame(model.matrix( ~ DeviceProtection - | |

1, data = churn)) | |

churn_df = cbind(churn_df, dummy_DeviceProtection[, -3]) | |

dummy_TechSupport = as.data.frame(model.matrix( ~ TechSupport - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_TechSupport[, -3]) | |

dummy_StreamingTV = as.data.frame(model.matrix( ~ StreamingTV - 1, data = churn)) | |

churn_df = cbind(churn_df, dummy_StreamingTV[, -3]) | |

dummy_StreamingMovies = as.data.frame(model.matrix( ~ StreamingMovies - | |

1, data = churn)) | |

churn_df = cbind(churn_df, dummy_StreamingMovies[, -3]) | |

str(churn_df) | |

#Split data set | |

set.seed(100) | |

train.indices = sample(1:nrow(churn_df), 0.7 * nrow(churn_df)) | |

train.data = churn_df[train.indices,] | |

test.data = churn_df[-train.indices,] | |

# Initial Model with all variables | |

initial_model = glm(dummy_Churn ~ ., data = train.data, family = "binomial") | |

summary(initial_model) | |

# Stepwise selection | |

step_model = step(initial_model, direction = "both") | |

summary(step_model) | |

vif(step_model) | |

dummy_Churn ~ tenure + MonthlyCharges + TotalCharges + dummy_PhoneService + | |

dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractMonth-to-month` + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

OnlineBackupNo + TechSupportNo | |

#Remove Tenure (High VIF) | |

model1 = glm( | |

dummy_Churn ~ MonthlyCharges + TotalCharges + dummy_PhoneService + | |

dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractMonth-to-month` + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

OnlineBackupNo + TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model1) | |

vif(model1) | |

#Remove ContractMonth-to-month (High VIF) | |

model2 = glm( | |

dummy_Churn ~ MonthlyCharges + TotalCharges + dummy_PhoneService + | |

dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

OnlineBackupNo + TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model2) | |

vif(model2) | |

#Remove OnlineBackupNo (Insignificant) | |

model3 = glm( | |

dummy_Churn ~ MonthlyCharges + TotalCharges + dummy_PhoneService + | |

dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model3) | |

vif(model3) | |

#Checking correlation between MonthlyCharges & TotalCharges | |

cor(train.data$MonthlyCharges, train.data$TotalCharges) | |

#Since strong correlation, removing MonthlyCharges | |

model4 = glm( | |

dummy_Churn ~ TotalCharges + dummy_PhoneService + | |

dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model4) | |

vif(model4) | |

#Removing dummy_PhoneService (low significance) | |

model5 = glm( | |

dummy_Churn ~ TotalCharges + dummy_PaperlessBilling + dummy_SeniorCitizen + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model5) | |

vif(model5) | |

#Removing dummy_SeniorCitizen (low significance) | |

model6 = glm( | |

dummy_Churn ~ TotalCharges + dummy_PaperlessBilling + `ContractOne year` + | |

`PaymentMethodElectronic check` + InternetServiceDSL + OnlineSecurityNo + | |

TechSupportNo, | |

data = train.data, | |

family = "binomial" | |

) | |

summary(model6) | |

vif(model6) | |

best_model_log = model6 | |

summary(best_model_log) | |

## C-statistic | |

train.data$predicted_prob = predict(best_model_log, type = "response") | |

rcorr.cens(train.data$predicted_prob, train.data$dummy_Churn) | |

test.data$predicted_prob = predict(best_model_log, newdata = test.data, type = "response") | |

rcorr.cens(test.data$predicted_prob, test.data$dummy_Churn) | |

#KS-statistic | |

#Train Data | |

model_score <- | |

prediction(train.data$predicted_prob, train.data$dummy_Churn) | |

model_perf <- performance(model_score, "tpr", "fpr") | |

ks_table <- | |

attr(model_perf, "y.values")[[1]] - (attr(model_perf, "x.values")[[1]]) | |

ks = max(ks_table) | |

ks | |

which(ks_table == ks) | |

#Test Data | |

model_score_test <- | |

prediction(test.data$predicted_prob, test.data$dummy_Churn) | |

model_perf_test <- performance(model_score_test, "tpr", "fpr") | |

ks_table_test <- | |

attr(model_perf_test, "y.values")[[1]] - (attr(model_perf_test, "x.values")[[1]]) | |

ks_test = max(ks_table_test) | |

ks_test | |

which(ks_table_test == ks_test) | |

# Selecting threshold value | |

# ROC curve | |

plot(model_perf, col = "red", lab = c(10, 10, 10)) | |

plot(model_perf_test, col = "red", lab = c(10, 10, 10)) | |

#confusion matrix 1 (Threshold Value = 0.5) | |

confusionMatrix(as.numeric(train.data$predicted_prob > 0.5), | |

train.data$dummy_Churn, | |

positive = "1") | |

confusionMatrix(as.numeric(test.data$predicted_prob > 0.5), | |

test.data$dummy_Churn, | |

positive = "1") | |

#confusion matrix 2 (Threshold Value = 0.3) | |

confusionMatrix(as.numeric(train.data$predicted_prob > 0.3), | |

train.data$dummy_Churn, | |

positive = "1") | |

confusionMatrix(as.numeric(test.data$predicted_prob > 0.3), | |

test.data$dummy_Churn, | |

positive = "1") | |

#confusion matrix 3 (Threshold Value = 0.7) | |

confusionMatrix(as.numeric(train.data$predicted_prob > 0.7), | |

train.data$dummy_Churn, | |

positive = "1") | |

confusionMatrix(as.numeric(test.data$predicted_prob > 0.7), | |

test.data$dummy_Churn, | |

positive = "1") | |

# Model2 | |

# K-NN Model: | |

#Creating "churn_knn" dataframe from "churn_df" and bringing original churn data | |

churn_knn = churn_df[, -6] | |

churn_knn = cbind(churn_knn, as.factor(churn$Churn)) | |

names(churn_knn)[names(churn_knn) == 'as.factor(churn$Churn)'] <- | |

'Churn' | |

# Bring the data in the correct format to implement K-NN model. | |

churn_knn$MonthlyCharges <- scale(churn_knn$MonthlyCharges) | |

churn_knn$TotalCharges <- scale(churn_knn$TotalCharges) | |

# Implement the K-NN model for optimal K. | |

set.seed(2) | |

s1 = sample(1:nrow(churn_knn), 0.7 * nrow(churn_knn)) | |

churn_knn_train = churn_knn[s1, ] | |

churn_knn_test = churn_knn[-s1, ] | |

cl <- churn_knn_train[, 31] | |

#Removing Class label "dummy_churn" from the train and test data set | |

churn_knn_train1 <- churn_knn_train[, -31] | |

churn_knn_test1 <- churn_knn_test[, -31] | |

#Using the train() command to find the best K. | |

model <- train( | |

Churn ~ ., | |

data = churn_knn_train, | |

method = 'knn', | |

tuneGrid = expand.grid(.k = 1:50), | |

metric = 'Accuracy', | |

trControl = trainControl( | |

method = 'repeatedcv', | |

number = 10, | |

repeats = 10 | |

) | |

) | |

#Generating the plot of the model | |

model | |

plot(model) # Looking at graph we can see that optimum K = 19 (Post which not much difference in accuracy) | |

#Creating the model with optimum cost | |

impknn2 <- | |

knn(churn_knn_train1, | |

churn_knn_test1, | |

cl, | |

k = 19, | |

prob = TRUE) | |

table(impknn2, churn_knn_test[, 31]) | |

confusionMatrix(impknn2, churn_knn_test[, 31], positive = "Yes") | |

#KNN Model Solution | |

# Accuracy = 79.32% | |

# Sensitivity = 50.98% | |

# Specificity = 89.51% | |

########################################################################## | |

# Model 3 | |

# Naive Bayes Model: | |

#Using the original data set | |

str(churn) | |

# Bring the data in the correct format to implement Naive Bayes algorithm. | |

churn$customerID <- factor(churn$customerID) | |

churn$PhoneService <- factor(churn$PhoneService) | |

churn$Contract <- factor(churn$Contract) | |

churn$PaperlessBilling <- factor(churn$PaperlessBilling) | |

churn$PaymentMethod <- factor(churn$PaymentMethod) | |

churn$Churn <- factor(churn$Churn) | |

churn$gender <- factor(churn$gender) | |

churn$Partner <- factor(churn$Partner) | |

churn$Dependents <- factor(churn$Dependents) | |

churn$MultipleLines <- factor(churn$MultipleLines) | |

churn$InternetService <- factor(churn$InternetService) | |

churn$OnlineSecurity <- factor(churn$OnlineSecurity) | |

churn$OnlineBackup <- factor(churn$DeviceProtection) | |

churn$TechSupport <- factor(churn$TechSupport) | |

churn$StreamingTV <- factor(churn$StreamingTV) | |

churn$StreamingMovies <- factor(churn$StreamingMovies) | |

churn$DeviceProtection <- factor(churn$DeviceProtection) | |

set.seed(2) | |

s = sample(1:nrow(churn), 0.7 * nrow(churn)) | |

churn_NB_train = churn[s, ] | |

churn_NB_test = churn[-s, ] | |

churn_NB_test1 <- churn_NB_test[, -9] | |

# Implement the Naive Bayes algorithm. | |

model <- naiveBayes(churn_NB_train$Churn ~ . , data = churn_NB_train) | |

pred <- predict(model, churn_NB_test1) | |

table(pred, churn_NB_test$Churn) | |

confusionMatrix(pred, churn_NB_test$Churn) | |

#Naive Bayes Solution | |

#??? Accuracy=71.46% | |

#??? Sensitivity = 68.79% | |

#??? Specificit y=78.89% | |

#??? ROC Curve | |

############################################################################### | |

# Model 4 | |

# SVM: | |

# Bring the data in the correct format to implement the SVM algorithm. | |

# Taking data frame from Logistic Regression model | |

churn_svm = churn_df[, -6] | |

churn_svm = cbind(churn_svm, as.factor(churn$Churn)) | |

names(churn_svm)[names(churn_svm) == 'as.factor(churn$Churn)'] <- | |

'Churn' | |

# Also taking the train and test data from Logistic regression model (minus predicted probibility) | |

set.seed(2) | |

svm.set = sample(1:nrow(churn_svm), 0.7 * nrow(churn_svm)) | |

churn_svm_train = churn_knn[svm.set, ] | |

churn_svm_test = churn_knn[-svm.set, ] | |

# Implement the SVM algorithm using the optimal cost. | |

# model 0 with cost = 0.1 | |

#model.svm.0 = svm(churn_svm_train$Churn~., data = churn_svm_train, kernel = "linear", cost = 0.1, scale = F) | |

#plot(model.svm.0,churn_svm_train) | |

#summary(model.svm.0) | |

# finding the optimal value of cost using cross-validation using the tune function | |

tune.svm = tune( | |

svm, | |

Churn ~ ., | |

data = churn_svm_train, | |

kernel = "linear", | |

ranges = list(cost = c(0.001, 0.01, 0.1, 1, 10, 100)) | |

) | |

summary(tune.svm) | |

bestmodel_svm <- tune.svm$best.model | |

bestmodel_svm #Best Performance is for Cost = 0.01 | |

summary(bestmodel_svm) | |

# predicting test classes using the best model and analyzing the table | |

svm.predict = predict(bestmodel_svm, churn_svm_test) | |

table(svm.predict, churn_svm_test$Churn) | |

confusionMatrix(svm.predict, churn_svm_test$Churn) | |

# Accuracy: 78.99 | |

# Sensitivity: 88.22 | |

# Specificity: 53.31 | |

# Plotting the SVM | |

plot(svm.predict, churn_svm_test$Churn) |

## Smitan Pradhan

Data Science Portfolio

- Melbourne, Australia
- Custom Social Profile Link

## Predicting churn in Telecom Industry - Advanced ML

less than 1 minute read

In the telecom industry, customers are able to choose from multiple service providers and actively switch from one operator to another. In this highly competitive market, the telecommunications industry experiences an average of 15-25% annual churn rate. Given the fact that it costs 5-10 times more to acquire a new customer than to retain an existing one, customer retention has now become even more important than customer acquisition.

For many incumbent operators, retaining high profitable customers is the number one business goal.

Background: To reduce customer churn, telecom companies need to predict which customers are at high risk of churn. We have been hired by a telecom industry giant to look at customer level data and identify customers at high risk of churn and identify the main indicators of churn.

Problem Statement: We need to build a predictive model using advanced Machine Learning algorithms in order to predict the customers at high risk of churn along with the key indicators of churn.

Link to the project code

This case study has been completed with the help of my team mate Koushal Deshpande. Thanks Koushal for your help and your key insights!

## You may also enjoy

Forec app - a local solution to a global pandemic.

1 minute read

How can we as Data Scientists help our community during this pandemic?

## White box vs Black Box models: Importance of interpretable model in today’s world

6 minute read

In today’s world, more and more focus is on ensuring how black box models can be interpreted and if they are really required

## Sedans and Colours - Are certain colours more prevalent in sedans?

3 minute read

Which colour sedans people prefer buying and is there a difference in the trend between different segments of the cars?

## Tweet Sentiment Analysis - Naive Bayes Classifier

To classify the sentiments behind a large corpus of tweets

- Bahasa Indonesia
- Eastern Europe
- Moscow Oblast

## Elektrostal

Elektrostal Localisation : Country Russia , Oblast Moscow Oblast . Available Information : Geographical coordinates , Population, Area, Altitude, Weather and Hotel . Nearby cities and villages : Noginsk , Pavlovsky Posad and Staraya Kupavna .

## Information

Find all the information of Elektrostal or click on the section of your choice in the left menu.

- Update data

Country | |
---|---|

Oblast |

## Elektrostal Demography

Information on the people and the population of Elektrostal.

Elektrostal Population | 157,409 inhabitants |
---|---|

Elektrostal Population Density | 3,179.3 /km² (8,234.4 /sq mi) |

## Elektrostal Geography

Geographic Information regarding City of Elektrostal .

Elektrostal Geographical coordinates | Latitude: , Longitude: 55° 48′ 0″ North, 38° 27′ 0″ East |
---|---|

Elektrostal Area | 4,951 hectares 49.51 km² (19.12 sq mi) |

Elektrostal Altitude | 164 m (538 ft) |

Elektrostal Climate | Humid continental climate (Köppen climate classification: Dfb) |

## Elektrostal Distance

Distance (in kilometers) between Elektrostal and the biggest cities of Russia.

## Elektrostal Map

Locate simply the city of Elektrostal through the card, map and satellite image of the city.

## Elektrostal Nearby cities and villages

## Elektrostal Weather

Weather forecast for the next coming days and current time of Elektrostal.

## Elektrostal Sunrise and sunset

Find below the times of sunrise and sunset calculated 7 days to Elektrostal.

Day | Sunrise and sunset | Twilight | Nautical twilight | Astronomical twilight |
---|---|---|---|---|

8 July | 02:53 - 11:31 - 20:08 | 01:56 - 21:06 | 01:00 - 01:00 | 01:00 - 01:00 |

9 July | 02:55 - 11:31 - 20:08 | 01:57 - 21:05 | 01:00 - 01:00 | 01:00 - 01:00 |

10 July | 02:56 - 11:31 - 20:07 | 01:59 - 21:04 | 23:45 - 23:17 | 01:00 - 01:00 |

11 July | 02:57 - 11:31 - 20:05 | 02:01 - 21:02 | 23:57 - 23:06 | 01:00 - 01:00 |

12 July | 02:59 - 11:31 - 20:04 | 02:02 - 21:01 | 00:05 - 22:58 | 01:00 - 01:00 |

13 July | 03:00 - 11:32 - 20:03 | 02:04 - 20:59 | 00:12 - 22:51 | 01:00 - 01:00 |

14 July | 03:01 - 11:32 - 20:02 | 02:06 - 20:57 | 00:18 - 22:45 | 01:00 - 01:00 |

## Elektrostal Hotel

Our team has selected for you a list of hotel in Elektrostal classified by value for money. Book your hotel room at the best price.

Located next to Noginskoye Highway in Electrostal, Apelsin Hotel offers comfortable rooms with free Wi-Fi. Free parking is available. The elegant rooms are air conditioned and feature a flat-screen satellite TV and fridge... | from | |

Located in the green area Yamskiye Woods, 5 km from Elektrostal city centre, this hotel features a sauna and a restaurant. It offers rooms with a kitchen... | from | |

Ekotel Bogorodsk Hotel is located in a picturesque park near Chernogolovsky Pond. It features an indoor swimming pool and a wellness centre. Free Wi-Fi and private parking are provided... | from | |

Surrounded by 420,000 m² of parkland and overlooking Kovershi Lake, this hotel outside Moscow offers spa and fitness facilities, and a private beach area with volleyball court and loungers... | from | |

Surrounded by green parklands, this hotel in the Moscow region features 2 restaurants, a bowling alley with bar, and several spa and fitness facilities. Moscow Ring Road is 17 km away... | from | |

## Elektrostal Nearby

Below is a list of activities and point of interest in Elektrostal and its surroundings.

## Elektrostal Page

Direct link | |
---|---|

DB-City.com | Elektrostal /5 (2021-10-07 13:22:50) |

- Information /Russian-Federation--Moscow-Oblast--Elektrostal#info
- Demography /Russian-Federation--Moscow-Oblast--Elektrostal#demo
- Geography /Russian-Federation--Moscow-Oblast--Elektrostal#geo
- Distance /Russian-Federation--Moscow-Oblast--Elektrostal#dist1
- Map /Russian-Federation--Moscow-Oblast--Elektrostal#map
- Nearby cities and villages /Russian-Federation--Moscow-Oblast--Elektrostal#dist2
- Weather /Russian-Federation--Moscow-Oblast--Elektrostal#weather
- Sunrise and sunset /Russian-Federation--Moscow-Oblast--Elektrostal#sun
- Hotel /Russian-Federation--Moscow-Oblast--Elektrostal#hotel
- Nearby /Russian-Federation--Moscow-Oblast--Elektrostal#around
- Page /Russian-Federation--Moscow-Oblast--Elektrostal#page
- Terms of Use
- Copyright © 2024 DB-City - All rights reserved
- Change Ad Consent Do not sell my data

- About company
- GENERAL CONTRACTOR

+7 (495) 526-30-40 +7 (49657) 0-30-99

## THE HISTORY OF THE COMPANY CREATION

1993 how the construction company remstroy was created the year 1993 was a period when a lot of construction companies, which had been working successfully during the soviet times and had rich staff capacity, were forced to cease their activity for various reasons. a lot of capable specialists either had to look for another job or change their field. but there were also those who were willing to realise their potential in the field of construction in accordance with the received degree and the experience they had accumulated. thus, in 1993 in elektrostal (moscow oblast) a group of specialists and people sharing each other’s ideas, who had enormous educational background and the highest degree in architecture, organized and registered ooo firm erg which began its rapid development and successful work, offering its service both on the construction market and other areas. 2000 industrial construction is the main area seven years of successful work have shown that combining different types of activities in the same company is not always convenient. and in the year 2000 the founders of ooo firm erg decided to create and register a monoprofile construction company ooo remstroy construction company. industrial construction was chosen as the priority area. it was in this area that the directors of ooo sk remstroy began their working life and grew as specialists. in order to achieve the set goal, they selected a mobile team of professionals in the field of industrial construction, which allows us to cope with the tasks assigned to ooo sk remstroy throughout russia and the near abroad. 2010 manufacturing of metal structures we possess modern equipment that allows us to carry out the entire cycle of works on the manufacture of metal structures of any complexity without assistance. designing – production – installation of metal structures. a staff of professionals and well-coordinated interaction of the departments let us carry out the work as soon as possible and in accordance with all customer’s requirements.” extract from the list of members of self-regulatory organizations, construction.

## LICENSE OF MINISTRY OF EMERGENCY SITUATIONS

Certificates, system of managing quality.

## SYSTEM OF ECOLOGIAL MANAGEMENT

## SYSTEM OF OCCUPATIONAL SAFETY AND HEALTH MANAGEMENT

## LETTERS OF RECOMMENDATION

## THE GEOGRAPHY OF CONSTRUCTION SITES

YOU CAN FIND MORE INFORMATION ON THE CONSTRUCTION SITES OF OOO REMSTROY ON THE PAGE OF THE SITE

## OUR CLIENTS

## http://remstroi.pro/yandex-promyshlennoe-stroitelstvo

## Geographic coordinates of Elektrostal, Moscow Oblast, Russia

Coordinates of elektrostal in decimal degrees, coordinates of elektrostal in degrees and decimal minutes, utm coordinates of elektrostal, geographic coordinate systems.

WGS 84 coordinate reference system is the latest revision of the World Geodetic System, which is used in mapping and navigation, including GPS satellite navigation system (the Global Positioning System).

Geographic coordinates (latitude and longitude) define a position on the Earth’s surface. Coordinates are angular units. The canonical form of latitude and longitude representation uses degrees (°), minutes (′), and seconds (″). GPS systems widely use coordinates in degrees and decimal minutes, or in decimal degrees.

Latitude varies from −90° to 90°. The latitude of the Equator is 0°; the latitude of the South Pole is −90°; the latitude of the North Pole is 90°. Positive latitude values correspond to the geographic locations north of the Equator (abbrev. N). Negative latitude values correspond to the geographic locations south of the Equator (abbrev. S).

Longitude is counted from the prime meridian ( IERS Reference Meridian for WGS 84) and varies from −180° to 180°. Positive longitude values correspond to the geographic locations east of the prime meridian (abbrev. E). Negative longitude values correspond to the geographic locations west of the prime meridian (abbrev. W).

UTM or Universal Transverse Mercator coordinate system divides the Earth’s surface into 60 longitudinal zones. The coordinates of a location within each zone are defined as a planar coordinate pair related to the intersection of the equator and the zone’s central meridian, and measured in meters.

Elevation above sea level is a measure of a geographic location’s height. We are using the global digital elevation model GTOPO30 .

## Elektrostal , Moscow Oblast, Russia

## Zhukovsky International Airport

Zhukovsky International Airport, formerly known as Ramenskoye Airport or Zhukovsky Airfield - international airport, located in Moscow Oblast, Russia 36 km southeast of central Moscow, in the town of Zhukovsky, a few kilometers southeast of the old Bykovo Airport. After its reconstruction in 2014–2016, Zhukovsky International Airport was officially opened on 30 May 2016. The declared capacity of the new airport was 4 million passengers per year.

## Sygic Travel - A Travel Guide in Your Pocket

## More interesting places

- Privacy Policy
- STOCK 360° TRAVEL VIDEOS

## IMAGES

## VIDEO

## COMMENTS

Telecom churn case study where, Based on customer behavior (such as the monthly bill, internet usage, etc.) to predict whether a particular customer will switch to another telecom provider or not (i.e. churn or not). Visualised data and provided some insights on the same. The case study has the following files:

In the telecom industry, customers are able to choose from multiple service providers and actively switch from one operator to another. In this highly competitive market, the telecommunications industry experiences an average of 15-25% annual churn rate.

To reduce customer churn, telecom companies need to predict which customers are at high risk of churn. In this project, you will analyze customer-level data of a leading telecom firm, build predictive models to identify customers at high risk of churn. In this competition, your goal is to build a machine learning model that is able to predict ...

Telecom Churn Case Study. # Load the given files. # Collate the 3 files in a single file. # Understand the structure of the collated file. # Make bar charts to find interesting relationships between variables. # Make Box plots for numeric variables to look for outliers. # Impute the missing values, and perform the outlier treatment.

We're told by our colleagues at the hypothetical company that customer churn is at 50% within 3 months. That means that within 3 months of a set of customers that sign up for the paid product, by the end of 3 months half of them will have cancelled. This is an urgent problem we need to help fix with machine learning!

In this highly competitive market, the telecommunications industry experiences an average of 15-25% annual churn rate. Given the fact that it costs 5-10 times more to acquire a new customer than to retain an existing one, customer retention has now become even more important than customer acquisition. For many incumbent operators, retaining ...

churn currently ranges from 5% to 32% per year[11]. Usually if a customer leaves the company, he or she will not come back within one year. Thus an over 20% of the churn rate would be a heavy loss for the company. However, with telecom companies become more digitized, more insights have been generated.

If the issue persists, it's likely a problem on our side. Unexpected token < in JSON at position 4. keyboard_arrow_up. content_copy. SyntaxError: Unexpected token < in JSON at position 4. Refresh. Identify customers at high risk of churn and the main indicators of churn.

To reduce customer churn, telecom companies need to predict which customers are at high risk of churn. In this project, we analysed customer-level data of a leading telecom firm, build predictive models to identify customers at high risk of churn and identify the main indicators of churn. You can also access the Live web-app here.

Elektrostal Geography. Geographic Information regarding City of Elektrostal. Elektrostal Geographical coordinates. Latitude: 55.8, Longitude: 38.45. 55° 48′ 0″ North, 38° 27′ 0″ East. Elektrostal Area. 4,951 hectares. 49.51 km² (19.12 sq mi) Elektrostal Altitude.

2000. Seven years of successful work have shown that combining different types of activities in the same company is not always convenient. And in the year 2000 the founders of OOO Firm ERG decided to create and register a monoprofile construction company OOO Remstroy Construction Company. Industrial construction was chosen as the priority area.

Contribute to ashishc3090/Telecom-Churn-Group-Case-Study development by creating an account on GitHub.

Geographic coordinates of Elektrostal, Moscow Oblast, Russia in WGS 84 coordinate system which is a standard in cartography, geodesy, and navigation, including Global Positioning System (GPS). Latitude of Elektrostal, longitude of Elektrostal, elevation above sea level of Elektrostal.

Case Study: Churn Prediction 4 minute read Business Problem Overview. In the telecom industry, customers are able to choose from multiple service providers and actively switch from one operator to another. In this highly competitive market, the telecommunications industry experiences an average of 15-25% annual churn rate.

Contribute to rmythili2/Telecom-Churn-Case-Study development by creating an account on GitHub.

Zhukovsky International Airport, formerly known as Ramenskoye Airport or Zhukovsky Airfield - international airport, located in Moscow Oblast, Russia 36 km southeast of central Moscow, in the town of Zhukovsky, a few kilometers southeast of the old Bykovo Airport. After its reconstruction in 2014-2016, Zhukovsky International Airport was officially opened on 30 May 2016.

Contribute to Vishal9628712304/Telecom-Churn-Group-Case-Study development by creating an account on GitHub.

Telecom Churn Case Study Problem Statement Business Problem Overview. In the telecom industry, customers are able to choose from multiple service providers and actively switch from one operator to another. In this highly competitive market, the telecommunications industry experiences an average of 15-25% annual churn rate.

Contribute to indu1911/Telecome-Churn development by creating an account on GitHub.

We read every piece of feedback, and take your input very seriously.

Find and fix vulnerabilities Codespaces. Instant dev environments

Contribute to Sid205/telecom-churn-case-study development by creating an account on GitHub.

Contribute to Sid205/telecom-churn-case-study development by creating an account on GitHub.