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)

Owner
null
machine learning model deployment project of Iris classification model in a minimal UI using flask web framework and deployed it in Azure cloud using Azure app service

This is a machine learning model deployment project of Iris classification model in a minimal UI using flask web framework and deployed it in Azure cloud using Azure app service. We initially made this project as a requirement for an internship at Indian Servers. We are now making it open to contribution.

Krishna Priyatham Potluri 73 Dec 1, 2022
A project based example of Data pipelines, ML workflow management, API endpoints and Monitoring.

MLOps template with examples for Data pipelines, ML workflow management, API development and Monitoring.

Utsav 33 Dec 3, 2022
We have a dataset of user performances. The project is to develop a machine learning model that will predict the salaries of baseball players.

Salary-Prediction-with-Machine-Learning 1. Business Problem Can a machine learning project be implemented to estimate the salaries of baseball players

Ayşe Nur Türkaslan 9 Oct 14, 2022
My project contrasts K-Nearest Neighbors and Random Forrest Regressors on Real World data

kNN-vs-RFR My project contrasts K-Nearest Neighbors and Random Forrest Regressors on Real World data In many areas, rental bikes have been launched to

null 1 Oct 28, 2021
Can a machine learning project be implemented to estimate the salaries of baseball players whose salary information and career statistics for 1986 are shared?

END TO END MACHINE LEARNING PROJECT ON HITTERS DATASET Can a machine learning project be implemented to estimate the salaries of baseball players whos

Pinar Oner 7 Dec 18, 2021
Exemplary lightweight and ready-to-deploy machine learning project

Exemplary lightweight and ready-to-deploy machine learning project

snapADDY GmbH 6 Dec 20, 2022
A machine learning project that predicts the price of used cars in the UK

Car Price Prediction Image Credit: AA Cars Project Overview Scraped 3000 used cars data from AA Cars website using Python and BeautifulSoup. Cleaned t

Victor Umunna 7 Oct 13, 2022
Katana project is a template for ASAP 🚀 ML application deployment

Katana project is a FastAPI template for ASAP ?? ML API deployment

Mohammad Shahebaz 100 Dec 26, 2022
Ml based project which uses regression technique to predict the price.

Price-Predictor Ml based project which uses regression technique to predict the price. I have used various regression models and finds the model with

Garvit Verma 1 Jul 9, 2022
This project impelemented for midterm of the Machine Learning #Zoomcamp #Alexey Grigorev

MLProject_01 This project impelemented for midterm of the Machine Learning #Zoomcamp #Alexey Grigorev Context Dataset English question data set file F

Hadi Nakhi 1 Dec 18, 2021
The project's goal is to show a real world application of image segmentation using k means algorithm

The project's goal is to show a real world application of image segmentation using k means algorithm

null 2 Jan 22, 2022
A demo project to elaborate how Machine Learn Models are deployed on production using Flask API

This is a salary prediction website developed with the help of machine learning, this makes prediction of salary on basis of few parameters like interview score, experience test score.

null 1 Feb 10, 2022
MLOps pipeline project using Amazon SageMaker Pipelines

This project shows steps to build an end to end MLOps architecture that covers data prep, model training, realtime and batch inference, build model registry, track lineage of artifacts and model drift detection. It utilizes SageMaker Pipelines that offers machine learning (ML) to orchestrate SageMaker jobs and author reproducible ML pipelines.

AWS Samples 3 Sep 16, 2022
Automatically build ARIMA, SARIMAX, VAR, FB Prophet and XGBoost Models on Time Series data sets with a Single Line of Code. Now updated with Dask to handle millions of rows.

Auto_TS: Auto_TimeSeries Automatically build multiple Time Series models using a Single Line of Code. Now updated with Dask. Auto_timeseries is a comp

AutoViz and Auto_ViML 519 Jan 3, 2023
Uber Open Source 1.6k Dec 31, 2022
Examples and code for the Practical Machine Learning workshop series

Practical Machine Learning Workshop Series Practical Machine Learning for Quantitative Finance Post conference workshop at the WBS Spring Conference D

CompatibL 21 Jun 25, 2022
100 Days of Machine and Deep Learning Code

?? Days of Machine Learning and Deep Learning Code MACHINE LEARNING TOPICS COVERED - FROM SCRATCH Linear Regression Logistic Regression K Means Cluste

Tanishq Gautam 66 Nov 2, 2022
Turns your machine learning code into microservices with web API, interactive GUI, and more.

Turns your machine learning code into microservices with web API, interactive GUI, and more.

Machine Learning Tooling 2.8k Jan 2, 2023
This is the code repository for Interpretable Machine Learning with Python, published by Packt.

Interpretable Machine Learning with Python, published by Packt

Packt 299 Jan 2, 2023