Visualization has become a key application of data science in the telecommunications industry.

Specifically, telecommunication analysis is highly dependent on the use of geospatial data. This is because telecommunication networks in themselves are geographically dispersed, and analysis of such dispersions can yield valuable insights regarding network structures, consumer demand and availability.

To illustrate this point, a k-means clustering algorithm is used to analyse geographical data for free public WiFi in New York City. The dataset is available from NYC Open Data.

Specifically, the k-means clustering algorithm is used to form clusters of WiFi usage based on latitude and longitude data associated with specific providers.

From the dataset itself, the latitude and longitude data is extracted using R:

#1. Prepare data

newyork<-read.csv("NYC_Free_Public_WiFi_03292017.csv")

attach(newyork)

newyorkdf<-data.frame(newyork$LAT,newyork$LON)

Here is a snippet of the data:

Now, the number of clusters need to be determined using a scree plot.

#2. Determine number of clusters

wss <- (nrow(newyorkdf)-1)*sum(apply(newyorkdf,2,var))

for (i in 2:20) wss[i] <- sum(kmeans(newyorkdf,

centers=i)$withinss)

plot(1:20, wss, type="b", xlab="Number of Clusters",

ylab="Within groups sum of squares")

From the above, the curve levels out at approximately 11 clusters. Therefore, this is the number of clusters that will be used in the k-means model.

The K-Means analysis itself is conducted:

#3. K-Means Cluster Analysis

set.seed(20)

fit <- kmeans(newyorkdf, 11) # 11 cluster solution

# get cluster means

aggregate(newyorkdf,by=list(fit$cluster),FUN=mean)

# append cluster assignment

newyorkdf <- data.frame(newyorkdf, fit$cluster)

newyorkdf

newyorkdf$fit.cluster <- as.factor(newyorkdf$fit.cluster)

library(ggplot2)

ggplot(newyorkdf, aes(x=newyork.LON, y=newyork.LAT, color = newyorkdf$fit.cluster)) + geom_point()

In the data frame **newyorkdf**, the latitude and longitude data, along with the cluster label is displayed:

> newyorkdf

newyork.LAT newyork.LON fit.cluster

1 40.75573 -73.94458 1

2 40.75533 -73.94413 1

3 40.75575 -73.94517 1

4 40.75575 -73.94517 1

5 40.75575 -73.94517 1

6 40.75575 -73.94517 1

.....

80 40.84832 -73.82075 11

81 40.84923 -73.82105 11

82 40.84920 -73.82106 11

83 40.85021 -73.82175 11

84 40.85023 -73.82178 11

85 40.86444 -73.89455 11

Here is a visual illustration:

This illustration is useful, but the ideal scenario would be to append these clusters to a map of New York City itself.

To generate a map of New York City, the **nycmaps** library is used, installable from the Github repo as indicated below.

# devtools::install_github("zachcp/nycmaps")

library(nycmaps)

map(database="nyc")

#this should also work with ggplot and ggalt

nyc <- map_data("nyc")

gg <- ggplot()

gg <- gg +

geom_map(

data=nyc,

map=nyc,

aes(x=long, y=lat, map_id=region))

gg +

geom_point(data = newyorkdf, aes(x = newyork.LON, y = newyork.LAT),

colour = newyorkdf$fit.cluster, alpha = .5) + ggtitle("New York Public WiFi")

Upon running the above, a map of NYC is generated, along with the associated clusters:

This type of clustering gives great insights into the structure of a WiFi network in a city. For instance, there are 650 separate points in cluster 1, whereas 100 points exist in cluster 6.

This indicates that the geographic region marked by cluster 1 shows heavy WiFi traffic. On the other hand, a lower number of connections in cluster 6 indicates low WiFi traffic.

K-Means Clustering in itself does not tell us why traffic for a specific cluster is high or low. For instance, it could be the case that cluster 6 has a high population density, but poor internet speeds result in fewer connections. However, this clustering algorithm provides a great starting point for further analysis - and makes it easier to gather additional information to determine why traffic density for one geographic cluster might be higher than another.

This example demonstrated how k-means clustering can be used with geographical data in order to visualize WiFi access points across New York City. In addition, we have also seen how k-means clustering can also indicate high and low density zones for WiFi access, and the potential insights that can be extracted from this regarding population, WiFi speed, among other factors.

Thank you for your time!

© 2019 Data Science Central ® Powered by

Badges | Report an Issue | Privacy Policy | Terms of Service

**Most Popular Content on DSC**

To not miss this type of content in the future, subscribe to our newsletter.

**Technical**

- Free Books and Resources for DSC Members
- Learn Machine Learning Coding Basics in a weekend
- New Machine Learning Cheat Sheet | Old one
- Advanced Machine Learning with Basic Excel
- 12 Algorithms Every Data Scientist Should Know
- Hitchhiker's Guide to Data Science, Machine Learning, R, Python
- Visualizations: Comparing Tableau, SPSS, R, Excel, Matlab, JS, Pyth...
- How to Automatically Determine the Number of Clusters in your Data
- New Perspectives on Statistical Distributions and Deep Learning
- Fascinating New Results in the Theory of Randomness
- Long-range Correlations in Time Series: Modeling, Testing, Case Study
- Fast Combinatorial Feature Selection with New Definition of Predict...
- 10 types of regressions. Which one to use?
- 40 Techniques Used by Data Scientists
- 15 Deep Learning Tutorials
- R: a survival guide to data science with R

**Non Technical**

- Advanced Analytic Platforms - Incumbents Fall - Challengers Rise
- Difference between ML, Data Science, AI, Deep Learning, and Statistics
- How to Become a Data Scientist - On your own
- 16 analytic disciplines compared to data science
- Six categories of Data Scientists
- 21 data science systems used by Amazon to operate its business
- 24 Uses of Statistical Modeling
- 33 unusual problems that can be solved with data science
- 22 Differences Between Junior and Senior Data Scientists
- Why You Should be a Data Science Generalist - and How to Become One
- Becoming a Billionaire Data Scientist vs Struggling to Get a $100k Job
- Why do people with no experience want to become data scientists?

**Articles from top bloggers**

- Kirk Borne | Stephanie Glen | Vincent Granville
- Ajit Jaokar | Ronald van Loon | Bernard Marr
- Steve Miller | Bill Schmarzo | Bill Vorhies

**Other popular resources**

- Comprehensive Repository of Data Science and ML Resources
- Statistical Concepts Explained in Simple English
- Machine Learning Concepts Explained in One Picture
- 100 Data Science Interview Questions and Answers
- Cheat Sheets | Curated Articles | Search | Jobs | Courses
- Post a Blog | Forum Questions | Books | Salaries | News

**Archives**: 2008-2014 | 2015-2016 | 2017-2019 | Book 1 | Book 2 | More

**Most popular articles**

- Free Book and Resources for DSC Members
- New Perspectives on Statistical Distributions and Deep Learning
- Time series, Growth Modeling and Data Science Wizardy
- Statistical Concepts Explained in Simple English
- Machine Learning Concepts Explained in One Picture
- Comprehensive Repository of Data Science and ML Resources
- Advanced Machine Learning with Basic Excel
- Difference between ML, Data Science, AI, Deep Learning, and Statistics
- Selected Business Analytics, Data Science and ML articles
- How to Automatically Determine the Number of Clusters in your Data
- Fascinating New Results in the Theory of Randomness
- Hire a Data Scientist | Search DSC | Find a Job
- Post a Blog | Forum Questions

## You need to be a member of Data Science Central to add comments!

Join Data Science Central