Package: maads
Multi-Agent Accelerator for Data Science (MAADS): AutoML for Conventional ML or Historical Batch DataRevolutionizing Data Science with Artificial IntelligenceOverviewMAADS combines Artificial Intelligence, Machine Learning and Natural Language Processing (with data engineering task automation) in one easy to use library, that allows clients to connect to the MAADS server located anywhere in the world and perform advanced analytics and embed intelligence in their organization seamlessly and fast!This library allows users to harness the power of agent-based computing using hundreds of advanced linear and non-linear algorithms. Users can easily integrate Predictive Analytics and Prescriptive Analytics in any solution by wrapping additional code around the functions below.To install this library a request should be made tosupport@otics.cafor a username and a MAADSTOKEN.  Once you have these credentials then install this Python library.Compatibility- Python 3.8 or greater
- Minimal Python skills neededCopyrightAuthor: Sebastian Maurice, PhDInstallationAt the command prompt write:pip install maadsThis assumes you haveDownloaded Pythonand installed it on your computer.SyntaxThere are literally two lines of code you need to write to train your data and make predictions:Main functions:dotrainingExecutes hundreds of agents, running hundreds of advanced algorithms and completes in minutes.  A master agent then chooses the BEST algorithm that best  models your data.dopredictionsAfter training, make high quality predictions - takes 1-2 seconds.hyperpredictionsAfter training, make high quality predictions - takes less than half a second (about ~100 milliseconds). Users can also generate predictions usingnon-python codesuch as JAVA.  Using themaadshyperpredictions.CLASSfile, java apps can call the MAADS prediction server to return predictions very fast.  Other apps, usinganyother language, can also call the MAADS prediction server using standard TCP/IP client/server communication protocols like REST:  This gives MAADS users' the maximum flexibility to integrate MAADS predictions in any solution!You can also use hyperpredictions as an API (Python not needed) and make calls from any application using the following format:
GET http://[maads server website]:[port]/[microserviceid]/?hyperpredict=[optimal algo key],[[input data]],[MAADSTOKEN]MAADS hyper-prediction can also be used in a MICROSERVICES architecture that utilize API gateways (reverse proxies).  This allows organizations to balance loads on the server and manage millions or billions of connections, to hyper-predictions, per day without experiencing latency issues.Support functions:dolistkeys- List all of the keys associated with the data you have analysed.dolistkeyswithkey- List data associated with a single key.dodeletewithkey- Permanently delete all data associated with your key.returndata- Returns data from the string buffer.getpicklezip- Automatically downloads a ZIP file containing the optimal algorithms.  Users can modify the parameter estimates as they wish.sendpicklezip- Automatically upload a ZIP file containing the optimal algorithms to MAADS. The optimal algorithms will immediately take effect for predictions.deploytoprod- Automatically deploy the optimal algorithms to another MAADS server (i.e. production); MAADS will read the ZIP file, extract the algorithms and make all database updates.  This function is useful when your MAADS training server(s) and MAADS prediction server(s) are separate.  A powerful way to integrate MAADS in a distributed architecture is to automatically train your data, then deploy the optimal algorithms to some other server for predictions.  This is a great way to scale your analytics in a large (global) entreprise setting, seamlessly and fast, with MAADS!algoinfo- Get detailed information on the algorithm and other information.genpdf- Retrieve the PDF containing all of the detailed information on the algorithm and other information like model explanation and feature selection, etc.featureselectionjson- Returns JSON collection of feature selection results for easier programmatic manipulation. Use dotraining feature selection switch to return a CSV file of
feature selections.  This function conductsunsupervised learningand important part of model building.Optimization:optimizeAutomatically perform optimization of the optimal algorithms by minimizing or maximixing them to find optimal values for the independent variables:MAADS offers a unique and powerful way to find the optimal values of the independent variablesUsers can even minimize or maximize upto THREE optimal algorithms AT THE SAME TIME by building a multi-objective equation with the optimal algorithmsBy finding the optimal values of the independent variables you can "prescribe" the right combination of independent variables' values that will lead to the HIGHEST or LOWEST value for the optimal algorithmsMAADS is one of the first technologies to offer a seamless integration between PREDICTIVE and PRESCRIPTIVE analytics.Natural Language Processing (NLP):nlpAutomatically perform NLP to summarize large amounts of text data.  Specifically, there are three data sources one can use:Website URL:you can pass a URL to the NLP function and it will automatically scrape the site and return a summary of the text.PDF:Send a PDF to be summarized.Text:Paste text to be summarized.This allows users to integrate NLP in unique and powerful ways with advanced analytics.nlpclassifyAutomatically apply machine learning to predict outcomes from text data.  Specifically, MAADS will:Preprocess text data and convert it to numeric vectors using over 50 Billion words to vector mappings plus custom mappings specific to your trained modelClean your text data by removing strange characters, punctuations, common words, lemmatize the words, etc..Convert the dependent category variable to labels.If dependent variable is not categorical, you can tell MAADS not to convert the dependent variable.  This means you can regress TEXT data on NUMERIC data!This function allows users to integrate NLP in unique and powerful ways with advanced analytics to text based systems like Help Desk or security platforms.Data Prepping:balancebigdataThis is a very convenient function to extract a data subset from a very large dataset while maintaining its structure.  MAADS will do a very detailed analysis of the data to
determine the distribution of the data by binning each variable in a histogram to determine which variables have a good distribution and which ones do not. Using a special algorithm it can effectively extract a subset of data from avery large data setwhich will make it easier for users to use this dataset for MAADS training.  This function can also be very effective in reducing MAADS compute times when training.First import the Python library.import maadsmaads.dotraining(MAADSTOKEN,CSV_local_file, feature_analysis, remove_outliers, has_seasonality, dependent_variable, maadsurl,throttle,theserverlocalname,summer,winter,shoulder,trainingpercentage,retrainingdays,retraindeploy,shuffle)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.CSV_local_file: string, requiredA local comma-separated-file (csv) with Date in the first column.  Date must be MM/DD/YYYY format.All other data must be numbers.feature_analysis: int, required, 1 or 0If 1, then a feature analysis will be done on your data along with training.  If 0, no analysis is done. If -1, features will be generated, and downloaded to your local computer folder WITHOUT training.remove_outliers: int, required, 1 or 0If 1, then outliers will be removed from your data.  If 0, no outliers are removed.has_seasonality: int, required, 1 or 0If 1, then your data will be modeled for seasonality: Winter, Summer, Shoulder. If 0, then your data will
not be modeled for seasonality.  If modeling for seasonality, ensure you have enough data points that
covers the seasons, usually 1 year of data.dependent_variable: string, requiredThis is the dependent variable in your file.  All other variables will be modeled as independent variables.maadsurl: string, requiredIndicate location of MAADS server.  You would have received this URL when you received your username and MAADSTOKEN.throttle: int, optional, Default=-1Indicates whether you want to throttle the data in the server. For example, if you are dealing with big data and facing memory limitations in the
server, then you can specify a smaller number of rows to use in the training process by specifying the number of rows in the throttle parameter.theserverlocalname: string, optionalIndicates location of filename with full path in the server to use for training.  If this is specified, then CSV_local_file must be empty.summer: string, optionalIndicate summer months.  The default value is '6,7,8' for North America.  If you are analysing other continents you could change this value.winter: string, optionalIndicate winter months.  The default value is '12,1,2,3' for North America.  If you are analysing other continents you could change this value.shoulder: string, optionalIndicate shoulder months.  The default value is '4,5,9,10,11' for North America.  If you are analysing other continents you could change this value.trainingpercentage: number between 40 and 100, inclusive, optionalIndicates how much of the complete data set to you as the Training data set. The default value is 75% or 75, the rest is used for test or validation.retrainingdays: number, optionalIndicates how many days to wait, from initial training, to re-train the model. This is convenient to automate re-training of models to take advantage of new data.  Default value is 0, for no re-training.retraindeploy: number, 0 or 1, optionalIndicates whether to deploy (retraindeploy=1) the optimal algorithm to a server (i.e. production) for immediate use after re-training. This assumes FTP server is listed in the MAADS lookup table. Default value is 0, for no deployment after re-training.shuffle: number, 0 or 1, optionalIndicates whether to shuffle the training dataset or not, default=0.Returns:string buffer, PDF of Results, CSV of Prediction DataThe string buffer contains the following sections:DATA: : This consists of the feature selection resultsPKEY: : This is the key to the BEST algorithm and must be used when making predictions.2. maads.dopredictions(MAADSTOKEN,attr,pkey,inputs,maadsurl)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.attr: int, requiredThis value should be 0.  It may change to other values in the future.pkey: string, requiredThis value must be retrieved from dotraining.  Note you can store PKEY after you have trained your file.
Training does not have to run before predictions, as training occurs more infrequently.inputs: string, requiredThis is a row of input data that must match the independent variables in your CSV. For example, if your
trained file is: Date, A, B, C, D and A is your dependent variable, then your inputs must be:
Date, B, C, Dmaadsurl: string, requiredIndicate location of MAADS server.  You would have received this URL when you received your username and MAADSTOKEN.Returns:string bufferThe string buffer contains the following sections:DATA: : This contains your prediction.3. maads.hyperpredictions(MAADSTOKEN,pkey,inputdata,host,port,use_reverse_proxy,microserviceid)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string, requiredThis is the key to the optimal algorithm.inputdata: string, requiredThis is the input data for the optimal algorithm to produce a prediction.host: string, requiredThe host is the webserver that connects to the MAADS prediction server.  This will be provided by the MAADS administrator.port: int, requiredThis is the port that the MAADS prediction server listens on.  This will be provided by the MAADS administrator.  Note:  This will bypass any reverse proxy you are using.use_reverse_proxy: int, optional, Default=0 for no reverse proxyFor users that are using a reverse proxy to balance server load this can be set to 1. You will need to use the port that your proxy is listening on. Note: Your MAADS administrator will have this information.  A reverse proxy (or API Gateway) can be a very effective way to manage high loads on the server and route traffic accordingly.microserviceid: string, optional, Default is empty.For users that are using a reverse proxy to balance server load and directing connection traffic to specific microservices listening on internal ports in the server then this should be provided.  Note: Your MAADS administrator will have this information as needed.  Using microservices with an API gateway is a very effective way to scale MAADS in a (global) enterprise environment.Returns:json, prediction valueThe difference between doprediction and hyperpredictions is that do prediction returns
predictions in a few seconds, hyperpredictions returns predictions in milliseconds.  So if you require very fast predictions
use hyperpredictions.4. maads.returndata(thepredictions, section_attr)Parameters:thepredictions: string bufferThis value is returned from dopredictions.section_attr: string bufferThis value can be any one of the values:PKEY: : This returns the key from the dotraining function.  Note the semi-colon.DATA: : This returns the data from the dotraining or dopredictions functions.  Note the semi-colon.ALGO0: : This returns the BEST algorithm determined by MAADS - without seasonality.ACCURACY0: : This returns the forecast accuracy for the BEST algorithm - without seasonaility.SEASON0: : This returns allseason - for no seasonality.ALGO1: : This returns the BEST algorithm determined by MAADS for WINTER.ACCURACY1: : This returns the forecast accuracy for the BEST algorithm for WINTER.SEASON1: : This returns WINTER.ALGO2: : This returns the BEST algorithm determined by MAADS for SUMMER.ACCURACY2: : This returns the forecast accuracy for the BEST algorithm for SUMMER.SEASON2: : This returns SUMMER.ALGO3: : This returns the BEST algorithm determined by MAADS for SHOULDER season.ACCURACY3: : This returns the forecast accuracy for the BEST algorithm for SHOULDER season.SEASON3: : This returns SHOULDER.Returns:string bufferThe string buffer contains the prediction or the key or the feature analysis.5. maads.dodeletewithkey(MAADSTOKEN,pkey,maadsurl)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string bufferThe key you want deleted.  This can be attained from dolistkeys function.maadsurl: string, requiredIndicate location of MAADS server.  You would have received this URL when you received your username and MAADSTOKEN.Returns:NULLDeletes all files and tables associated with the key permanently.6. maads.dolistkeys(MAADSTOKEN,maadsurl)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.maadsurl: string, requiredIndicate location of MAADS server.  You would have received this URL when you received your username and MAADSTOKEN.Returns:string bufferLists all the keys associated with your MAADSTOKEN.7. maads.dolistkeyswithkey(MAADSTOKEN, pkey,maadsurl)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string bufferThe key you want returned.maadsurl: string, requiredIndicate location of MAADS server.  You would have received this URL when you received your username and MAADSTOKEN.Returns:string bufferReturns the information (with independent variables) associated with your key.8. maads.getpicklezip(MAADSTOKEN,pkey,url,localfolder)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string bufferThe key for the trained model.url: string, requiredIndicate location of MAADS server.  This is the root location of the MAADS folder in the webserver.localfolder: string, requiredIndicates local folder location where file will be saved (i.e. C:/MAADS). Please use folder slashes.Returns:ZIP FileThis is a binary ZIP file and stored in the location of the localfolder.9. maads.sendpicklezip(MAADSTOKEN, pkey,url,localfilename)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string bufferThe key for the trained model.url: string, requiredIndicate location of MAADS PHP file in the webserver.localfilename: string, requiredIndicates local filename to be sent to the server. The file name should have a proper file format: key_DEPLOYTOPROD.zipReturns:Server Response.The ZIP file will be stored and read by MAADS and all necessary changes will immediately take effect.10. maads.deploytoprod(MAADSTOKEN, pkey,url,localfilename,ftpserver,ftpuser,ftppass)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.pkey: string bufferThe key for the trained model.url: string, requiredIndicate location of MAADS PHP file in the webserver.localfilename: string, optionalIndicates local filename to be sent to the server. If indicating localfilename it must have a proper file format: key_DEPLOYTOPROD.zipftpserver: string, optionalIndicates ftp server you want to deploy the optimal algorithms to for predictions. If no FTP server is specified a default FTP server
will used as listed on the MAADS server.  If none is listed this function will fail.ftpuser: string, optionalIndicates ftp username to login to ftp server. If no FTP username is specified a default FTP username
will used as listed on the MAADS server.ftppass: string, optionalIndicates ftp password to login to ftp server.  If no FTP password is specified a default FTP password
will used as listed on the MAADS server.Returns:Server Response.The ZIP file will be stored and deployed to the MAADS PROD server (with FTP connection) and read by MAADS and all necessary changes will immediately take effect. The functions: dopredictions and hyperpredictions can immediately be used.11. maads.nlp(MAADSTOKEN,url,buffer,theserverfolder,wordcount,maxkeywords)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.url: string, requiredIndicate location of MAADS PHP file in the webserver.buffer: string buffer, optionalThe data source to be summarized: URL, PDF, TEXT. If this is not specified, then theserverfolder cannot be empty.theserverfolder: string buffer, optionalThis is a folder in the server that MAADS will read for files.  This is convenient when you do not want to transfer files to the server. If this is not specified, then buffer cannot be empty.wordcount: int, requiredIndicates how many words you want returned.maxkeywords: int, optional, Default=10Indicates how many keywords you want returned.Returns:Two JSON objects separated by semi-colon.The first JSON are the extracted keywords in the text.  The second is the text summary.12. maads.nlpclassify(MAADSTOKEN,iscategory,maads_rest_url,csvfile,theserverlocalname,throttle,csvonly,
username,trainingpercentage,retrainingdays,retraindeploy)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.iscategory: int, required1=Dependent Variable is a category, 0=Dependent variable is continuousmaads_rest_url: buffer, requiredIndicates the url for the MAADS training server with main PHP file.csvfile: string buffer, optionalThe csvfile file to analyse.  The file must contain headers in the first row, and TWO columns: first column is the dependent variable (text or numeric), the
second column is text.  If this is not specified, thentheserverlocalname: string buffer, optionalThe full path of the filename in the server that MAADS will read for training.  If this is empty, then csvfile must be specified.throttle: int, optional, Default=-1Indicates whether you want to throttle the data in the server. For example, if you are dealing with big data and facing memory limitations in the
server, then you can specify a smaller number of rows to use in the training process by specifying the number of rows in the throttle parameter.csvonly: number, 0 or 1, optional, Default=0IF csvonly is set to 1, MAADS will return the converted file only in csv format.  This is convenient because nlpclassify can take several minutes for conversion and training, when a user may only want the converted file without the optimal algorithm.  Also, the converted file could be used as input into another model for training...especially when combining machine learning models that use only numeric data, and those using text data.username: string, optional, Default=emptyIF csvonly is set to 1, you must specify your username in the server.trainingpercentage: number between 40 and 100, inclusive, optionalIndicates how much of the complete data set to use as the Training data set. The default value is 75% or 75, the rest is used for test or validation.retrainingdays: number, optionalIndicates how many days to wait, from initial training, to re-train the model. This is convenient to automate re-training of models to take advantage of new data.  Default value is 0, for no re-training.retraindeploy: number, 0 or 1, optionalIndicates whether to deploy (retraindeploy=1) the optimal algorithm to a server (i.e. production) for immediate use after re-training. This assumes FTP server is listed in the MAADS lookup table. Default value is 0, for no deployment after re-training.Returns:Server Response.Key to the optimal algorithm used for predictions.  NOTE: This key must be used in the HYPERPREDICTION function only.13. maads.algoinfo(MAADSTOKEN,maads_rest_url,key,finddistribution)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.maads_rest_url: string, requiredIndicates the url for the MAADS training server with main PHP file.key: string, requiredThe key to the optimal algorithm returned by dotraining function.finddistribution: int, optional, Default=0Finds the distribution of the trained data.Returns:JSON formatted information.The information contains all of the key details associated with the algorithm.14. maads.genpdf(MAADSTOKEN,maads_rest_url,key,urltomaadsserver,savetofolder)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.maads_rest_url: string, requiredIndicates the url for the MAADS training server with main PHP file.key: string, requiredThe key to the optimal algorithm returned by dotraining function.urltomaadsserver: string, requiredThe website url to MAADS server.savetofolder: string, requiredYour local folder names where you want the PDF saved.Returns:PDF file.The PDF contains all of the key details associated with the algorithm.15. maads.featureselectionjson(MAADSTOKEN,maads_rest_url,key)Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.maads_rest_url: string, requiredIndicates the url for the MAADS training server with main PHP file.key: string, requiredThe key to the optimal algorithm returned by dotraining function.Returns:JSON formatted information.The information contains all of the key details associated with feature selection.16. maads.optimize(MAADSTOKEN, maads_rest_url, algo1, ismin=1, objeq='1', a1cons=1, boundslimits='',
forceupdate=0, algo2='', algo3='', a2cons=1,a3cons=1, iters=100, step=4, perc='min_0_max_0')Parameters:MAADSTOKEN: string, requiredA token given to you by MAADS administrator.maads_rest_url: string, requiredIndicates the url for the MAADS training server with main PHP file.algo1: string, requiredThe optimal algo key to minimize or maximize - the optimal algorithm returned by dotraining function.algo2: string, optionalThe optimal algo key to minimize or maximize - the optimal algorithm returned by dotraining function.algo3: string, optionalThe optimal algo key to minimize or maximize - the optimal algorithm returned by dotraining function.ismin: int, optional, default=1If ismin=1 then optimal algo will be minimized, if ismin=0 then it will be maximized.objeq: string, optional, default='1'objeq is when you have a multi-objective optimal algorithms you want to maximize or minimize.  For example, if you want to minimize TWO optimal algorithms and you want an objective function= algo1 + algo2, then objeq=1,1.  If objective function=-algo1 - algo2 then objeq=-1,-1.  If objective function=-algo1 + algo2 + algo3 then objeq=-1,1,1, etc.  etc.boundslimits: string, default='none'Sets custom limits on the bounds of independent variable.  The lower and upper limit bounds can be for each variable or a subset of variable. The format must be the following:variablename:[-1,0,1]:[lowervalue,equal,none]:[uppervalue,none]:[i,f]variablename is the name of your independent variable[-1,0,1] must be ONE of -1,0,1.  -1 means values of variable name must be all negative, 0 means values can be negative or positive, 1 means values must be all positivelowervalue is the lower bound on variable name or equal or none.  If 'equal' you must specify the value in the 'uppervalue' field.uppervalue is the upper bound on variable name or none for no bound.  If no bound, MAADS will create a large value using the High value of variable.[i,f] means i=integer, f=float, this allows users to specify the types of values for variables.For example:  If you have two variables named HOUR and MINUTE and you want to bound them, then you can specify:"hour:1:0:23,minute:1:0:59"means hour is all positive, bounded between 0 and 23, AND minute is all positive bounded between 0 and 59.  You can also just specify"hour:1:none:none,minute:1:none:none"means hour is all positive and minute is all positive. Or,*"hour:1:none:23,minute:1:0:none" means hour is all positive with no lower limit, and upper limit of 23, minute is all positive with lower limit of 0 and no upper limit."hour:1:equal:12,minute:1:0:59"means hour will equal 12 (hour=12), AND minute is all positive bounded between 0 and 59.  You can also just specifyBoundslimitswill give users maximum amount of flexibity when specifying bounds for constraints.NOTE:Variablename MUST match the variables that the model is trained on.  You can retrieve these EXACT names from the function:maads.dolistkeyswithkey(MAADSTOKEN, pkey,maadsurl)a1cons: int, optional, default=1, can be 1,2,3,4a1cons specifies the bounds on the independent variables in the constraint equations for algo 1.  For example:if a1cons=1, then MAADS will "USE MIN/MAX Of Variables For Bounds".  Specifically, min <= var <= maxif a1cons=2, then MAADS will "USE MEAN +/- STD Of Variables For Bounds". Specifically, mean-std <= var <= mean+stdif a1cons=3, then MAADS will "USE MIN/MAX +/- STD Of Variables For Bounds". Specifically, min-std <= var <= max+stdif a1cons=4, then MAADS will "USE MEDIAN +/- STD Of Variables For Bounds". Specifically, median-std <= var <= median+stda2cons: int, optional, default=1, can be 1,2,3,4.  Only used if algo2 is specified.a2cons  specifies the bounds on the independent variables in the constraint equations for algo 2.  For example:if a2cons=1, then MAADS will "USE MIN/MAX Of Variables For Bounds".  Specifically, min <= var <= maxif a2cons=2, then MAADS will "USE MEAN +/- STD Of Variables For Bounds". Specifically, mean-std <= var <= mean+stdif a2cons=3, then MAADS will "USE MIN/MAX +/- STD Of Variables For Bounds". Specifically, min-std <= var <= max+stdif a2cons=4, then MAADS will "USE MEDIAN +/- STD Of Variables For Bounds". Specifically, median-std <= var <= median+stda3cons: int, optional, default=1, can be 1,2,3,4.  Only used if algo3 is specified.a3cons  specifies the bounds on the independent variables in the constraint equations for algo 3.  For example:if a3cons=1, then MAADS will "USE MIN/MAX Of Variables For Bounds".  Specifically, min <= var <= maxif a3cons=2, then MAADS will "USE MEAN +/- STD Of Variables For Bounds". Specifically, mean-std <= var <= mean+stdif a3cons=3, then MAADS will "USE MIN/MAX +/- STD Of Variables For Bounds". Specifically, min-std <= var <= max+stdif a3cons=4, then MAADS will "USE MEDIAN +/- STD Of Variables For Bounds". Specifically, median-std <= var <= median+stdforceupdate: int, optional, default=0, can be 1, or 0forceupdate tells MAADS to update the optimal values.  If forceupdate=0, MAADS will decide if the NEW optimal values should replace the OLD optimal values.  Specifically, if you are maximizing an optimal algo and the new value is LOWER than old value, MAADS will NOT replace old value with new value, because the old value is better.  If forceupdate=1, MAADS will force an update regardless if the new value is better or worse than old value.iters: int, optional, default=100, max=500Specifies the number of iterations to use in the optimization algorithms.step: int, optional, default=3, can be 1,2,3,4Specifies how to generate the values of the independent variables for the constraint equations.  For example,if step=1, then MAADS will use a uniform distribution bounded by the choices of a1cons, a2cons, a3cons, as applicable.if step=2, then MAADS will use a Gaussian distribution bounded by the choices of a1cons, a2cons, a3cons, as applicable.if step=3, then MAADS will combine uniform and Gaussian by averaging to create a distribution bounded by the choices of a1cons, a2cons, a3cons, as applicable.if step=4, then MAADS will find values around an epsilon distance, using the standard deviation, around the values that have historically led to lowest or highest values depending on your optimization problem.perc: string, optional, default='min_0_max_0' - 0 means 0%, values should be greater and equal to 0.Specifies by how much to "stretch" the bounds on the constraints.  For example, if "min_50_max_150", means to lower the MIN bound by 50%, and increase the MAX bound by 150%.  This allows users to specify any size of bounds.Returns:JSON formatted information.The information contains all of the key details associated with optimization including, value of the objective function, constraints, bounds, initial conditions, optimal values of independent variables, etc..17.  maads.balancebigdata(localcsvfile,numberofbins,maxrows,outputfile,bincutoff,distcutoff,startcolumn=0)Parameters:localcsvfile: string, requiredLocal file, must be CSV formatted.numberofbins: int, requiredThe number of bins for the histogram. You can set to any value but 10 is usually fine.maxrows:  int, requiredThe number of rows to return, which will be a subset of your original data.outputfile: string, requiredYour new data will be writted as CSV to this file.bincutoff: float, required.This is the threshold percentage for the bins. Specifically, the data in each variable is allocated to bins, but many
times it will not fall in ALL of the bins.  By setting this percentage between 0 and 1, MAADS will choose variables that
exceed this threshold to determine which variables have data that are well distributed across bins.  The variables
with the most distributed values in the bins will drive the selection of the rows in your dataset that give the best
distribution - this will be very important for MAADS training.  Usually 0.7 is good.distcutoff: float, required.This is the threshold percentage for the distribution. Specifically, MAADS uses a Lilliefors statistic to determine whether
the data are well distributed.  The lower the number the better.  Usually 0.45 is good.startcolumn: int, optionalThis tells MAADS which column to start from.  If you have DATE in the first column, you can tell MAADS to start from 1 (columns are zero-based)RETURNS: Returns a detailed JSON object and new balaced dataset written to outputfile.Simple Example#############################################################Author: Sebastian Maurice, PhDCopyright by Sebastian Maurice 2018All rights reserved.Email:Sebastian.maurice@otics.ca#############################################################** IMPORT THE MAAADS LIBRARY*
import maads** IMPORT ADDITIONAL LIBRARY**
import imp** LOAD ANY DATABASE LIBRARY TO STORE PREDICTIONS**
sqlconn = imp.load_source('sqlconn','C:\sqlsrvconnpython.py')** OPEN DATABASE CONNECTION**
connection = sqlconn.doconnect()cur = connection.cursor()** TEST DATA    **inputs = '1/12/2018,37.76896'pkey='demouser_test2log_csv'
MAADSTOKEN=XXXXXXXXXXXXXXXXXXXX
username='demouser'url='/maads/remotemasstreamremote.php'** DO TRAINING - SERVER RETURNS A KEY THAT POINTS TO THE BEST ALGORITHM**
thedata=maads.dotraining(MAADSTOKEN,'C:\test2log.csv',1,0,0,'depvar',url)** PARSE RETURNED DATA**
pkey=maads.returndata(thedata,'PKEY:')algo=maads.returndata(thedata,'ALGO0:')accuracy=maads.returndata(thedata,'ACCURACY0:')** DO PREDICTIONS WITH THE RETURNED KEY**
thepredictions=maads.dopredictions(MAADSTOKEN,0,pkey,inputs,url)** PARSE THE DATA**
prediction=maads.returndata(thepredictions,'DATA:')** INSERT PREDICTIONS TO ANY DATABASE TABLE**
forecastdate=inputs.split(',')[0]predictionvalue=prediction[2]accuracy=prediction[3]SQL="INSERT INTO PREDICTIONS VALUES('%s','%s','%s','%s','%s',%.3f,%.3f)" % (forecastdate,username,pkey,company,inputs,predictionvalue,accuracy)cur.execute(SQL)cur.commit()** CLOSE THE DATABASE CONNECTION**
cur.close()