Code for the TCAV ML interpretability project

Overview

Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)

Been Kim, Martin Wattenberg, Justin Gilmer, Carrie Cai, James Wexler, Fernanda Viegas, Rory Sayres

ICML Paper: https://arxiv.org/abs/1711.11279

What is TCAV?

Testing with Concept Activation Vectors (TCAV) is a new interpretability method to understand what signals your neural networks models uses for prediction.

What's special about TCAV compared to other methods?

Typical interpretability methods show importance weights in each input feature (e.g, pixel). TCAV instead shows importance of high level concepts (e.g., color, gender, race) for a prediction class - this is how humans communicate!

Typical interpretability methods require you to have one particular image that you are interested in understanding. TCAV gives an explanation that is generally true for a class of interest, beyond one image (global explanation).

For example, for a given class, we can show how much race or gender was important for classifications in InceptionV3. Even though neither race nor gender labels were part of the training input!

Cool, where do these concepts come from?

TCAV learns concepts from examples. For instance, TCAV needs a couple of examples of female, and something not female to learn a "gender" concept. We have tested a variety of concepts: color, gender, race, textures and many others.

Why use high level concepts instead of input features?

Humans think and communicate using concepts, and not using numbers (e.g., weights to each feature). When there are lots of numbers to combine and reason about (many features), it becomes harder and harder for humans to make sense of the information they are accounting for. TCAV instead delivers explanations in the way humans communicate to each other.

The consumer of the explanation may not know machine learning too well. Can they understand the explanation?

Yes. TCAV is designed to make sense to everyone - as long as they can understand the high level concept!

Sounds good. Do I need to change my network to use TCAV?

No. You don't need to change or retrain your network to use TCAV.

Installation

Tensorflow must be installed to use TCAV. But it isn't included in the TCAV pip package install_requires as a user may wish to use it with either the tensorflow or tensorflow-gpu package. So please pip install tensorflow or tensorflow-gpu as well as the tcav package.

pip install tcav

Requirements

See requirements.txt for a list of python dependencies used in testing TCAV. These will all be installed during pip installation of tcav with the exception of tensorflow, as mentioned above.

How to use TCAV

See Run TCAV.ipynb for step by step guide, after pip installing the tcav package.

mytcav = tcav.TCAV(sess,
                   target,
                   concepts,
                   bottlenecks,
                   act_gen,
                   alphas,
                   cav_dir=cav_dir,
                   num_random_exp=2)

results = mytcav.run()

TCAV for discrete models

We provide a simple example of how to run TCAV on models trained on discrete, non-image data. Please see

cd tcav/tcav_examples/discrete/

You can also find a Jupyter notebook for a model trained on KDD99 in here:

tcav/tcav_examples/discrete/kdd99_discrete_example.ipynb.

Requirements

  • tensorflow
  • numpy
  • Pillow
  • matplotlib
  • scikit-learn
  • scipy

How to run unit tests

python -m tcav.cav_test

python -m tcav.model_test

python -m tcav.tcav_test

python -m tcav.utils_test

How to create a new version of the pip package

  1. Ensure the version in setup.py has been updated to a new version.
  2. Run python setup.py bdist_wheel --python-tag py3 and python setup.py bdist_wheel --python-tag py2.
  3. Run twine upload dist/* to upload the py2 and py3 pip packages to PyPi.
Comments
  • Random Images for TCAV for Diabetic Retinopathy application

    Random Images for TCAV for Diabetic Retinopathy application

    Hi,

    I had a question regarding application of TCAV for Diabetic Retinopathy (DR). My question is, for application of TCAV on DR, what do you choose as the random images. Are they completely random images as shown in paper or are the random images related to DR or healthy eye?

    Also, how many random folders/experiments do you use for DR application? For the statistical significance testing?

    opened by soumbane 9
  • Unable to run the tests, program and notebook

    Unable to run the tests, program and notebook

    Hey there,

    I was trying to use the code from the repository and i found that things were not working for me. Here are the things that are of concern to me :

    • Run TCAV.ipynb returns me an error saying No module named tcav_results despite installing tcav.
    • pip install -r requirements.txt throws an error because you used a single = sign instead of ==.
    • python -m tcav.cav_test throws me an error saying ModuleNotFoundError: No module named 'tcav_results'

    Useful information :

    • python --version

    Python 3.6.5

    • pip --version

    pip 19.3.1

    • uname -a

    Linux x1 4.15.0-70-generic #79~16.04.1-Ubuntu SMP Tue Nov 12 14:01:10 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

    opened by akhilpandey95 9
  • Which implementation of InceptionV3 should I be using?

    Which implementation of InceptionV3 should I be using?

    Hi,

    Which implementation of inceptionv3 should I be using to replicate your results? The 3 I have used did not have the names of the layers model.py is looking for. I'd really appreciate if you can point us to the code for inception.

    Thanks!

    opened by rahul003 9
  • hypothesis testing module

    hypothesis testing module

    I could run tcav on zebra class with concept images. however couldn't find the hypothesis testing (Z-test/T-test) section of code in the repo. "If we can reject the null hypothesis of a TCAV score of 0.5, we can consider the resulting concept as related to the class prediction in a significant way. " does that mean consider only those concepts that get tcav score > 0.5 and also pass the hypothesis test?

    opened by KavyaBPadmesh 6
  • question regarding model wrappers (xception model)

    question regarding model wrappers (xception model)

    Hi I have a imagenet-pretrained xception network trained on histology images. I would like to be able to use tcav with this model; however, I'm unsure of how to determine the bottleneck layers that tcav asks for. 1) am i able to use this model for tcav and 2) do you have any suggestions on how to get the bottleneck tensors? I can get all the tensors for the network with graph.get_operations but I'm not sure if any or which of those are relevant.

    Thank you for your help!

    opened by justcho5 5
  • Question regarding directional derivative computation

    Question regarding directional derivative computation

    Hi, While working with tcav code after reading the related paper " Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)" (https://arxiv.org/pdf/1711.11279.pdf), I had trouble understanding the computation of the directional derivative.

    From my understanding of the paper, 'Conceptual sensitivity' is measured by the directional derivative of logit values with respect to activations at the layer of interest. Thus for scoring you take into account the proportions of image with positive directional derivative.

    On the other hand in the code, as shown in the snippet below, sensitivity score seems to be the directional derivative of loss values with respect to activations at the layer of interest. https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/model.py#L54-L55

    As the loss is a function of the logits, the gradient we obtain in the code depends of the loss function we choose. In your case with cross entropy (snippet below) using the article's notation we have : CodeCogsEqn-1

    This leads to a change in magnitude ( which is not used is the score) but also in terms of sign. https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/model.py#L173-L178

    Though it seems that in the code you compensate the sign change by counting the number of negative gradients instead (last snippet). https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/tcav.py#L42-L60

    Have I misunderstood either the paper or the code ? Or is there a specific reason to use loss instead of logit, as you still obtain the same score by changing sign ? Thank you for your answer !

    opened by hugoych 5
  • Changes to random concept calculation and bug fixes

    Changes to random concept calculation and bug fixes

    Hello! As discussed previously, here is a pull request for some changes I've been working on.

    Change list

    • Files are now opened in binary mode for python3 compatibility
    • Raise ValueError on trying to run TCAV on one image. Things seem to break when this happens.
    • Remove transparency channel from images
    • Print results outputs summaries for multiple concepts, and optionally outputs a plot. See example below
    • Changed the way random scores are calculated. Instead of nominating a single random_counterpart to use as the positive set, all negative sets of images are used in turn as the positve set. This has a great effect on the mean of the random concept, however is very computationally expensive.
    • Removed random_counterpart arg for TCAV
    • Update tests for these changes

    I understand you may not want random_concept removed, I can re-add it. What effect should it have? Also, maybe the change to random concepts should be optional due to the extra computation time required.

    Another thing to look into here is to save computing time by noting that the TCAV score for random500_1 vs random500_0 should be the same as 1 - (random500_0 vs random500_1). I am currently unsure how to implement this however.

    Sample output from print_results can be seen below print_results

    opened by Gareth001 5
  • TCAV with TensorFlow Object Detection API models

    TCAV with TensorFlow Object Detection API models

    Hi, I run the repo without issues, and I was able to apply it to Keras models (image classification) successfully. Now I'm looking at how to apply it to Object Detection. But I'm pretty lost because the Object Detection API model is an SSDMetaArch file. If you use the *.pb file, don't provide access to backbone layers directly, and these layers are on Keras. Hence I can apply the Keras wrapper neither use one that follows a graph such as the examples provided in this repository. Any idea or suggestion on where I can start? Quickly add what I'm able to do:

    Get the Keras classification backbone of the Object detector model Get the bottleneck of this model Get the input tensor of this model I cannot pull the loss function from the model, but I can write one. What not being able to do;

    Get the prediction layer not sure if I need to get the prediction layer by individual bounding boxes I really appreciate any help you can provide. P.S. if more details or info is needed from my side. please let me know

    opened by emmanuelol 4
  • ImageNet BaseURL updated.

    ImageNet BaseURL updated.

    The links requested to ImageNet returned a 404 error. fix: The BaseURL doesn't contain "text" anymore. Also, the urls had extra "/r/n" at the end, which was truncated.

    opened by MatinTavakoli 4
  • Kernel crashing with an unknow reason

    Kernel crashing with an unknow reason

    I am trying to use tcav with my CNN keras model, but my kernel keeps crashing for an unknown reason when launching tcav.run(). After checking the code seems that the error is presenting when calling compute_tcav_score in this line of tcav.py

    i_up = self.compute_tcav_score( mymodel, target_class_for_compute_tcav_score, cav_concept, cav_instance, acts[target_class][cav_instance.bottleneck], activation_generator.get_examples_for_concept(target_class), run_parallel=run_parallel)

    The wrapper I have created for my keras model is the following:

    class KerasModelWrapper(model.ImageModelWrapper): """ ModelWrapper for keras models

        By default, assumes that your model contains one input node, one output head
    and one loss function.
    Computes gradients of the output layer in respect to a CAV.
    
    Args:
        sess: Tensorflow session we will use for TCAV.
        model_path: Path to your model.h5 file, containing a saved trained
          model.
        labels_path: Path to a file containing the labels for your problem. It
          requires a .txt file, where every line contains a label for your
          model. You want to make sure that the order of labels in this file
          matches with the logits layers for your model, such that file[i] ==
          model_logits[i]
    """
    
    def __init__(
        self,
        sess,
        model_path,
        labels_path,
        image_shape
    ):
        self.sess = sess
        self.model_name = 'cifar_CNN'
        super(KerasModelWrapper, self).__init__(image_shape)
        self.import_keras_model(model_path)
        self.labels = tf.io.gfile.GFile(labels_path).read().splitlines()
    
        # Construct gradient ops. Defaults to using the model's output layer
        self.y_input = tf.compat.v1.placeholder(tf.int64, shape=[None])
        self.loss = self.model.loss_functions[0](self.y_input,
                                                 self.model.outputs[0])
        self._make_gradient_tensors()
    
    def id_to_label(self, idx):
        return self.labels[idx]
    
    def label_to_id(self, label):
        return self.labels.index(label)
    
    def import_keras_model(self, saved_path):
        """Loads keras model, fetching bottlenecks, inputs and outputs."""
        self.ends = {}
        self.model = tf.keras.models.load_model(saved_path)
        self.get_bottleneck_tensors()
        self.get_inputs_and_outputs_and_ends()
    
    def get_bottleneck_tensors(self):
        self.bottlenecks_tensors = {}
        layers = self.model.layers
        for layer in layers:
            if 'input' not in layer.name:
                self.bottlenecks_tensors[layer.name] = layer.output
    
    def get_inputs_and_outputs_and_ends(self):
        self.ends['input'] = self.model.inputs[0]
        self.ends['prediction'] = self.model.outputs[0]
    

    I don't know if can help but from the log I can retrieve only this information before the crash F ./tensorflow/core/util/bcast.h:111] Check failed: vec.size() == NDIMS (1 vs. 2)

    What am I doing wrong?

    opened by francescobodria 4
  • google.protobuf.message.DecodeError: Error parsing message

    google.protobuf.message.DecodeError: Error parsing message

    TCAV library -- there's a problem when importing in utils.py. Particularly the line when importing the results_pb2 module. I fixed it by changing "from tcav_results.results_pb2..." to "...tcav.tcav_results_pb2...".

    Also there is an incompatibility with tf 2.0. I've tried by replacing tf. with tf.compat.v1. However, I then ran into a decode error, which i opened another issue on.

    In addition, i get this error: File "./tcav/tcav/model.py", line 318, in import_graph graph_def = tf.compat.v1.GraphDef.FromString(tf.compat.v1.gfile.Open(saved_path, 'rb').read()) google.protobuf.message.DecodeError: Error parsing message

    Do you know how I could resolve this problem? Thank you

    opened by justcho5 4
  • Bump pillow from 8.2.0 to 9.3.0

    Bump pillow from 8.2.0 to 9.3.0

    Bumps pillow from 8.2.0 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump tensorflow from 2.5.1 to 2.9.3

    Bump tensorflow from 2.5.1 to 2.9.3

    Bumps tensorflow from 2.5.1 to 2.9.3.

    Release notes

    Sourced from tensorflow's releases.

    TensorFlow 2.9.3

    Release 2.9.3

    This release introduces several vulnerability fixes:

    TensorFlow 2.9.2

    Release 2.9.2

    This releases introduces several vulnerability fixes:

    ... (truncated)

    Changelog

    Sourced from tensorflow's changelog.

    Release 2.9.3

    This release introduces several vulnerability fixes:

    Release 2.8.4

    This release introduces several vulnerability fixes:

    ... (truncated)

    Commits
    • a5ed5f3 Merge pull request #58584 from tensorflow/vinila21-patch-2
    • 258f9a1 Update py_func.cc
    • cd27cfb Merge pull request #58580 from tensorflow-jenkins/version-numbers-2.9.3-24474
    • 3e75385 Update version numbers to 2.9.3
    • bc72c39 Merge pull request #58482 from tensorflow-jenkins/relnotes-2.9.3-25695
    • 3506c90 Update RELEASE.md
    • 8dcb48e Update RELEASE.md
    • 4f34ec8 Merge pull request #58576 from pak-laura/c2.99f03a9d3bafe902c1e6beb105b2f2417...
    • 6fc67e4 Replace CHECK with returning an InternalError on failing to create python tuple
    • 5dbe90a Merge pull request #58570 from tensorflow/r2.9-7b174a0f2e4
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Reproduce Fig.4. Zebra TCAV in googlenet from paper

    Reproduce Fig.4. Zebra TCAV in googlenet from paper

    I was wondering if it should be possible to reproduce the results from fig.4. from the TCAV-paper (Zebra TCAV in googlenet) using the NB tcav/Run_TCAV.ipynb?

    opened by gaunby 0
  • Bump protobuf from 3.10.0 to 3.18.3

    Bump protobuf from 3.10.0 to 3.18.3

    Bumps protobuf from 3.10.0 to 3.18.3.

    Release notes

    Sourced from protobuf's releases.

    Protocol Buffers v3.18.3

    C++

    Protocol Buffers v3.16.1

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.2

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.1

    Python

    • Update setup.py to reflect that we now require at least Python 3.5 (#8989)
    • Performance fix for DynamicMessage: force GetRaw() to be inlined (#9023)

    Ruby

    • Update ruby_generator.cc to allow proto2 imports in proto3 (#9003)

    Protocol Buffers v3.18.0

    C++

    • Fix warnings raised by clang 11 (#8664)
    • Make StringPiece constructible from std::string_view (#8707)
    • Add missing capability attributes for LLVM 12 (#8714)
    • Stop using std::iterator (deprecated in C++17). (#8741)
    • Move field_access_listener from libprotobuf-lite to libprotobuf (#8775)
    • Fix #7047 Safely handle setlocale (#8735)
    • Remove deprecated version of SetTotalBytesLimit() (#8794)
    • Support arena allocation of google::protobuf::AnyMetadata (#8758)
    • Fix undefined symbol error around SharedCtor() (#8827)
    • Fix default value of enum(int) in json_util with proto2 (#8835)
    • Better Smaller ByteSizeLong
    • Introduce event filters for inject_field_listener_events
    • Reduce memory usage of DescriptorPool
    • For lazy fields copy serialized form when allowed.
    • Re-introduce the InlinedStringField class
    • v2 access listener
    • Reduce padding in the proto's ExtensionRegistry map.
    • GetExtension performance optimizations
    • Make tracker a static variable rather than call static functions
    • Support extensions in field access listener
    • Annotate MergeFrom for field access listener
    • Fix incomplete types for field access listener
    • Add map_entry/new_map_entry to SpecificField in MessageDifferencer. They record the map items which are different in MessageDifferencer's reporter.
    • Reduce binary size due to fieldless proto messages
    • TextFormat: ParseInfoTree supports getting field end location in addition to start.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(0.2)
  • 0.2(Nov 21, 2018)

    This release has an API redesign that uses an ActivationGenerator class instead of the old tcav_helpers file. This simplies using TCAV with all different types of models with all different types of examples and ways of loading examples.

    Source code(tar.gz)
    Source code(zip)
  • 0.1(Nov 14, 2018)

A mindmap summarising Machine Learning concepts, from Data Analysis to Deep Learning.

A mindmap summarising Machine Learning concepts, from Data Analysis to Deep Learning.

Daniel Formoso 5.7k Dec 30, 2022
An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models

Seldon Core: Blazing Fast, Industry-Ready ML An open source platform to deploy your machine learning models on Kubernetes at massive scale. Overview S

Seldon 3.5k Jan 01, 2023
Forecasting prices using Facebook/Meta's Prophet model

CryptoForecasting using Machine and Deep learning (Part 1) CryptoForecasting using Machine Learning The main aspect of predicting the stock-related da

1 Nov 27, 2021
Predicting Baseball Metric Clusters: Clustering Application in Python Using scikit-learn

Clustering Clustering Application in Python Using scikit-learn This repository contains the prediction of baseball metric clusters using MLB Statcast

Tom Weichle 2 Apr 18, 2022
Python library for multilinear algebra and tensor factorizations

scikit-tensor is a Python module for multilinear algebra and tensor factorizations

Maximilian Nickel 394 Dec 09, 2022
This is a Cricket Score Predictor that predicts the first innings score of a T20 Cricket match using Machine Learning

This is a Cricket Score Predictor that predicts the first innings score of a T20 Cricket match using Machine Learning. It is a Web Application.

Developer Junaid 3 Aug 04, 2022
Project to deploy a machine learning model based on Titanic dataset from Kaggle

kaggle_titanic_deploy Project to deploy a machine learning model based on Titanic dataset from Kaggle In this project we used the Titanic dataset from

Vivian Yamassaki 8 May 23, 2022
This repository has datasets containing information of Uber pickups in NYC from April 2014 to September 2014 and January to June 2015. data Analysis , virtualization and some insights are gathered here

uber-pickups-analysis Data Source: https://www.kaggle.com/fivethirtyeight/uber-pickups-in-new-york-city Information about data set The dataset contain

B DEVA DEEKSHITH 1 Nov 03, 2021
50% faster, 50% less RAM Machine Learning. Numba rewritten Sklearn. SVD, NNMF, PCA, LinearReg, RidgeReg, Randomized, Truncated SVD/PCA, CSR Matrices all 50+% faster

[Due to the time taken @ uni, work + hell breaking loose in my life, since things have calmed down a bit, will continue commiting!!!] [By the way, I'm

Daniel Han-Chen 1.4k Jan 01, 2023
A Python step-by-step primer for Machine Learning and Optimization

early-ML Presentation General Machine Learning tutorials A Python step-by-step primer for Machine Learning and Optimization This github repository gat

Dimitri Bettebghor 8 Dec 01, 2022
A Python library for choreographing your machine learning research.

A Python library for choreographing your machine learning research.

AI2 270 Jan 06, 2023
To-Be is a machine learning challenge on CodaLab Platform about Mortality Prediction

To-Be is a machine learning challenge on CodaLab Platform about Mortality Prediction. The challenge aims to adress the problems of medical imbalanced data classification.

Marwan Mashra 1 Jan 31, 2022
Little Ball of Fur - A graph sampling extension library for NetworKit and NetworkX (CIKM 2020)

Little Ball of Fur is a graph sampling extension library for Python. Please look at the Documentation, relevant Paper, Promo video and External Resour

Benedek Rozemberczki 619 Dec 14, 2022
CyLP is a Python interface to COIN-OR’s Linear and mixed-integer program solvers (CLP, CBC, and CGL)

CyLP CyLP is a Python interface to COIN-OR’s Linear and mixed-integer program solvers (CLP, CBC, and CGL). CyLP’s unique feature is that you can use i

COIN-OR Foundation 161 Dec 14, 2022
Databricks Certified Associate Spark Developer preparation toolkit to setup single node Standalone Spark Cluster along with material in the form of Jupyter Notebooks.

Databricks Certification Spark Databricks Certified Associate Spark Developer preparation toolkit to setup single node Standalone Spark Cluster along

19 Dec 13, 2022
A Lightweight Hyperparameter Optimization Tool 🚀

The mle-hyperopt package provides a simple and intuitive API for hyperparameter optimization of your Machine Learning Experiment (MLE) pipeline.

Robert Lange 137 Dec 02, 2022
moDel Agnostic Language for Exploration and eXplanation

moDel Agnostic Language for Exploration and eXplanation Overview Unverified black box model is the path to the failure. Opaqueness leads to distrust.

Model Oriented 1.2k Jan 04, 2023
nn-Meter is a novel and efficient system to accurately predict the inference latency of DNN models on diverse edge devices

A DNN inference latency prediction toolkit for accurately modeling and predicting the latency on diverse edge devices.

Microsoft 241 Dec 26, 2022
cleanlab is the data-centric ML ops package for machine learning with noisy labels.

cleanlab is the data-centric ML ops package for machine learning with noisy labels. cleanlab cleans labels and supports finding, quantifying, and lear

Cleanlab 51 Nov 28, 2022
A chain of stores, 10 different stores and 50 different requests a 3-month demand forecast for its product.

Demand-Forecasting Business Problem A chain of stores, 10 different stores and 50 different requests a 3-month demand forecast for its product.

Ayşe Nur Türkaslan 3 Mar 06, 2022