How to Set Up Your Data Science Environment — Beginner’s Guide to ML
By: Alya Nowailty
Tags: Jupyter Notebook, Machine Learning, Data Science, Anaconda, Beginner

What is Data Science?

In layman terms, Data Science is the study of data, and all that entails. It is an inter-disciplinary field that combines Data Mining, Statistics, Machine Learning and more in order to extract and study meaningful insights from data — regardless of that data’s form or size. It is an experimental field by nature, and is as much a craft as it is a science.

As Big Data continues to alter and transform society around it, more and more businesses are looking to Data Science and its practitioners to help overcome new business challenges. Whether it be by developing novel tools and algorithms that directly aid in decision-making, or extracting insight from unstructured data for descriptive statistics and visualization.

Python

NumPy, TensorFlow, Plotly, Flask, SciPy

“What coding language should I use for Data Science / Machine Learning?”

There are actually a number of suitable coding languages for Data Science, including: JavaScript, Julia, and R. However, the most widely used language for all things Data Science and Machine Learning is Python. Python itself is quite the popular language for scripting and rapid prototyping, and is often used to teach introductory coding classes because of how easy, concise, and intuitive its syntax is. Another key feature to Python is the extensive array of libraries and packages for Data Science, which are just a short “import” call away. A few of these libraries include:

NumPy and Pandas for data handling and analysis

and for data handling and analysis Matplotlib , Seaborn , and Plotly for visualization

, , and for visualization Scikit-Learn , PyTorch , TensorFlow , and Keras for ML and Deep Learning

, , , and for ML and Deep Learning Flask and Django for deployment

These libraries allow Data Science practitioners to work with data, generate visualizations, and develop ML models quickly and efficiently without having to develop these tools from scratch and essentially re-invent the wheel.

Jupyter

Another reason why Python is the most widely used language for Artificial Intelligence and Machine Learning? Jupyter Notebooks.

Jupyter Notebooks are open-source interactive development tools that allow you to essentially organize your code into “cells” alongside descriptive markdown text, equations, and visualizations. Jupyter Notebooks encourage rapid and iterative development, and augment the already available Python libraries to make it easy to share results with other people via an extremely intuitive interface. They are the go-to development environment for Data Science beginners and many experienced practitioners.

Conda

The same libraries that provide so much of the functionality in Python also provide a whole host of headaches when trying to reconcile which versions of packages can be used together. It’s a nightmare all too familiar to Data Science practitioners: you start a new project using your existing development environment, but this new project requires the installation of a new Python library — call it library X. So you install library X with no issues and get to work on your new project. You soon realize however that on returning to older projects and attempting to run them, libraries Y and Z — which were previously installed and used without issue — are now causing errors. So you try to debug and revert to a previous version of X in hopes this fixes the issue, but this in turn breaks something else. By the time you’ve resolved the issue, you’ve spent the entire day debugging and have lost a lot of time on what is essentially a package version management issue.

Enter Conda Environments.

Conda makes it easy to create multiple virtual environments that are isolated from each other. What this allows you to do is maintain an environment for each project, such that libraries can be easily installed or upgraded and their dependencies handled accordingly. To quote Anaconda’s official blog [1]: