Package: aethos
Aethos"A collection of tools for Data Scientists and ML Engineers to automate their workflow of performing analysis to deploying models and pipelines."To track development of the project, you can view theTrello board.What's new in Aethos 2.0?For a summary of new features and changes to Aethos in v2.0 you can read thisblog post. Alternatively, there is a Google Collab notebook availablehere.Table of ContentsIntroductionUsageInstallationDevelopment PhasesFeedbackContributorsSponsorsAcknowledgmentsFor DevelopersIntroductionAethos is a library/platform that automates your data science and analytical tasks at any stage in the pipeline. Aethos is, at its core, a uniform API that helps automate analytical techniques from various libaries such as pandas, sci-kit learn, gensim, etc.Aethos provides:Automated data science cleaning, preprocessing, feature engineering and modelling techniques through one line of codeAutomated visualizations through one line of codeReusable code - no more copying code from notebook to notebookAutomated dependency and corpus managementDatascience project templatesIntegrated 3rd party jupyter plugins to make analyzing data more friendlyModel analysis use cases - Confusion Matrix, ROC Curve, all metrics, decision tree plots, etc.Model interpretability - Local through SHAP and LIME, global through Morris SensitivityInteractive checklists and tips to either remind or help you through your analysis.Comparing train and test data distributionExporting trained models as a service (Generates the necessary code, files and folder structure)Experiment tracking with MLFlowPre-trained models - BERT, GPT2, etc.Statistical tests - Anova, T-test, etc.You can view a full list of implemented techniques in the documentation or here:TECHNIQUES.mdPlus more coming soon such as:Testing for model driftRecommendation modelsParralelization through Dask and/or SparkUniform API for deep learning modelsAutomated code and file generation for jupyter notebook development and a python file of your data pipeline.Aethos makes it easy to PoC, experiment and compare different techniques and models from various libraries. From imputations, visualizations, scaling, dimensionality reduction, feature engineering to modelling, model results and model deployment - all done with a single, human readable, line of code!Aethos utilizes other open source libraries to help enhance your analysis from enhanced stastical information, interactive visual plots or statistical tests and models - all your tools in one place, all accessible with one line of code or a click! See below in theAcknowledgmentsfor the open source libraries being used in this project.UsageFor full documentation on all the techniques and models, clickhereorhereExamples can be viewedhereTo start, we need to import Aethos dependencies as well as pandas.Before that, we can create a full data science folder structure by runningaethos createfrom the command line and follow the command prompts.OptionsTo enable extensions, such as QGrid interactive filtering, enable them as you would in pandas:importaethosasatat.options.interactive_df=TrueCurrently the following options are:interactive_df: Interactive grid with QGridinteractive_table: Interactive grid with Itable - comes with built in client side searchingproject_metrics: Setting project metricsProject metrics is a metric or set of metrics to evaluate models.track_experiments: Uses MLFlow to track models and experiments.User options such as changing the directory where images, and projects are saved can be edited in the config file. This is located atUSER_HOME/.aethos/ .This location is also the default location of where any images, and projects are stored.New in 2.0The Data and Model objects no longer exist but instead there a multiple objects you can use with more of a purpose.Analysis - Used to analyze, visualize and run statistical models (t-tests, anovas, etc.)Classification - Used to analyze, visualize, run statistical models and train classification models.Regression - Used to analyze, visualize, run statistical models and train regression models.Unsupervised - Used to analyze, visualize, run statistical models and train unsupervised models.ClassificationModelAnalysis - Used to analyze, interpret and visualize results of a Classification model.RegressionModelAnalysis - Used to analyze, interpret and visualize results of a Regression model.UnsupervisedModelAnalysis - Used to analyze, interpret and visualize results of a Unsupervised model.TextModelAnalysis - Used to analyze, interpret and visualize results of a Text model.Now all modelling and anlysis can be achieved via one object.Analysisimportaethosasatimportpandasaspdx_train=pd.read_csv('https://raw.githubusercontent.com/Ashton-Sidhu/aethos/develop/examples/data/train.csv')# load data into pandas# Initialize Data object with training data# By default, if no test data (x_test) is provided, then the data is split with 20% going to the test set## Specify predictor field as 'Survived'df=at.Classification(x_train,target='Survived')df.x_train# View your training datadf.x_test# View your testing datadf# Glance at your training datadf[df.Age>25]# Filter the datadf.x_train['new_col']=[1,2]# This is the exact same as the either of code abovedf.x_test['new_col']=[1,2]df.data_report(title='Titanic Summary',output_file='titanic_summary.html')# Automate EDA with pandas profiling with an autogenerated reportdf.describe()# Display a high level view of your data using an extended version of pandas describedf.column_info()# Display info about each column in your datadf.describe_column('Fare')# Get indepth statistics about the 'Fare' columndf.mean()# Run pandas functions on the aethos objectsdf.missing_data# View your missing data at anytimedf.correlation_matrix()# Generate a correlation matrix for your training datadf.predictive_power()# Calculates the predictive power of each variabledf.autoviz()# Runs autoviz on the data and runs EDA on your datadf.pairplot()# Generate pairplots for your training data features at any timedf.checklist()# Will provide an iteractive checklist to keep track of your cleaning tasksNOTE:One of the benefits of usingaethosis that any method you apply on your train set, gets applied to your test dataset. For any method that requires fitting (replacing missing data with mean), the method is fit on the training data and then applied to the testing data to avoid data leakage.# Replace missing values in the 'Fare' and 'Embarked' column with the most common values in each of the respective columns.df.replace_missing_mostcommon('Fare','Embarked')# To create a "checkpoint" of your data (i.e. if you just want to test this analytical method), assign it to a variabledf.replace_missing_mostcommon('Fare','Embarked')# Replace missing values in the 'Age' column with a random value that follows the probability distribution of the 'Age' column in the training set.df.replace_missing_random_discrete('Age')df.drop('Cabin')# Drop the cabin columnAs you've started to notice, alot of tasks to df the data and to explore the data have been reduced down to one command, and are also customizable by providing the respective keyword arguments (see documentation).# Create a barplot of the mean surivial rate grouped by age.df.barplot(x='Age',y='Survived',method='mean')# Plots a scatter plot of Age vs. Fare and colours the dots based off the Survived column.df.scatterplot(x='Age',y='Fare',color='Survived')# One hot encode the `Person` and `Embarked` columns and then drop the original columnsdf.onehot_encode('Person','Embarked',drop_col=True)ModellingRunning a Single ModelModels can be trained one at a time or multiple at a time. They can also be trained by passing in the params for the sklearn, xgboost, etc constructor, by passing in a gridsearch dictionary & params, cross validating with gridsearch & params.After a model has been ran, it comes with use cases such as plotting RoC curves, calculating performance metrics, confusion matrices, SHAP plots, decision tree plots and other local and global model interpretability use cases.lr_model=df.LogisticRegression(random_state=42)# Train a logistic regression model# Train a logistic regression model with gridsearchlr_model=df.LogisticRegression(gridsearch={'penalty':['l1','l2']},random_state=42)# Crossvalidate a a logistic regression model, displays the scores and the learning curve and builds the modellr_model=df.LogisticRegression()lr_model.cross_validate(n_splits=10)# default is strat-kfold for classification  problems# Build a Logistic Regression model with Gridsearch and then cross validates the best model using stratified K-Fold cross validation.lr_model=model.LogisticRegression(gridsearch={'penalty':['l1','l2']},cv_type="strat-kfold")lr_model.help_debug()# Interface with items to check for to help debug your model.lr_model.metrics()# Views all metrics for the modellr_model.confusion_matrix()lr_model.decision_boundary()lr_model.roc_curve()Running multiple models in parallel# Add a Logistic Regression, Random Forest Classification and a XGBoost Classification model to the queue.lr=df.LogisticRegression(random_state=42,model_name='log_reg',run=False)rf=df.RandomForestClassification(run=False)xgbc=df.XGBoostClassification(run=False)df.run_models()# This will run all queued models in paralleldf.run_models(method='series')# Run each model one after the otherdf.compare_models()# This will display each model evaluated against every metric# Every model is accessed by a unique name that is assiged when you run the model.# Default model names can be seen in the function header of each model.df.log_reg.confusion_matrix()# Displays a confusion matrix for the logistic regression modeldf.rf_cls.confusion_matrix()# Displays a confusion matrix for the random forest modelUsing Pretrained ModelsCurrently you can use pretrained models such as BERT, XLNet, AlBERT, etc. to calculate sentiment and answer questions.df.pretrained_sentiment_analysis(`text_column`)# To answer questions, context for the question has to be supplieddf.pretrained_question_answer(`context_column`,`question_column`)Model InterpretabilityAs mentioned in the Model section, whenever a model is trained you have access to use cases for model interpretability as well. There are prebuild SHAP usecases and an interactive dashboard that is equipped with LIME and SHAP for local model interpretability and Morris Sensitivity for global model interpretability.lr_model=model.LogisticRegression(random_state=42)lr_model.summary_plot()# SHAP summary plotlr_model.force_plot()# SHAP force plotlr_model.decision_plot()# SHAP decision plotlr_model.dependence_plot()# SHAP depencence plot# Creates an interactive dashboard to interpret predictions of the modellr_model.interpret_model()Code GenerationCurrently you are only able to export your model to be ran a service, and will be able to automatically generate the required files. The automatic creation of a data pipeline is still in progress.lr_model.to_service('titanic')Now navigate to 'your_home_folder'('~' on linux and Users/'your_user_name' on windows)/.aethos/projects/titanic/ and you will see the files needed to run the model as a service using FastAPI and uvicorn.InstallationPython Requirements: 3.6, 3.7pip install aethosTo install the dependencies to use pretrained models such as BERT, XLNet, AlBERT, etc:pip install aethos[ptmodels]To install associating corpora for nltk analysis:aethos install-corporaTo install and use the extensions such asqgridfor interactive filtering and analysis with DataFrames:aethos enable-extensionsCurrently working on condas implementation.To create a Data Science project run:aethos createThis will create a full folder strucuture for you to manage data, unit tests, experiments and source code.If experiment tracking is enabled or if you want to start the MLFlow UI:aethos mlflow-uiThis will start the MLFlow UI in the directory where your Aethos experiemnts are run.
NOTE: This only works for local use of MLFLOW, if you are running MLFlow on a remote server, just start it on the remote server and enter the address in the%HOME%/.aethos/config.ymlfile.Development PhasesPhase 1Data Processing techniquesData Cleaning V1Feature Engineering V1Reporting V1Phase 2Data visualizationsModels and EvaluationReporting V2Phase 3Quality of life/addonsCode Generation V1Experiment TrackingPre trained modelsPhase 4Deep learning integrationStatistical TestsRecommendation ModelsCode Generation V2Phase 5Add time series models (i.e ARIMA) and feature engineeringParallelization (Spark, Dask, etc.)Cloud computingGraph based learning and representationPhase 6Web AppThese are subject to change.FeedbackI appreciate any feedback so if you have any feature requests or issues make an issue with the appropriate tag or futhermore, send me an email atsidhuashton@gmail.comContributorsThis project follows theall-contributorsspecification and is brought to you by theseawesome contributors.SponsorsN/AAcknowledgmentsCredits go to the backbone of open source DataScience and ML: Pandas, Numpy, Scipy, Scikit Learn, Matplotlib, Plotly, Gensim and Jupyter.Community credits go to:@mouradmourafiqfor hispandas-summarylibrary.@PatrikHlobilfor hisPandas-Bokehlibrary.@pandas-profilingfor their automatedEDA report generationlibrary.@slundbergfor hisshapmodel explanation library.@microsoftfor theirinterpretmodel explanation library.@DistrictDataLabsfor theiryellowbrickvisual analysis and model diagnostic tool.@Quantopianfor their interactive DataFrame libraryqgrid.@mwoutsfor their interactive Dataframe libraryitable.@jmcarpenter2for his parallelization librarySwifter.@mlflowfor their model tracking librarymlflow.@huggingfacefor their automated pretrained model librarytransformers.@AutoViMLfor their auto visualization libraryautoviz.@8080labsfor their predictive power score libraryppscore.For DevelopersTo install packagespip3 install -r requirements-dev.txtTo run testspython3 -m unittest discover aethos/