To get started with Apple's Create ML, let's look at the official documentation. You can find this inside of Xcode. This is a handy way to really learn about anything that's happening with the Xcode development environment. Notice it says creating an image classifier model. Now there's other ways that you can do things with Create ML as well but let's take really the basic case here which is that I want to classify a different image. Let's say a giraffe, for example. This would build out something called ML Model and this is done through an AutoML system that Apple gives me access to. To train the classifier, I would just need to have at least 10 different copies of the image, so different images of each category. Then this is all that we need to occur to train it. You can see here it says use at least 10 images per category and then the more data you have, the better it will be able to perform. Also, if there's a more diverse set of images, maybe multiple angles are lighting conditions, this also can help it have better performance. What's great about this is that it is anything that can be opened by QuickTime player. It could be a JPEG file, a PNG file, and also it says it's better to use images that are at least 299 by 299 pixels. Reasonably large size file. Now notice for organizing the training data here, it says, to prepare your training data, you would need to have essentially different directories full of the labels. In this case, if I wanted to have a buffalo with cheetah, an elephant, a giraffe, I would go through here and build out a directory for each one. Then you also can test it to see how well the model performs in the real-world. You would want to have at least 25 test categories for that as well. What I'm going to do is I'm going to open up this Create ML project and I'm going to use a template. To do that, you want to first download Xcode if you haven't downloaded it. Open up Xcode, and then you want to right-click on the icon in your dock. This is a little bit tricky to know if you didn't read the documentation, but first open up Xcode, then right-click on the icon in your dock. Then this secret menu appears under the Developer Tools option. I'm not sure why they do that, but maybe it's in a developing feature and you can see that there's lots of different things that you can do. Anything from image classification to object detection to style transfer. Then you go through name it, configure the training session here, which is what we're going to do, and then go through and do the testing data. A really awesome tool set that Apple stealthily threw into our ecosystem and we're going to use it to train a cats and dog model. The first thing I'm going to do is I'm going to show you that I'm going to open up this dataset here. I'm going to go to Create ML and it's going to pop open this Create ML dialog box here. Let's make this a little bit bigger and let's see what all the different things you can do. If we say all, I can do image classification, I can do object detection, I can do style transfer, action classification, so this would be maybe if I was a personal trainer and I had lots of different images of clients doing activities, and I want to build my own in this classification thing, I could do that. We've got activity classifications, sound classification, text classification, word tagging, tabular classification. This predicts the categorical features given another dataset's values. Then tabular regression, this would be a numerical prediction or even a recommendation engine. What's really awesome about this is that as a data scientist myself, instead of me needing to always write code, I could use this to quickly prototype out new solutions. Let's go ahead and get started and build our own classification system. Now that we have an overview, let's go ahead and get started here. Pick image classification, and let's name our project. I'm going to call this cats hyphen dogs and this is a project for classifying dogs versus cats. Fairly classic data science program problem. I'm going to save this on my desktop. There we go. Notice that it gives us this good overview window that has pretty much everything we need in this window. It's going to ask for training data. It's going to ask for validation data and testing data. It's going to, again, need at least 10 different examples of each set. What I did is I downloaded right here the cats and dogs data set from Kaggle. Notice that if I go ahead and open this thing up here, let's go through here and open this thing up. We'll go to this and we'll look inside. There's a cat and a dog directory. The problem though is that this could take quite a while to train because of the size. There's thousands and thousands of files. What I'm going to do instead is I'm going to make this a little bit bigger here. I'm going to create a new folder called this cats-dogs-small. This is what I would recommend when you're dealing with maybe first getting started here is first start with a really small size so that you don't overwhelm yourself. Then we'll build a couple of different things. First, we'll build a cat's directory here. I'm going to go ahead and again and say new folder, and we'll call this cat. Then we'll make another folder and we'll call this dog. Then I'll just take maybe the first 100 images, 0-99. There we go, grab those, copy them, and put those into the cat directory. I can just literally just paste that in. There we go and will put this into this cat's directory. Looks like I needed to move this around, which is nice about Mac and using drag and drop as I can take these and move them into that directory. There we go. Now they're in the cat directory. Then I'm going to need to do the same thing for the dog. I can basically go back here to this overview, go to dog, do the same thing, 0-99. Go here. Take this and either copy it and paste it in, or drag and drop it, wherever you want to do. I'm going to double-click it here and just paste it in. There we go. Now, I also want to have a test data set here. What I'm going to do is I'm going to say new folder. I'm going to create this called test-cats and dogs like this. Then we'll do the same thing inside. I'll do as well a new directory called cat. There we go. We'll do a new directory called dog. Just like that. Then I can grab, let's say 100-200. Let's go ahead and do that. Let's copy that. Let's see, this is dog pictures, I'll drag that into the dog directory. Then I'll go to the cat directory and I'll grab again 100-200, so 100-200. What the test data is going to allow us to do is just get better metrics on how well our model is able to predict things. We'll go through there. We've got all the prep setup here. I would follow a very similar pattern when you're going through and building things yourself on your own machine. Let's drag all these things over to the side here so we can really easily look at them. There we go. Perfect. First thing I'm going to do is choose my training data here. I can go through here and say select files. All I need to do is go to the cat-dog-small, which I prepared, which has a 100 examples of each. We'll go through and say, okay, notice that it found two classes of 402 items total. It automatically will split the data into a validation data set. What this means in human language is that it takes some of the data out to make sure that when it's training the model that it's accurately able to predict inside of there. Then the test set we can go through here and we can click on plus, and we can say test cats and dogs. Throw that in there. There we go. We've got these items and so we've got some good things inside of here. Now, another thing to point out that's a really awesome feature of this training system is that if I wanted to basically enhance the training method so that it can recognize different kinds of scenarios, for example, is the image cropped a little bit or maybe there's a little bit of noise because I got a weird image from the Internet or is blurred or whatever, this can still actually train the model to do an accurate prediction by adding all these different features. The more that you go through here and you add different aspects of noise or cropping, it'll take a little bit longer to train. But for now, let's just pick a couple noise and cropping and look for maximum iterations it's going to go through and train this for 25 different iterations of a run. That looks good. I'm going to go to this upper button here that says "Train". Again, no data science experience necessary, no coding experience necessary. I could be a newcomer to image classification and I'm ready to go. Let's go ahead and click "Train" and now let's go through here and train this model. It's processing the images here. Now we can see it in real-time. It's able to classify things correctly and look, we're able to get precision and recall. These are just metrics that show basically the difference between false positives and false negatives. We're able to see really good accuracy here. If I want to look at the preview here, what this will do is allow me to now test it out on different scenarios. For example, if I go back to this data set here, let's go ahead and show it some things that it hasn't seen yet. We know if we go past 200, these are all new images, like 233, this is something it has never seen before. Let's go ahead and try this out. We can just drop this here and it says 100 percent confidence, it's a dog. If I go through another one, it's 100 percent confidence. Let's see, again 100 percent confidence, it's a dog. Let's go ahead and find some cats. Let's go through here and let's find this kitty here. We put this in, there we go, 100 percent confidence. I think the real takeaway here is that it's incredibly easy to be a machine learning practitioner by using Apple's Create ML. This is just one of the things it can do, it can do other things as well like maybe classification of tabular data. Let's go through here in fact and look at the output here and notice some different things. One is that it created a model for us. I can actually open it up in Xcode and build an iOS application with it, I can share it with other people, or I can just download it. If I click on "Get" here, notice that it creates a format called "dotMLmodel". This ML model actually can be converted to different formats. For example, it could be converted to ONIX format, for example. It could be deployed to Microsoft Azure into the Cloud somewhere, or it could be deployed into, let's say AWS. So this is really, in fact, in a sense, does many of the things that a data science team would do in an organization and you could just do it on your desktop by dragging and dropping and putting these images inside. All right, let's shift gears here and let's look at doing a different kind of classification. I have a project here where I have some information about NBA teams and if I go to this directory in GitHub/noahgift/socialpowernba I've got the social power directory, I've got code in here, I also have data and in particular, one of the neat data sets that I have that we can play around with is this one, which is NBA 2017 players, it shows their salary data, how popular they are in social media, and how popular they are in Wikipedia, so how many people have viewed, their page views here. There's other data sets that we can play around with as well, but this would be a good data set for us to explore. I'm going to click on "Raw" here and this will let me see the raw view of it and then I'm going to just save it as a different file. I'm going to say comma-formatted file and I'm going to save it on my desktop. There we go. Now that I've got this, you can see it's saved as CSV file. I'm going to go back to my project here, and I'm going to close my other project and create a new one. Inside of this new project, I'm going to drag this file over here. I'm going to look for a different kind of AutoML solution. In this case, I'm going to pick something called tabular classification. I'll go ahead and pick that, and I'll call this NBA Social Power as the project. We want to predict, for example, the position a player would play. For example, let's go ahead and use that like what are the NBA positions that a certain player would play? I'm going to go ahead and create that on my desktop. Now in order to build out, the training data should be pretty straightforward. I would need to click "Choose here" and give it this file which is the CSV file. In particular, we now need to pick the targets. What do we actually want to predict? I want to create a model that's going to figure out who's a point guard, who's a center, who's a power forward etc. Then I get to select which features. These are basically, what are the inputs? Why do I want to choose that would predict what player position would be in. Let's look at the age here. Let's take a look at that. How about how many field goals they make? How about how many three-pointers they attempted? Let's go ahead and pick in as well. Maybe free throws, off-it's rebounds, defensive rebounds, assists, steals, blocks, turnovers. How about as well, how many points they score? I think another one that would be a good one would be how much they get paid, how popular they on social media which would be these metrics right here. These all look like some fun features to play around with. I'm going to go ahead and select them, and notice that we have five classes that we're going to use here. Here's the features and it's going to automatically pick the correct algorithm. We could choose from random forests, boosted tree, decision tree, support vector machine, logistic regression. This all looks good. I'm going to again go here, click on "Train". Let's see what this can do in terms of training the model. This one says, missing value encountered in Twitter favorite count. Maybe what we can do is, we can actually go back here and tweak this. Maybe what we want to do is choose features here. Let's take out Twitter because it looks like there's some problems with that, and maybe even, let's go ahead and select this, and let's go ahead and treat it again and see if that works. There we are. We are able to complete it. Now if I look at the evaluation, we can see that we're able to correctly predict with 100 percent precision recall which are metrics for basically classification accuracy. That who would be a center, who'd be a powerful, who'd be a point guard, who would be a small forward, and who would be a shooting guard? These are all able to be predicted successfully here which is pretty neat. Again if I wanted to go through here, and I wanted to preview this, I can put in different viewpoints here and then go through and use that for a model. I also could go through here and download it as well. I can actually do this prediction. Not only can you do image-based machine learning, but you can also do text-based classification. In fact, in this case, we're able to accurately predict based on those metrics, which player in the NBA is in which position based on things like points and rebounds and other set metrics. There's a lot you can do with this create ML system. If I wanted to create a new project again, I could just keep going here and going through and exploring all of the different AutoML features. Think we're at a golden era or I'll call it the Industrial Revolution for MLOps. I hope you would go through and give this a try and explore some of the things you can do with both AutoML and Apples to create ML.