Python: Machine Learning – Part 3
Learning :Python and Machine Learning Part 3
Subject: Implementation and saving ML-Model
After creating a data-set and use it to train a ML model and make sure that it works fine and give a height accuracy predictions (Click here to read: Python and Machine Learning Part 2 ), we may or say we need to keep this model trained and re-use it on any actual data. In many real-life ML to training the model may take time with huge train data in image recognition or voice recognition models, so we need to keep the model trained even if we exit the application. To do this in sklearn we will use the “Model persistence” document page and use the joblib serialization.
First we need to import joblib , also import so to print out the file name and the path, we will use two functions in joblib (dump and load) in save_trained_model we will use the dump. Her is the code.
# Function to save a trained ML-Model import joblib, os # To Import joblib and os def save_trained_model(model_name): print('\n You select to save the trained ML model.') ml_name = input(' Enter a file name: ') joblib.dump(model_name, ml_name) print('\n --> ML Model been saved.\n') print(' File Name is :',ml_name) # To print-out the file name print(' File Path is :',os.path.abspath(ml_name)) # To print-out the file path print('\n\n Do you want to save the ML trained Model? (Y,N): ' ) if input('') in ['y','Y'] : save_trained_model(ML_trained_model)
Now after we save our trained ML-Model we want to load it and use it in our ML program without training our machine. I will use the function new_test_data() from part 2 and pass the ML trained model to it. And to do this, first we need to load the trained ML-Mode. So let’s do it.
# Function to load trained ML-Model def load_ML_Model(ML_filename): the_trained_model= joblib.load(ML_filename) return the_trained_model # we call the function in the main application code. ML_model = load_ML_Model(ML_t_model_filename)
And now we will call our new_test_data() function and pass ML_model to see the prediction.
# Function to load trained ML-Model def new_test_data(ML_model): print('\n\n====================================================') print('--------- START PREDICTION for New Data Set ---------') print('\n In this function a new data set will be generated, ') print(' and a trained ML-Model for "mouse on the coordinate plane" ') print(' will be loaded from the disk. So we will not train the Model.') #print(' So we will not train the Model. ') #print(' will use the IF loops.') new_data_size = 1000 new_data_range = 100 print('\n\n The new data range is {}, and the new data size is {}.'.format(new_data_range,new_data_size)) # generate new data new_test_data1= [] for x in range (new_data_size): new_test_data1.append([round(random.uniform(-new_data_range,new_data_range),2),round(random.uniform(-new_data_range,new_data_range),2)]) print('\n This is the prediction for the New Data set..\n') # Do prediction using ML_model. prediction = ML_model.predict(new_test_data1) cot = 0 # check the predictions accuracy . for i in range (len(prediction)) : if prediction[i] =='Up_r': if ((new_test_data1[i][0]) > 0 and (new_test_data1[i][1]) > 0) : cot = cot + 1 elif prediction[i] =='Up_l': if ((new_test_data1[i][0]) 0) : cot = cot + 1 elif prediction[i] =='D_r': if ((new_test_data1[i][0]) > 0 and (new_test_data1[i][1]) < 0) : cot = cot + 1 elif prediction[i] =='D_l': if ((new_test_data1[i][0]) < 0 and (new_test_data1[i][1]) < 0) : cot = cot + 1 print('\n We count {} correct prediction out of {} Instances.'.format(cot,(new_data_size))) print('\n The Accuracy is:',round((cot/len(prediction))*100,3),'%')
![]() |
To Download my Python code (.py) files Click-Here