HuggingChat vs ChatGPT: The Chat Battle has Now Begun

ChatGPT became an internet sensation this year as it seemed like an artefact pulled from a science fiction. The OpenAI product left us in awe but as impressive as it was, the model lacked something critical — openness. The closed source model didn’t do much for the developer’s community.

To the rescue, Hugging Face, the open-source AI platform, launched HuggingChat, which is being touted as an open-source ChatGPT alternative. The release of HuggingChat provides various functionalities and integrations catering to both developers and users alike, and offers stiff competition to ChatGPT.

Inspiration or Imitation?

The interface of HuggingChat appears to be inspired by ChatGPT. The sleek blue screen has conversation points and a history of conversations on the left similar to ChatGPT’s page.

ChatGPT does not have access to information post September 2021, and therefore cannot provide real-time information. Hugging Face’s chatbot seems to be on the similar lines here. It is worth noting that at certain instances HuggingChat provides updated answers but they can be incorrect. For instance, we asked the chatbot ‘Who won IPL 2022?’ and no part of the answer was factually correct.

(Gujarat Titans, playing their first tournament, won the match and the title by defeating Rajasthan Royals)

The Differences

One of the key differences between the two models is the data set on which they were trained. HuggingChat was trained with the OpenAssistant Conversations Dataset (OASST1), For now, the HuggingFace model runs on OpenAssistant’s latest LLaMA based model but the long term plan is to expose all good-quality chat models from the Hub documentation.

TheHugging Face dataset contains data collected up to April 12, 2023. The dataset is the result of a worldwide crowdsourcing effort by over 13,000 volunteers and includes 161,443 messages distributed across 66,497 conversation trees in 35 different languages, annotated with 461,292 quality ratings.

As Meta’s LLaMA is bound by industrial licences it is not possible to directly distribute LLaMa-based models. Instead Open Assistant provided XOR weights for the OA models. On the other hand, ChatGPT’s data set is currently unavailable.

Another parameter to consider is that the cost of using ChatGPT depends on which large language model (LLM) is being used — GPT-3.5 or GPT-4. The paid subscription under ChatGPT-Plus uses the latest GPT-4 hence provides better answers than the free version based on GPT-3.5. The highly anticipated GPT-4 was integrated into ChatGPT in March 2023. Currently, the paid version costs $20 on a monthly basis. In contrast, HuggingChat is open-source and free to use.

Read more: 7 Ways Developers are Harnessing Meta’s LLaMA

Both the chatbots have a different writing style. ChatGPT provides structured and well-formatted answers but does not take a stance on any subject. On the contrary, Hugging Face answers in a much more personalised manner and tends to address itself in the first person. But HuggingChat does not understand context that well.

In terms of coding, HuggingChat gives the code at once, whereas ChatGPT provides the instruction for the free on GPT-3.5 model and provides a code with in-depth instructions to follow for the paid GPT-4 model.

In conclusion, while HuggingChat may be new and promising, ChatGPT is currently the superior choice due to its established reputation and range of features. The HF model is not yet close to the levels of ChatGPT, but it is the need of the hour to avoid a monopoly. Nevertheless, it will be interesting to see how HuggingChat develops and whether it can challenge ChatGPT’s dominance in the chatbot market.

Another option that developers can look at is Databricks’ Dolly 2.0.

The post HuggingChat vs ChatGPT: The Chat Battle has Now Begun appeared first on Analytics India Magazine.

What is K-Means Clustering and How Does its Algorithm Work?

What is K-Means Clustering and How Does its Algorithm Work?
Image from Bing Image Creator Introduction

Fundamentally, there are four types of machine learning algorithms; supervised algorithms, semi-supervised algorithms, unsupervised algorithms and reinforcement learning algorithms. Supervised algorithms are those that work on data that has labels. Semi-supervised is where part of the data is labeled and another part is not. Unsupervised is where the data doesn’t have labels. Reinforcement learning is a type of machine learning where we have an agent that works towards a certain goal and does it through trial and error. The agent gets rewarded when correct and gets penalized when wrong.

Our focus is on an unsupervised machine learning algorithm, K-Means clustering algorithm in particular.

K-Means Clustering

K-Means is an unsupervised machine learning algorithm that assigns data points to one of the K clusters. Unsupervised, as mentioned before, means that the data doesn’t have group labels as you’d get in a supervised problem. The algorithm observes the patterns in the data and uses that to place each data point into a group with similar characteristics. Of course, there are other algorithms for solving clustering problems such as DBSCAN, Agglomerative clustering, KNN, and others, but K-Means is somewhat more popular in comparison to other approaches.

The K refers to the distinct groupings into which the data points are placed. If K is 3, then the data points will be split into 3 clusters. If 5, then we’ll have 5 clusters.. More on this later.

Applications of K-Means

There are a myriad ways in which we can apply clustering to solve real world problems. Below are a few examples of the applications:

  • Clustering customers: Companies can use clustering to group their customers for better target marketing and understanding their customer base.
  • Document classification: Group documents based on the topics or key words in the content.
  • Image segmentations: Clustering image pixels before image recognition.
  • Grouping students based on their performance: You could cluster them into top performers, average performers, and use that to improve learning experience.

How K-Means Algorithms Work

The algorithm runs an initial iteration where the data points are randomly placed into groups, whose central point is known as centroid is calculated. The euclidean distance of each data point to the centroids is calculated, and if the distance of a point is higher than to another centroid, the point is reassigned to the ‘other’ centroid. When this happens, the algorithm will run another iteration and the process continues until all groupings have the minimum within group variance.

What we mean by having a minimum variability within a group is that the characteristics of observations in a group should be as similar as possible.

Imagine a dataset with two variables plotted as below. The variables could be the height and weight of individuals. If we had a third variable like age, then we would have a 3-D diagram, but for now, let’s stick to the 2-D diagram below.

What is K-Means Clustering and How Does its Algorithm Work?

Step 1 : Initialization

From the above diagram we can spot three clusters. When fitting our model, we can randomly assign k=3. This simply means we are seeking to split the data points into three groupings.

In the initial iteration, the K centroids are randomly selected in the example below.

What is K-Means Clustering and How Does its Algorithm Work?

You can specify the number of K-Clusters that the algorithm should group the data points into, however, there’s a better approach to this. We’ll dive into how to choose K later.

Step 2 : Assign points to the one of the K centroids

Once the centroids have been selected, each data point is assigned to the closest centroid, based on the euclidean distance of the point to the closest centroid. This could result in the groupings shown in the graph below.

Note that other types of distance measures can be used as manhattan distance, spearman correlation distance, and Pearson correlations distance as an alternative to euclidean, but the classical ones are euclidean and manhattan.

What is K-Means Clustering and How Does its Algorithm Work?

Step 3 : Recompute the centroids

After the first round of groupings, new centre points are recalculated again and this will necessitate a re-assignment of the points. The graph below gives an example of how the new groupings could potentially be, and notice how some points have been moved into new clusters.

What is K-Means Clustering and How Does its Algorithm Work?

Iterate

The process in steps 2 and 3 is repeated until we get to a point where there are no more reassignments of the data points or we reach the maximum number of iterations. The resulting final groupings are below.

What is K-Means Clustering and How Does its Algorithm Work?

The choice of K

The data you will be working on as a data scientist won’t always have distinct demarcations when plotted, as you’d see on iris dataset. Oftentimes, you’ll deal with data with higher dimensions that cannot be plotted, or even if it’s plotted, you won’t be able to tell the optimum number of groupings. A good example of this is in the graph below.

What is K-Means Clustering and How Does its Algorithm Work?

Can you tell the number of groupings? Not clearly. So, how will we find the optimum number of clusters into which the above data points can be grouped?

There are different methods used to find the optimum K, into which the data points of a given data set can be grouped, elbow and silhouette methods. Let’s briefly look at how the two approaches work.

Elbow method

This approach uses the total variations within a cluster, otherwise known as the WCSS (within cluster sum of squares). The aim is to have the minimal variance within clusters (WCSS).

This method works in this way:

  • It takes a range of K values, say 1 — 8 and calculates the WSS for each K value.
  • The resulting data will have a K value and the corresponding WSS. This data is then used to plot a graph of WCSS against the k values.
  • The optimum number of K is at the elbow point, where the curve begins to accelerate. It is from this point that the method derives its name. Think of the elbow of your arm.

Silhouette method

This method measures similarity and dissimilarity. It quantifies the distance of a point to other members of its assigned cluster, and also the distance to the members in other clusters. It works in this way:

  • It takes a range of K values beginning with 2.
  • For each value of K, it computes the cluster similarity, which is the average distance between a data point and all other group members in the same cluster.
  • Next, the cluster dissimilarity is calculated by calculating the average distance between a data point and all other members of the nearest cluster.
  • The silhouette coefficient will be the difference between cluster similarity value and cluster dissimilarity value, divided by the largest of the two values.

The optimum K would be one with the highest coefficient. The values of this coefficient are bounded in the range of -1 to 1.

Conclusion

This is an introductory article to K-Means clustering algorithm where we’ve covered what it is, how it works, and how to choose K. In the next article, we’ll walk through the process on how to solve a real world clustering problems using Python’s scikit-learn library.
Clinton Oyogo Clinton believes that analyzing data for actionable insights is a crucial part of his day-to-day work. With his skills in data visualization, data wrangling, and machine learning, he takes pride in his work as a data scientist.

Original. Reposted with permission.

More On This Topic

  • Centroid Initialization Methods for k-means Clustering
  • What is Clustering and How Does it Work?
  • Choosing the Right Clustering Algorithm for Your Dataset
  • DBSCAN Clustering Algorithm in Machine Learning
  • Key Data Science Algorithms Explained: From k-means to k-medoids clustering
  • Data Versioning: Does it mean what you think it means?

5 Powerful AI Tools for Data Science and Analytics 

With the evolution of LLMs and AI models, tools and applications that support data science and analytics are seeing significant development. With AI powered tools and no code platforms, the simple usage of these applications are pushing them for wider adoption. While the traditional roles of data scientists may see a shift, the new AI tools will complement them in their day to day work. By automating repetitive and unwanted tasks, time is better utilised for productive work which ultimately saves cost.

Here is a list of 5 AI tools for Data Science and Analytics:

ProbeAI

Known as the “AI Copilot for Data Analysts,” ProbeAI helps in a variety of tasks that simplifies the work of data analysts. It avoids time-consuming, repetitive tasks and automates parts of the workflow. Some of the tasks include auto-generation of complex SQL codes, identifying relevant tables for your questions, optimising and fixing SQL codes. It supports databases such as MongoDB, MySQL, PostgreSQL, snowflake, Google Big Query and Amazon RedShift.

Source: Product Hunt

ObviouslyAI

Obviously AI builds no code AI models for businesses. The tools help in multifunctions such as data cleaning, model selection, hyper parameter tuning, model deployment and management. It can even help in predicting fraudulent transactions. In a previous interview with AIM, CEO of Obviously AI, Nirman Dave, said that the tool will not replace data scientists and will accelerate the data science process.

Relevance AI

RelevanceAI is a platform that assists users to analyse and visualise unstructured data effortlessly without the need of coding skills. Some of the functions that can be executed on the platform are automated categorization, AI workflows, semantic search that helps users to categorise and analyse text, images and audio. The platform also helps with use cases, market research, customer experience, analytics and insights.

👏 When you have the largest catalog of connectors and an amazing product, having an AI assistant comes in handy. We're excited to be working with the talented folks at Airbyte! https://t.co/8SabrYn5a9

— Relevance AI (@RelevanceAI_) March 24, 2023

MonkeyLearn

A no-code text analytics platform, is designed to help businesses to visualize customer feedback. The platform is built on machine learning models, with a range of pre-trained classifiers and extractors. The platform simplifies data and pulls insights in an easy understandable format. The platform has been used by different domains and a few of their clients include Dell, Freshly, MoxiWorks, and others.

Source: MonkeyLearn

IBM Cognos Analytics with Watson

Considered an AI Copilot for businesses, the ‘IBM Cognos Analytics with Watson’ is a Business Intelligence solution tool that has AI capabilities integrated. It helps in cleaning data, interpreting them and producing data visualisations. It helps with predictive analysis and can forecast the future of any business. You can import data from CSV files and spreadsheets, and can connect to data sources such as SQL databases, Google BigQuery, Amazon, Redshift, etc.

The post 5 Powerful AI Tools for Data Science and Analytics appeared first on Analytics India Magazine.

Building and Training Your First Neural Network with TensorFlow and Keras

Building and Training Your First Neural Network with TensorFlow and Keras
Image by Author

AI has gone so far now, and various state-of-the AI models are evolving that are used in Chatbots, Humanoid Robots, Self-driving cars, etc. It has become the fastest-growing technology, and Object Detection and Object Classification are trendy these days.

In this blog post, we will cover the complete steps of building and training an Image Classification model from scratch using Convolutional Neural Network. We will use the publicly available Cifar-10 dataset to train the model. This dataset is unique because it contains images of everyday seen objects like cars, aeroplanes, dogs, cats, etc. By training the neural network to these objects, we will develop intelligent systems to classify such things in the real world. It contains more than 60000 images of size 32×32 of 10 different types of objects. By the end of this tutorial, you will have a model which can determine the object based on its visual features.

Building and Training Your First Neural Network with TensorFlow and Keras
Fig. 1 Sample Images of the Dataset | Image by datasets.activeloop

We will cover everything from scratch, so if you have yet to learn about the practical implementation of neural networks, it is completely fine. The only prerequisite of this tutorial is your time and the basic knowledge of Python. At the end of this tutorial, I will share the collaboratory file containing the entire code. Let’s get started!

Here is the complete workflow of this tutorial,

  1. Importing Necessary Libraries
  2. Loading of the Data
  3. Preprocessing of the Data
  4. Building the Model
  5. Evaluating the Model Performance

Building and Training Your First Neural Network with TensorFlow and Keras
Fig. 2 Complete Model Pipeline | Image by Author Importing Necessary Libraries

You have to install some modules to start with the project. I will use Google Colab as it provides free GPU training, and at the end, I will provide you with the collaboratory file containing the complete code.

Here is the command to install the required libraries:

$ pip install tensorflow, numpy, keras, sklearn, matplotlib

Importing the libraries into a Python file.

from numpy import *  from pandas import *  import matplotlib.pyplot as plotter    # Split the data into training and testing sets.  from sklearn.model_selection import train_test_split    # Libraries used to evaluate our trained model.  from sklearn.metrics import classification_report, confusion_matrix  import keras    # Loading our dataset.  from keras.datasets import cifar10    # Used for data augmentation.  from keras.preprocessing.image import ImageDataGenerator    # Below are some layers used to train convolutional nueral network.  from keras.models import Sequential  from keras.layers import Dense, Dropout, Activation  from keras.layers import Conv2D, MaxPooling2D, GlobalMaxPooling2D, Flatten
  1. Numpy: It is used for efficient array computations of large datasets containing images.
  2. Tensorflow: It is an open-source machine learning library developed by Google. It provides numerous functions to build large and scalable models.
  3. Keras: Another high-level neural network API runs on top of TensorFlow.
  4. Matplotlib: This Python library creates plots and graphs, providing better data visualisation.
  5. Sklearn: It provides functions for performing data preprocessing and feature extraction tasks for the dataset. It contains inbuilt functions to find the evaluation metrics of a model like accuracy, precision, false positives, false negatives, etc.

Now, let's move to the step of data loading.

Loading the Data

This section will load our dataset and performs the train-test splitting.

Loading & Splitting of Data:

# number of classes  nc = 10    (training_data, training_label), (testing_data, testing_label) = cifar10.load_data()  (      (training_data),      (validation_data),      (training_label),      (validation_label),  ) = train_test_split(training_data, training_label, test_size=0.2, random_state=42)  training_data = training_data.astype("float32")  testing_data = testing_data.astype("float32")  validation_data = validation_data.astype("float32")

The cifar10 dataset is directly loaded from the Keras datasets library. And this data is also split into training data and testing data. Training data is used to train the model so that it can identify patterns in it. And the testing data remain unseen to the model, and it is used to check its performance, i.e. how many data points are correctly predicted wrt the total data points.

training_label contains the corresponding label to the image present in training_data.

Then the training data is again split into the validation data using the built-in sklearn train_test_split function. The validation data is used to select and tune the final model. Then finally, all the training, testing and validation data are converted into floating decimals of 32bit.

Now, the loading of our dataset is done. In the next section, we will perform some preprocessing steps to it.

Pre-processing of Data

Data preprocessing is the first and most crucial step while developing a machine learning model. Let's see how to do it.

# Normalization  training_data /= 255  testing_data /= 255  validation_data /= 255    # One Hot Encoding  training_label = keras.utils.to_categorical(training_label, nc)  testing_label = keras.utils.to_categorical(testing_label, nc)  validation_label = keras.utils.to_categorical(validation_label, nc)    # Printing the dataset  print("Training: ", training_data.shape, len(training_label))  print("Validation: ", validation_data.shape, len(validation_label))  print("Testing: ", testing_data.shape, len(testing_label))

Output:

Training:  (40000, 32, 32, 3) 40000  Validation:  (10000, 32, 32, 3) 10000  Testing:  (10000, 32, 32, 3) 10000

The dataset contains images of 10 classes, and the size of each image is 32×32 pixels. Each pixel has a value from 0-255, and we need to normalise it between 0-1 to ease the calculation process. And after that, we will convert the categorical labels into the one-hot encoded labels. This is done to convert the categorical data into numerical data so we can apply machine learning algorithms without any problem.

Now, move to the building of the CNN model.

Building the CNN Model

The CNN Model works in 3 stages. The first stage consists of convolutional layers that extract relevant features from the images. The second stage consists of pooling layers used to reduce the dimensionality of the images. It also helps to reduce the overfitting of the model. And the third stage consists of dense layers that convert the two-dimensional image to a one-dimensional array. And then finally, this array is fed onto the fully connected layers, which perform the final prediction.

Here is the code.

model = Sequential()    model.add(      Conv2D(32, (3, 3), padding="same", activation="relu", input_shape=(32, 32, 3))  )  model.add(Conv2D(32, (3, 3), padding="same", activation="relu"))  model.add(MaxPooling2D((2, 2)))  model.add(Dropout(0.25))    model.add(Conv2D(64, (3, 3), padding="same", activation="relu"))  model.add(Conv2D(64, (3, 3), padding="same", activation="relu"))  model.add(MaxPooling2D((2, 2)))  model.add(Dropout(0.25))    model.add(Conv2D(96, (3, 3), padding="same", activation="relu"))  model.add(Conv2D(96, (3, 3), padding="same", activation="relu"))  model.add(MaxPooling2D((2, 2)))    model.add(Flatten())  model.add(Dropout(0.4))  model.add(Dense(256, activation="relu"))  model.add(Dropout(0.4))  model.add(Dense(128, activation="relu"))  model.add(Dropout(0.4))  model.add(Dense(nc, activation="softmax"))

We have applied the three sets of layers, each containing two convolutional layers, one max-pooling layer and one dropout layer. The Conv2D layer takes the input_shape as (32, 32, 3), which must be the same as the dimensions of the image.

Each Conv2D layer also takes an activation function, i.e. ‘relu’. Activation functions are used to increase the non-linearity in the system. In simpler terms, it decides whether the neuron needs to be activated or not based on a certain threshold. There are many types of activation functions like ‘ReLu’, ‘Tanh’, ‘Sigmoid’, ‘Softmax’, etc., which use different algorithms to decide the firing of the neuron.

After that, the Flattening Layer and the Fully Connected Layers are added, with several Dropout layers in between them. The dropout layer rejects some of the neurons' contribution towards the net layer randomly. The parameter inside it defines the degree of rejection. It is mainly used to avoid over-fitting.

Below is a sample image of what a CNN model architecture looks like.

Building and Training Your First Neural Network with TensorFlow and Keras
Fig. 3 Sampe CNN Architecture | Image by researchgate Compiling the Model

Now, we will compile and prepare the model for the training.

# initiate Adam optimizer  opt = keras.optimizers.Adam(lr=0.0001)    model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"])  # obtaining the summary of the model  model.summary()

Output:

Building and Training Your First Neural Network with TensorFlow and Keras
Fig. 4 Model Summary | Image by Author

We have used the Adam optimizer with a learning rate of 0.0001. Optimizer decides how the model's behaviour changes in response to the output of the loss function. The Learning Rate is the amount of weights updated during training or the step size. It is a configurable hyperparameter that must not be too small or too large.

Fitting the Model

Now, we will fit the model to our training data and start the training process. But before that, we will use Image Augmentation to increase the number of sample images.

Image Augmentation used in Convolutional Neural Networks will increase the training images without requiring new images. It will replicate the images by producing some amount of variation in it. It can be done by rotating the image to some degree, adding noise, flipping it horizontally or vertically, etc.

augmentor = ImageDataGenerator(      width_shift_range=0.4,      height_shift_range=0.4,      horizontal_flip=False,      vertical_flip=True,  )    # fitting in augmentor  augmentor.fit(training_data)    # obtaining the history  history = model.fit(      augmentor.flow(training_data, training_label, batch_size=32),      epochs=100,      validation_data=(validation_data, validation_label),  )

Output:

Building and Training Your First Neural Network with TensorFlow and Keras
Fig.5 Accuracy & Loss at each Epoch | Image by Author

ImageDataGenerator() function is used to create augmented images. The fit() is used to fit the model. It takes the training and validation data, Batch Size, and the number of Epochs as input

Batch Size is the number of samples processed before the model gets updated. A crucial hyperparameter must be greater than equal to one and less than equal to the number of samples. Usually, 32 or 64 are considered the best Batch Sizes.

The number of Epochs represents how many times all the samples are processed once individually on both the forward and backward to the network. 100 epochs mean the whole dataset passes through the model 100 times, and the model runs 100 times itself.

Our model is trained, and now we will evaluate its performance on the test set.

Evaluating Model Performance

In this section, we will check the accuracy and loss of the model on the test set. Also, we will draw a plot between the Accuracy Vs Epoch and Loss Vs Epoch for training and validation data.

model.evaluate(testing_data, testing_label)

Output:

313/313 [==============================] - 2s 5ms/step - loss: 0.8554 - accuracy: 0.7545  [0.8554493188858032, 0.7545000195503235]

Our model achieved an accuracy of 75.34% with a loss of 0.8554. This accuracy can be increased as this is not a state-of-the-art model. I used this model to explain the process and flow of building a model. The accuracy of the CNN model depends on many factors like choice of layers, selection of hyperparameters, the type of dataset used, etc.

Now we will plot the curves to check overfitting in the model.

def acc_loss_curves(result, epochs):      acc = result.history["accuracy"]      # obtaining loss and accuracy      loss = result.history["loss"]      # declaring values of loss and accuracy      val_acc = result.history["val_accuracy"]      val_loss = result.history["val_loss"]      # plotting the figure      plotter.figure(figsize=(15, 5))      plotter.subplot(121)      plotter.plot(range(1, epochs), acc[1:], label="Train_acc")      plotter.plot(range(1, epochs), val_acc[1:], label="Val_acc")      # giving title to plot      plotter.title("Accuracy over " + str(epochs) + " Epochs", size=15)      plotter.legend()      plotter.grid(True)      # passing value 122      plotter.subplot(122)      # using train loss      plotter.plot(range(1, epochs), loss[1:], label="Train_loss")      plotter.plot(range(1, epochs), val_loss[1:], label="Val_loss")      # using ephocs      plotter.title("Loss over " + str(epochs) + " Epochs", size=15)      plotter.legend()      # passing true values      plotter.grid(True)      # printing the graph      plotter.show()      acc_loss_curves(history, 100)

Output:

Building and Training Your First Neural Network with TensorFlow and Keras
Fig.6 Accuracy and Loss Vs Epoch | Image by Author

In our model, we can see that the model overfits the test dataset. The (blue) line indicates the training accuracy, and the (orange) line indicates the validation accuracy. The training accuracy continues improving, but the validation error worsens after 20 epochs.

Please find the Google Colab link used in this article — Link

Conclusion

This article shows the entire process of building and training a Convolutional Neural Network from scratch. We got around 75% accuracy. You can play with the hyperparameters and use different sets of convolutional and pooling layers to improve the accuracy. You can also try Transfer Learning, which uses pre-trained models like ResNet or VGGNet and gives very good accuracy in some cases. We can talk more about it in other articles if you want.

Until then, keep reading and keep learning. Feel free to contact me on Linkedin in case of any questions or suggestions.
Aryan Garg is a B.Tech. Electrical Engineering student, currently in the final year of his undergrad. His interest lies in the field of Web Development and Machine Learning. He have pursued this interest and am eager to work more in these directions.

More On This Topic

  • Speeding up Neural Network Training With Multiple GPUs and Dask
  • Learn Deep Learning by Building 15 Neural Network Projects in 2022
  • ­­From Y=X to Building a Complete Artificial Neural Network
  • Building Deep Learning Projects with fastai — From Model Training to…
  • Neural Network Optimization with AIMET
  • Looking Inside The Blackbox: How To Trick A Neural Network

Layoffs at Red Hat: Is IBM Calling the Shots?

Recently Emmanuel Wilder, a Data Solution Manager at IBM’s Red Hat, posted on Linkedin saying he has been laid off from his role at the company. He was one of the 800 RedHat employees that were laid off following the announcement of Matt Hicks, CEO of RedHat, that the company is planning to lay off around 4% of its 20,000-strong workforce.

Writing a letter to the employees, Hicks said that the company will reduce the associate base of Red Hat over the next few months. “Our reductions will focus on general and administrative (G&A) and similar roles across all functions and represent a reduction of just under 4% in total. We will not reduce roles directly selling to customers or building our products,” said Hicks.

While the nature of layoffs is not clarified, Hicks did say that the company is not going to reduce roles directly selling to customers or building the company’s products.

The recurring issue at hand is the decrease in IBM’s stock value, which can be attributed to the acquisition of Red Hat in 2018. The acquisition has burdened IBM with debt, causing analysts to view IBM’s worth in the context of the Red Hat purchase. Although IBM has made progress in paying off some of the debt associated with the acquisition, this still affects analysts’ assessment of IBM’s value. Given the current environment of rising interest rates and numerous investment options, the market does not anticipate an upward trend for IBM and is seeking a price point in the double digits to generate interest.

However, insiders say that the decision is unlikely to be influenced by IBM. “From what we were told this morning, this is a purely Red Hat decision not influenced by IBM, primarily intended to reduce our spending and save cash in light of the increased cost of money caused by rising interest rates,” said one user on a public forum.

In other news, it has been reported that the positions impacted by recent layoffs are classified as “general and administrative” roles, in accordance with Generally Accepted Accounting Practices (GAAP). However, users on Reddit indicate that those individuals directly involved in product development and sales, including software engineers and sales staff, are not affected by the layoffs.

The recent news has left many disappointed, as there was hope that IBM’s acquisition of Red Hat would lead to the former adopting the latter’s culture. However, with support personnel such as HR and Recruiting being made redundant, and equivalent staff at IBM taking over, the chances of Red Hat assimilating into IBM’s culture are higher than ever.

As one Reddit user laments, “Now the gatekeepers that brought in new Red Hat people are going to be looking for IBM types. Slowly, the culture will change.” Another user expressed a similar sentiment, saying, “I had hoped that this merger would result in Red Hat effectively taking over IBM and replacing IBM culture with Red Hat culture, but it looks like instead, Red Hat is dissolving into IBM.”

However, it’s worth noting that IBM is not directly influencing Red Hat, nor is it immune to Red Hat’s influence. As one user pointed out, they worked with Red Hat’s CEO, Paul Hicks, for nearly a year before he assumed his current position. They also worked at IBM before the acquisition. The user notes that “IBM continues to become more fluid and agile as RH influences us and Red Hat is getting better at execution as they learn from us.”

Furthermore, the user claims that “IBM software is now almost wholly dependent on OpenShift. IBM is getting OpenShift into places it could not go before, and Satellite is making it much more manageable than before. IBM is managing 10,000 OpenShift clusters per SRE, and it continues to scale.”

The recent wave of layoffs is a direct consequence of the company’s decision to revamp its performance evaluation and bonus payout system, announced in the previous quarter. This move has created a situation where managers can easily undervalue employees. According to a Reddit user, the company is paving the way for a future where it’s easier to lay off allegedly “underperforming” workers, while simultaneously labelling average workers as underperforming or performing workers as average.

The 4% layoff figure cited by the company is significantly lower than the 10% to 20% layoffs implemented by other tech firms. While some may view this as a sign of Red Hat’s progressive nature in trying to keep layoffs to a minimum, others may see this as just the first round of layoffs. Therefore, it’s possible that the company is closely scrutinizing employee performance during the second quarter, and this may be the time for employees to shine.

The post Layoffs at Red Hat: Is IBM Calling the Shots? appeared first on Analytics India Magazine.

Bark: The Ultimate Audio Generation Model

Bark: The Ultimate Audio Generation Model
Image by Author | Canva Pro | Bing Image Creator

We are witnessing swift progress in text-to-speech models, which are increasingly exhibiting remarkable improvements in achieving a more natural-sounding output. The advancements in this field are not limited to speech generation alone; rather significant strides are being made in the development of music and ambient sound generators and speech cloning, which are rapidly evolving.

In this post, we are going to learn about Bark, the ultimate audio generation model capable of producing various spoken languages, ambient sounds, music, and multi-speaker prompts. We will delve into its functionalities and key features and get a starting guide.

What is Bark?

Bark, developed by Suno, is a transformer-based text-to-audio model that excels in generating highly realistic, multilingual speech, music, background noise, and even simple sound effects. Additionally, the model can produce various nonverbal communications, such as laughter, sighs, and cries. You can access pre-trained model checkpoints that are ready for inference.

Bark: The Ultimate Audio Generation Model
Image from Bark by suno How Bark Works?

Bark, like Vall-E and other impressive works in the field, employs GPT-style models for generating audio from scratch. However, unlike Vall-E, Bark uses high-level semantic tokens to embed the initial text prompt, without relying on phonemes. It allows Bark to generalize to a wide range of arbitrary instructions beyond speech, including music lyrics, sound effects, and non-speech sounds present in the training data.

The generated semantic tokens are then processed by a second model to convert them into audio codec tokens, producing the complete waveform. To make Bark accessible to the community via public code, we integrated the remarkable EnCodec codec from Facebook as an audio representation.

Bark has used nanoGPT for blazing fast implementation of GPT-style models, EnCodec for the implementation of a fantastic audio codec, AudioLM for training and inference code, and Vall-E, AudioLM, and similar papers for the development of Bark project.

Bark Features

Multi Language

Bark supports various languages out-of-the-box, and it can automatically detect the language of the input text. Even when the text contains a mixture of different languages, known as code-switching, Bark can accurately identify and apply the native accent for each language in the same voice.

Try the prompt:

Hallo, wie geht es dir?. ¿Qué haces aquí? Are you looking for someone?

Non-Speech Sounds

Bark can add non-speech sounds such as laughter, gasps, and a clear throat.

Just add tags or change the text to make it sound natural.

  • [laughs]
  • [sighs]
  • [music]
  • [gasps]
  • [clears throat]
  • … for hesitations
  • ♪ for song lyrics
  • capitalization for emphasis of a word
  • MAN/WOMAN: for bias towards speaker

Try the prompt:

" [clears throat] Hello, my name is Abid. And, uh -- and I like cheeseburgers. [laughs] But I also have other interests such as [music]... ♪ singing ♪."

Music

Bark can generate all types of audio, and it does not differentiate between speech and music. While Bark may sometimes generate text as music, you can enhance its performance by adding music notes around your lyrics to help it distinguish between the two.

Try the prompt:

♪ Almost heaven, West Virginia. Blue Ridge Mountains, Shenandoah River. Life is old there, older than the trees. Younger than the mountains, growin' like a breeze ♪

Voice Cloning

Bark can fully clone voices. It can accurately replicate a speaker's tone, pitch, emotion, and prosody while also preserving other audio features, such as music and ambient noise. However, to prevent the misuse of this advanced technology, they have implemented limitations. Users are only allowed to choose from a select set of fully synthetic options provided by Suno.

Speaker Prompts

While you can provide specific speaker prompts such as "NARRATOR," "MAN," "WOMAN," and so on, it's important to note that these prompts may not always be respected, particularly if there is a conflicting audio history prompt present.

Try the prompt:

MAN: Can you buy me the coffee from starbucks?  WOMAN: Sure, what type of coffee  do you want?

Getting Started

You can start experimenting by testing out the demo on Bark by suno or run your own inference by using Google Colab Notebook.

If you want to run it locally, you have to install the bark package by using the command below in the terminal.

pip install git+https://github.com/suno-ai/bark.git

After that, run the code below in the Jupyter Notebook. The code will download all the models and then convert a text prompt into audio.

from bark import SAMPLE_RATE, generate_audio, preload_models  from IPython.display import Audio    # download and load all models  preload_models()    # generate audio from text  text_prompt = """       Hello, my name is Abid Ali. And, uh -- and I like cheeseburgers. [laughs]        But I also have other interests such as playing online games like Dota 2.  """  audio_array = generate_audio(text_prompt)    # play text in notebook  Audio(audio_array, rate=SAMPLE_RATE)

You can save the audio in wav format by using <code>scipy.io.wavfile</code>.

from scipy.io.wavfile import write as write_wav  write_wav("/project/sample_audio.wav", SAMPLE_RATE, audio_array)

Check out other resources and learn to integrate Bark into your application.

Resources:

  • GitHub: suno-ai/bark
  • Spaces Demo: Bark by suno
  • Colab Notebook: Bark Google Colab Demo
  • Model Card: Bark
  • License: CC-BY 4.0 NC. The Suno models themselves may be used commercially
  • Suno Studio (Early Access): Suno Studio(typeform.com)

Abid Ali Awan (@1abidaliawan) is a certified data scientist professional who loves building machine learning models. Currently, he is focusing on content creation and writing technical blogs on machine learning and data science technologies. Abid holds a Master's degree in Technology Management and a bachelor's degree in Telecommunication Engineering. His vision is to build an AI product using a graph neural network for students struggling with mental illness.

More On This Topic

  • The Ultimate Guide to Data Engineer Interviews
  • The Ultimate Guide To Different Word Embedding Techniques In NLP
  • Creating a Web Application to Extract Topics from Audio with Python
  • The next-generation of AutoML frameworks
  • Exploring GPT-3: A New Breakthrough in Language Generation
  • Adversarial generation of extreme samples

Would you listen to AI-run radio? This station tested it out on listeners

Robot acting like a radio host

ChatGPT and other artificial intelligence tools dominate headlines with speculation about how far generative AI can reach and what it can do — and one radio station tested if the technology could replace its anchors and writers.

The people behind Couleur 3, an inventive European radio station in Switzerland, broadcast AI-generated radio shows for 13 hours on April 27th, where the scripts were generated using ChatGPT and other AI text generators, the music program was created by algorithms, and the voices of five hosts were cloned by a movie production company.

Also: Want a compassionate response from a doctor? You may want to ask ChatGPT instead

Listeners were reminded every 20 minutes that the programming was AI-generated and, yes, the reminder was also done with one of the cloned voices. For one day of programming, from 6am to 7pm, AI ran the show — with the exclusion of news bulletins.

For the reminder, a voice said: "Our voice clones and AI are here to unsettle, surprise, and shake you. And for that matter, this text was also written by a robot."

"Give us back our humans!"

Couleur 3, which is part of Radio Television Suisse (RTS), performed the experiment with the goal of exploring strengths and weaknesses of AI and its application in the future. The station hosted a forum through WhatsApp for feedback in text and audio, where listeners could share their thoughts.

Also: AI might enable us to talk to animals soon. Here's how

"It definitely doesn't replace humans," was one of the messages received during the first morning hours of the experiment. Another read, "Give us back our humans!", with others saying, "It's impressive what we can do with this tool."

Antoine Multone, head of Couleur 3, said in a statement from RTS: "It's not easy distinguishing between a human and a robot speaking. However, this experiment also shows us that creativity, surprise, and humor remain human characteristics — and this reassures us, even though we had no doubt about it from the beginning of the project. This day shows us the way forward: working on added value and originality in our content."

The company also said it met its main goal to explore both the innovative aspect and limitations of generative AI.

Also: Generative AI might soon face some major copyright limitations from the EU

RTS and Couleur 3 acknowledged that, while the technology is highly useful for research, improving productivity, and becoming more efficient in many ways, it's still unable to replace the creativity and emotions that come with the human aspect.

More on AI tools

Council Post: ​​How to get ready for Generative AI journey

Generative AI is a game-changer in the world of artificial intelligence, allowing for the replication of human speech and decision-making. As a result, generative AI is set to transform the way we work, particularly in areas such as production design, design research, visual identity, naming, copy generation, and real-time personalization. However, the world may not be ready for the advent of generative AI, as there are concerns about job loss and striking a balance between AI and human work.

In areas like production design, design research, visual identity, naming, copy generation and testing, and real-time personalization, generative AI will become an indispensable creative partner for people, revealing new ways to reach and appeal to audiences. While it comes with its set of advantages, the world is unable to keep up with AI. Either the fear of losing your job to AI or not being able to find a balance between generative AI and the work is an issue.

Is the world ready for Generative AI??

By introducing a new level of human and AI collaboration in which most workers will have a “copilot,” generative AI will fundamentally alter both the nature and scope of work as we currently understand it. Nearly every job will be impacted — some will be terminated, most will be transformed, and many new employment will be created. Companies who start breaking down occupations into tasks today and invest in retraining employees to work differently alongside machines will set new performance frontiers and have a significant advantage over less creative rivals.

How can you embrace Generative AI:-

1- Jump in with a Business driven attitude

Even though new innovations have clear benefits, implementing them across an organisation can be difficult, especially if the innovation is disruptive to the way things are done now.

Organisations must approach experimenting from two angles.

  • One, which concentrates on possibilities with low-hanging fruit and employs consumable models and apps to obtain immediate returns.
  • The other is centered on business innovation, customer engagement, predictions, and services utilising models that were made specifically for the organisation using its data. The business case can only be defined and implemented successfully with a business-driven attitude.

They will discover which types of AI are most suited for various use cases as they experiment and look into potential for reinvention. This is because the amount of investment and sophistication needed will vary depending on the use case. Additionally, they will be able to test and refine their methods for protecting the privacy of data, carefully model accuracy, bias, and fairness, and discover when “human in the loop” measures are required.

2- People first approach

For generative AI to succeed, it requires attention to humans and training must be like technology. In order to tackle the two unique difficulties of generating and employing AI, businesses should significantly increase their investment in personnel. This entails developing expertise in technical areas like enterprise architecture and AI engineering as well as teaching people throughout the organisation how to collaborate successfully with AI-infused processes. In fact, independent economic research shows that businesses are underinvesting significantly in assisting individuals to stay up with AI advancements, which necessitate more cognitively challenging and judgment-based activities. There will also be completely new positions to fill, such as linguistics specialists, AI editors, AI quality controllers, and prompt engineers.

3- Proprietary Data First

Access to domain-specific organisational data, semantics, expertise, and procedures will be necessary for customising foundation models. By adopting a use-case focused approach to AI in the pre-generative AI era, businesses could still benefit from AI without having modernised their data architecture and estate. That’s not the situation anymore.

Since foundation models require enormous quantities of carefully curated data to learn, every organisation must prioritise addressing the data crisis immediately.

Companies must take a deliberate and methodical approach to gathering, developing, enhancing, protecting, and delivering data. They want a modern, cloud-based enterprise data platform with a reliable, reusable set of data products. These platforms’ cross-functionality, use of enterprise-grade analytics, and storage of data in cloud-based warehouses or data lakes allow for the decentralisation of data from organisational silos and its democratisation for usage by the entire organisation. Then, all corporate data can be analysed collectively in one location or via a distributed computing approach, like a data mesh.

4- Responsible AI needs to step up

The requirement for every organisation to have a strong responsible AI compliance policy in place is becoming even more urgent given the fast deployment of generative AI. This includes safeguards for evaluating the possible risk of generating AI use cases at the design stage and a way to implement ethical AI practices across the entire organisation. The top-down definition and leadership of an organization’s responsible AI principles should be converted into an efficient governance framework for risk management and compliance with both organisational principles and policies and relevant laws and regulations. Organisations must transition from a reactive compliance strategy to the proactive development of mature Responsible AI capabilities using a framework that combines principles and governance, risk, policy, and control, and technology in order to be responsible by design.

This is a crucial time. The way we think about artificial intelligence has quietly undergone a change in recent years thanks to generative AI and foundation models. The world has now become aware of the potential this presents thanks to ChatGPT.

Although artificial general intelligence (AGI) is still a long way off, technology is developing at an astonishing rate. The way information is accessible, content is produced, consumer demands are met, and businesses are all about to enter an enormously exciting new phase.

Businesses must devote as much money to staff development and operational improvement as they do to technology. Realising the full potential of this stepchange in AI technology will depend on a number of variables, including fundamentally rethinking how work is done and assisting people in adapting to technology-driven change. It’s time for businesses to redefine themselves and the sectors in which they compete by utilising revolutionary developments in AI to push the boundaries of performance.

This article is written by a member of the AIM Leaders Council. AIM Leaders Council is an invitation-only forum of senior executives in the Data Science and Analytics industry. To check if you are eligible for a membership, please fill out the form here.

The post Council Post: ​​How to get ready for Generative AI journey appeared first on Analytics India Magazine.

Data Science Hiring Process at Philips Innovation Campus

Philips Innovation Campus (PIC), the research and development arm of Philips in India, driving innovation across healthcare, lighting, and consumer lifestyle products, since its establishment in 1996. With a talented team of engineers, scientists, and researchers, PIC develops cutting-edge technologies, products, and solutions that meet the demands of both local and international markets.

PIC uses AI to create solutions that integrate into the workflows of healthcare providers and daily health routines of people. These AI-enabled solutions aim to augment the expertise of healthcare providers and support their decision-making, improve operational efficiency to help healthcare providers focus on patient care and empower people to take better care of their health and well-being.

Inside Philips AI & Analytics Play

“At Philips, we believe the value of AI is only as strong as the human experience it supports. That’s why we combine the power of AI with deep clinical knowledge to create solutions that integrate into the workflows of healthcare providers and the daily health routines of people”, said Ajit Ashok Shenvi, Head of Data & AI, Philips Innovation Campus, told AIM.

The data science team at Philips has recently developed several innovative health tech solutions using AI and machine learning technologies. These include the Philips Sonicare Prestige 9900, an electric toothbrush that uses sensors and a mobile app to help users improve their brushing technique, the Philips Radiology Smart Assistant, an AI-based solution that provides feedback to radiographers to improve their patient positioning skills, the EPIQ CVx and CVxi, cardiac ultrasound solutions that use AI-based models to provide semi-automated measurements for cardiac anatomical and functional quantification, and eCareManager, a telehealth program that uses advanced clinical algorithms to synthesize large amounts of patient data and identify at-risk patients for resource allocation.

For each business vertical, Philips has identified clear and focused themes in terms of AI capabilities to be integrated into our propositions. They are as follows-

  • Personal Health (PH)- For PH, AI propositions centre around customer experience, engagement, healthy lifestyles and risk management.
  • Precision Diagnosis- AI features throw light on diagnostic and workflow improvement, managing patient flow and health outcomes.
  • Image Guided Therapy- Here, AI uses cases focus on workflow improvement, health outcomes as well as clinical intelligence and customer experience.
  • Connected Care- For this specifically, AI is deployed for medical monitoring, clinical operations management, engagement, coaching, and early detection.

The businesses of Philips cover various aspects of the health spectrum, ranging from personal health to image-guided therapy, and offer diverse solutions. Therefore, the company avoids a one-size-fits-all approach.

While the company uses a common cloud platform infrastructure with some rules, there is flexibility for customisations based on the customer’s needs and the nature of solutions.

The base cloud platform is built on Amazon Web Services (AWS) and uses tools and frameworks from Microsoft, Google, and other providers. Moreover, the company has developed in-house tools and frameworks for specific purposes such as annotation, responsible AI, and data governance.

Additionally, transformer models are being used for multi-lingual clinical reporting applications. GPT and other large language models are being used for automated reporting analysis and preparation in our team. AR and VR are also implemented on demand and employed as and when relevant basis the customer need and use cases.

For example, Web-AR experience for Philips e-commerce products, and the advanced room planning for image-guided therapy use the mentioned emerging technology.

Read more: Data Science Hiring Process at Pepperfry

Interview Process

The hiring process for data science candidates typically involves a few standard tests and hackathon problems to demonstrate basic competency, followed by three to five rounds of technical and aptitude tests. Candidates who pass these stages will then be interviewed by the team manager and HR manager, with evaluation criteria varying depending on the specific data science team.

The key result areas (KRAs) used to assess data science candidates include their proficiency in machine learning (ML) and deep learning (DL), expertise in building AI solutions, familiarity with cloud-based AI platforms like AWS SageMaker, knowledge of the healthcare domain, understanding of regulatory guidelines and privacy guidelines, expertise in data management and governance processes for healthcare data like sensitivity to personal data, consent, access, awareness of data and AI bias, and deep understanding of underlying data sets.

Dos and Don’ts

According to Shenvi, the common mistake among candidates is focusing solely on building AI models in data science. However, the field encompasses end-to-end data and AI solutions that address customer needs, including accessing quality datasets and deploying solutions.

“It is not only about technology push but most importantly about addressing a customers’ end-to-end needs” he added.

Shenvi emphasised the importance of candidates recognising and comprehending the difference between AI models in the general AI field and those in the regulated sector, such as healthcare. In the latter, the process of constructing and implementing AI solutions is highly rigorous. Therefore, candidates should appreciate and understand these distinctions.

Expectations

“We seek to hire candidates for a long-term association, who possess solid theoretical background and proven expertise in building AI/ML solutions. They must be inquisitive and willing to learn both state-of-the-art and apply them to solve end-user problems,” Shenvi added.

Philips prefers candidates with a T-shaped profile and experience in healthcare. The right mindset is the most important criterion for selection.

On the hand, when it comes to the candidates, Shenvi says that they can “expect to solve unique challenges and problems in the healthcare space and improve the end user life”

Successful candidates will have the opportunity to work with one of the top AI/ML experts in the health tech industry and gain a deep understanding of various clinical modalities. In addition to this, they can look forward to a workplace culture that emphasises work-life balance and a commitment to continuous learning throughout their career.

Internship

If you are in college and looking for internships, Philips has got you covered.

Philips follows a centralised process to recruit interns from select educational institutions. The process involves candidates applying for roles, followed by interviews and mentorship at Philips.

To be eligible for the internship, students must possess strong academic credentials and relevant project experience in their field. Additionally, holding certifications in reputable programming and data science courses would be advantageous.

Work Culture

“Our work culture is guided by core values such as customer focus, patient safety, quality, teamwork, ownership, and eagerness to improve. We believe that every individual can make a difference in driving the best outcomes for our customers, patients, consumers, and colleagues” Vishpala Reddy, Head of Human Resources, Philips Indian Subcontinent told AIM.

Philips’ gender distribution throughout the company is 39% on average. Around 1,300 women are in senior management positions, such as senior directors and executives.

To create a more inclusive workplace, Philips prioritises transparency and gender balance in senior leadership positions, provides unconscious bias awareness training, and fosters diverse talent through employee resource groups and mentoring. Additionally, we aim to combat the digital divide by ensuring accessibility to technology and providing training opportunities for all employees. Leaders should continually invest in resources and training to upskill employees and stay up-to-date with market trends.

“Our inclusive culture prioritizes oneness, and we do not disclose employee representation based on sexual orientation, gender identity, expression, or disability,” concluded Reddy.

Read more: Raining Quantum Investments, But Talent Still an Issue

The post Data Science Hiring Process at Philips Innovation Campus appeared first on Analytics India Magazine.

Top Posts April 24-30: AutoGPT: Everything You Need To Know

AutoGPT: Everything You Need To Know
Most Popular Posts Last Week

  1. AutoGPT: Everything You Need To Know by Nisha Arya
  2. Data Visualization Best Practices & Resources for Effective Communication by Nate Rosidi
  3. 8 Open-Source Alternative to ChatGPT and Bard by Abid Ali Awan
  4. Baby AGI: The Birth of a Fully Autonomous AI by Nisha Arya
  5. LangChain 101: Build Your Own GPT-Powered Applications by Bala Priya C

Most Popular Posts Past 30 Days

  1. AutoGPT: Everything You Need To Know by Nisha Arya
  2. 8 Open-Source Alternative to ChatGPT and Bard by Abid Ali Awan
  3. LangChain 101: Build Your Own GPT-Powered Applications by Bala Priya C
  4. Top 19 Skills You Need to Know in 2023 to Be a Data Scientist by Nate Rosidi
  5. 4 Ways to Generate Passive Income Using ChatGPT by Youssef Rafaat
  6. 10 Websites to Get Amazing Data for Data Science Projects by Nate Rosidi
  7. Baby AGI: The Birth of a Fully Autonomous AI by Nisha Arya
  8. 5 Free Tools For Detecting ChatGPT, GPT3, and GPT2 by Abid Ali Awan
  9. Automate the Boring Stuff with GPT-4 and Python by Natassha Selvaraj
  10. 4 Ways to Rename Pandas Columns by Abid Ali Awan

More On This Topic

  • AutoGPT: Everything You Need To Know
  • Can Robots and Humans Combat Extinction Together? Find Out April 17
  • Top April Stories: The Most In-Demand Skills for Data Scientists in 2021
  • KDnuggets News, April 27: A Brief Introduction to Papers With Code; Machine…
  • KDnuggets News, April 13: Python Libraries Data Scientists Should Know in…
  • KDnuggets News, April 6: 8 Free MIT Courses to Learn Data Science Online;…