TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API.
TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google’s Machine Intelligence research organisation for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.
Scikit-learn (formerly scikits.learn) is a free software machine learning library – well, also TensorFlow is free – for the Python programming language. It features various classification, regression and clustering algorithms including support vector machines, random forests, gradient boosting, k-means and DBSCAN, and is designed to interoperate with the Python numerical and scientific libraries NumPy and SciPy.
TensorFlow is a powerful library that’s mostly used for deep learning, although its computational model based on directed graphs certainly allows for a wider range of use cases. Deep learning is the main area of machine learning where scikit-learn is really not that useful.
For most practical machine learning tasks, TensorFlow is overkill. Scikit-learn is a much more user-friendly library that is more than sufficient in most scenarios.
When it comes to unsupervised learning, scikit-learn implements various versions of clustering and dimensionality reduction. I would say that supervised learning is where scikit-learn really shines, but keep in mind that unsupervised learning is still an immature area of machine learning.
TensorFlow is really for deep learning applications. Scikit-learn is of little use in that area. For most applications, especially for beginners, you’d want to use sci-kit learn. For unsupervised learning, sci-kit learn has various clustering and decomposition algorithms that are simple to use.
When we consider Natural Language Processing, scikit-learn offers a couple of interesting functions to turn words and sentences into vectors. Quite simply to use but powerful enough to solve specific problems such: topic detection, sentiment analysis, text clustering and many others. In particular, tokenise text, count occurrences or tf-idf vectorise a corpus requires few line of python code. Easy to use and fast.
TensorFlow: More powerful, good for deep learning. Overkill for simpler tasks.
Scikit-learn: Easy to use, supports most practical tasks – also in NLP. Not the right solution for deep learning.