If we talk about AutoML, then one of the most amazing open-source products that comes to my mind is MindsDB. MindsDB enhances the existing databases and modifies the tables in them to act as AI Tables that are able to train robust Predictior models using the data that exists.
All this without the hassle of learning how to code such models in Python or dealing with the dependencies or maintaining them at a later stage. With MindsDB, you can use simple SQL-like statements and get accurate predictions in a click.
In this tutorial, we will learn how we can forecast the stock prices of Tesla using MindsDB. You can download the required dataset from here which we will use in this tutorial.
We will use MindsDB Cloud to complete this tutorial. Make sure you follow all the steps below to complete training a Predictor Model.
Step 2: Once you're signed in, the MindsDB Cloud console opens up. Now click on the
Add data button from the top right corner. This should open up the
Select your datasource page.
Step 3: Now select
Files from the top tab instead of
Databases and then hit the
Import File section.
Step 4: Now browse and open the
.CSV file that we just downloaded above, provide a name for the table in the
Table Name field and then hit the
Save and Continue button to create it.
Step 5: After the Table is created, the control takes us back to the MindsDB Cloud console. You will find two simple queries in the Query Editor now. Let's execute them one by one to confirm whether the data import was successful or not.
SHOW TABLES FROM files;
Find the name of the table we created in the list of returned table names.
SELECT * FROM files.Tesla LIMIT 10;
This should return 10 data records from the table
This confirms that we have the correct data records with us and now we can move on to the next part of this tutorial.
Creating a Predictor model using MindsDB is as easy as just firing up a simple SQL query. So, let's see how easily we can create this model.
Step 1: MindsDB provides a
CREATE PREDICTOR that will come in handy now as we want to create and train a new model using the dataset, we have with us. You can find the query below.
CREATE PREDICTOR mindsdb.tesla_predictor (Name of the Predictor) FROM files (SELECT * FROM Tesla) (Name of the Table) PREDICT Close (Target Value) ORDER BY value_date (Ordering data based on Date) WINDOW 120 (Model picks up last 120 records) HORIZON 60; (To Forecast the future 60 outcomes)
The query should return a successful status.
Step 2: The model can take some time to be ready. Meanwhile, we can check its status using the command below.
SELECT status FROM mindsdb.predictors WHERE name = 'tesla_predictor';
If the status is
complete, then the model is ready. However, if the status is
training, then wait for a while until you get the status as
Note: This kind of Predictor is an advanced one as we will be using it to predict a future outcome value based on the historical data that we have in the dataset. Such kind of predictions fall under the Timeseries category.
As the Predictor model is now ready, let us first understand what lies under the hood. So, MindsDB provides us with three ways to describe our model to retrieve further insights.
- By Features
- By Model
- By Model Ensemble
If you're interested to find out the roles that each of the columns serve for the model or the encoders used on them, then you can try to describe the predictor based on it feature.
You can choose to describe it by model if you want to figure out the underlying candidate models that were used during the training along with the one that was finally selected for the Predictor. The selected candidate will have the value
1 in its
If you're interested to further deep dive and find out how the candidate model was selected, then you can try describing the predictor with ensemble. This returns a JSON result with all the parameters that helped to determine the best candidate model out of the available ones.
We have now completed understanding the model we just trained. Time to start forecasting things now!
As usual, MindsDB also provides simple SQL statements to predict/forecast values from the model. So, let's figure out how we can forecast values.
Before we proceed, we need to understand the basic scenario here. So, we have a dataset that lists out the closing stock values of Tesla over a period of time. Now, with this predictor model, we will try to forecast the closing value after the last record available in the dataset. We can do that by using another keyword
LATEST for the dates now.
The query will be simple SELECT type where we will join the predictor model along with the data table and fetch the Forecasts.
SELECT T.value_date as date, T.Closing as Forecast, Closing_explain FROM mindsdb.tesla_predictor as T JOIN files.Tesla as P WHERE P.value_date > LATEST LIMIT 60;
This query should return us with the forecasts of up to 2 months (60 Days) after the last date that was available in the dataset. The last available date in this dataset was
16-09-2022 and 60 days from that day ends at
14-11-2022 which is the last forecast date in the result table.
Note: You can forecast the values of further future dates by simply increasing the value of
HORIZONto more than 60 days. To increase the accuracy, you can also opt to increase the value of
WINDOWto more than 120 days.
We have now reached the end of this tutorial. Let us summarize all the tasks we did above as a list below.
- We created a MindsDB Cloud Account.
- We imported a dataset into MindsDB Cloud.
- We created and trained a Predictor Model for Timeseries Forecast.
- We gained insights about the model using DESCRIBE.
- We forecasted the Tesla Stock Prices for a future date.
Now, it's time for all of you to create your own models and try forecasting some interesting values. If you need some suggestions, then I would love to drop some ideas like
Bitcoin Value Forecast,
Ethereum Value Forecast,
Gold Price Forecast, etc. Be creative, train something funky and share it with the community.
Lastly, before you close this page, don't forget to drop a
LIKE if you liked this tutorial and also let me know if you have any feedback. You can also suggest something specific you wish to learn about MindsDB and I will try to cover that up as well.