├── docs ├── _includes │ ├── js │ │ └── custom.js │ ├── head_custom.html │ ├── title.html │ ├── head.html │ ├── nav.html │ └── vendor │ │ └── anchor_headings.html ├── Rakefile ├── _sass │ ├── overrides.scss │ ├── support │ │ ├── mixins │ │ │ ├── mixins.scss │ │ │ ├── _buttons.scss │ │ │ ├── _layout.scss │ │ │ └── _typography.scss │ │ ├── support.scss │ │ ├── _functions.scss │ │ └── _variables.scss │ ├── utilities │ │ ├── utilities.scss │ │ ├── _lists.scss │ │ ├── _typography.scss │ │ ├── _layout.scss │ │ ├── _spacing.scss │ │ └── _colors.scss │ ├── color_schemes │ │ └── dark.scss │ ├── labels.scss │ ├── typography.scss │ ├── tables.scss │ ├── base.scss │ ├── vendor │ │ └── normalize.scss │ │ │ ├── package.json │ │ │ ├── README.md │ │ │ └── normalize.scss │ ├── navigation.scss │ ├── buttons.scss │ ├── content.scss │ ├── custom │ │ └── custom.scss │ ├── search.scss │ ├── layout.scss │ └── code.scss ├── _layouts │ ├── about.html │ ├── home.html │ ├── page.html │ ├── post.html │ ├── table_wrappers.html │ ├── vendor │ │ └── compress.html │ └── default.html ├── .DS_Store ├── favicon.ico ├── favicon2.ico ├── docs │ ├── .DS_Store │ ├── reports │ │ ├── .DS_Store │ │ ├── EDA_files │ │ │ ├── EDA_13_1.png │ │ │ ├── EDA_25_1.png │ │ │ ├── EDA_28_0.png │ │ │ ├── EDA_32_1.png │ │ │ ├── EDA_34_0.png │ │ │ └── EDA_37_0.png │ │ ├── Model_Eval_files │ │ │ └── Model_Eval_2_2.png │ │ ├── index.md │ │ ├── Model_Eval.md │ │ └── EDA.md │ ├── deploy.md │ ├── model_timeline.html │ └── pipeline_runs.html ├── _site │ ├── favicon.ico │ ├── favicon2.ico │ ├── assets │ │ ├── images │ │ │ ├── just-the-docs.png │ │ │ └── search.svg │ │ └── js │ │ │ └── dark-mode-preview.js │ ├── docs │ │ ├── reports │ │ │ ├── EDA_files │ │ │ │ ├── EDA_13_1.png │ │ │ │ ├── EDA_25_1.png │ │ │ │ ├── EDA_28_0.png │ │ │ │ ├── EDA_32_1.png │ │ │ │ ├── EDA_34_0.png │ │ │ │ └── EDA_37_0.png │ │ │ ├── Model_Eval_files │ │ │ │ └── Model_Eval_2_2.png │ │ │ ├── index.html │ │ │ └── Model_Eval │ │ │ │ └── index.html │ │ ├── deploy │ │ │ └── index.html │ │ ├── pipeline_runs │ │ │ └── index.html │ │ └── model_timeline │ │ │ └── index.html │ ├── CODE_OF_CONDUCT.md │ ├── 404.html │ ├── index.html │ └── summary.html ├── Gemfile ├── assets │ ├── images │ │ ├── just-the-docs.png │ │ └── search.svg │ ├── js │ │ ├── search-data.json │ │ └── dark-mode-preview.js │ └── css │ │ ├── dark-mode-preview.scss │ │ └── just-the-docs.scss ├── script │ └── build ├── 404.html ├── bin │ └── just-the-docs ├── package.json ├── just-the-docs.gemspec ├── LICENSE.txt ├── lib │ └── tasks │ │ └── search.rake ├── index.md ├── _config.yml ├── README.md ├── CODE_OF_CONDUCT.md ├── summary.md └── Gemfile.lock ├── metadata ├── timeline.json ├── pipeline_runs.json └── model_card.md ├── .DS_Store ├── notebooks ├── datasets │ └── housing │ │ └── housing.tgz ├── Model_Eval_files │ └── Model_Eval_2_2.png └── images │ └── end_to_end_project │ ├── california.png │ ├── bad_visualization_plot.png │ └── california_housing_prices_plot.png ├── gh-pages.sh ├── .jekyll-cache └── Jekyll │ └── Cache │ ├── Jekyll--Converters--Markdown │ ├── 99 │ │ └── 917202e6adb09a1f93cdabe5cd869a38511e3adde35d29a2b6a76e0c19a952 │ └── 7e │ │ └── 1be421c794107814fdc87538130ad38d31a5514c8176cddeaeb728660a4d0c │ └── Jekyll--Cache │ └── b7 │ └── 9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 ├── Pipfile ├── README.md └── requirements.txt /docs/_includes/js/custom.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metadata/timeline.json: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/_includes/head_custom.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metadata/pipeline_runs.json: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/Rakefile: -------------------------------------------------------------------------------- 1 | Dir.glob('lib/tasks/*.rake').each {|r| import r} 2 | -------------------------------------------------------------------------------- /docs/_sass/overrides.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Custom overrides from a user. 3 | // 4 | -------------------------------------------------------------------------------- /docs/_layouts/about.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /docs/_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /docs/_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /docs/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ content }} 6 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/.DS_Store -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/.DS_Store -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/favicon2.ico -------------------------------------------------------------------------------- /docs/docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/.DS_Store -------------------------------------------------------------------------------- /docs/_sass/support/mixins/mixins.scss: -------------------------------------------------------------------------------- 1 | @import "./layout"; 2 | @import "./buttons"; 3 | @import "./typography"; 4 | -------------------------------------------------------------------------------- /docs/_sass/support/support.scss: -------------------------------------------------------------------------------- 1 | @import "./variables"; 2 | @import "./functions"; 3 | @import "./mixins/mixins"; 4 | -------------------------------------------------------------------------------- /docs/_site/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/favicon.ico -------------------------------------------------------------------------------- /docs/_site/favicon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/favicon2.ico -------------------------------------------------------------------------------- /docs/docs/reports/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/.DS_Store -------------------------------------------------------------------------------- /docs/_includes/title.html: -------------------------------------------------------------------------------- 1 | {% if site.logo %} 2 | 3 | {% else %} 4 | {{ site.title }} 5 | {% endif %} 6 | -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem "github-pages", group: :jekyll_plugins 3 | gem 'jekyll-octicons' 4 | gem 'jekyll-relative-links' -------------------------------------------------------------------------------- /docs/assets/images/just-the-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/assets/images/just-the-docs.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_13_1.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_25_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_25_1.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_28_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_28_0.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_32_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_32_1.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_34_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_34_0.png -------------------------------------------------------------------------------- /docs/docs/reports/EDA_files/EDA_37_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/EDA_files/EDA_37_0.png -------------------------------------------------------------------------------- /notebooks/datasets/housing/housing.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/notebooks/datasets/housing/housing.tgz -------------------------------------------------------------------------------- /docs/_site/assets/images/just-the-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/assets/images/just-the-docs.png -------------------------------------------------------------------------------- /docs/_sass/utilities/utilities.scss: -------------------------------------------------------------------------------- 1 | @import "./colors"; 2 | @import "./layout"; 3 | @import "./typography"; 4 | @import "./lists"; 5 | @import "./spacing"; 6 | -------------------------------------------------------------------------------- /notebooks/Model_Eval_files/Model_Eval_2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/notebooks/Model_Eval_files/Model_Eval_2_2.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_13_1.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_25_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_25_1.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_28_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_28_0.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_32_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_32_1.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_34_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_34_0.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/EDA_files/EDA_37_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/EDA_files/EDA_37_0.png -------------------------------------------------------------------------------- /notebooks/images/end_to_end_project/california.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/notebooks/images/end_to_end_project/california.png -------------------------------------------------------------------------------- /docs/docs/reports/Model_Eval_files/Model_Eval_2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/docs/reports/Model_Eval_files/Model_Eval_2_2.png -------------------------------------------------------------------------------- /docs/_site/docs/reports/Model_Eval_files/Model_Eval_2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/docs/_site/docs/reports/Model_Eval_files/Model_Eval_2_2.png -------------------------------------------------------------------------------- /notebooks/images/end_to_end_project/bad_visualization_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/notebooks/images/end_to_end_project/bad_visualization_plot.png -------------------------------------------------------------------------------- /docs/script/build: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Packaging gem... \n" 4 | gem build just-the-docs.gemspec 5 | 6 | echo "Cleaning up... \n" 7 | git add *.gem 8 | git commit -m 'Bump just-the-docs gem package' 9 | -------------------------------------------------------------------------------- /notebooks/images/end_to_end_project/california_housing_prices_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/notebooks/images/end_to_end_project/california_housing_prices_plot.png -------------------------------------------------------------------------------- /docs/_sass/support/_functions.scss: -------------------------------------------------------------------------------- 1 | @function rem($size, $unit:"") { 2 | $remSize: $size / $root-font-size; 3 | 4 | @if ($unit == false) { 5 | @return #{$remSize}; 6 | } 7 | @else { 8 | @return #{$remSize}rem; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docs/_layouts/table_wrappers.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: vendor/compress 3 | --- 4 | 5 | {% assign content_ = content | replace: '', '' %} 7 | {{ content_ }} -------------------------------------------------------------------------------- /gh-pages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #https://gist.github.com/cobyism/4730490#gistcomment-1394421 4 | git add -f dashboard/_site/ && git commit -m "Initial dist subtree commit" 5 | git subtree split --prefix dashboard/_site -b gh-pages 6 | git push -f origin gh-pages:gh-pages 7 | git branch -D gh-pages 8 | -------------------------------------------------------------------------------- /.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/7e/1be421c794107814fdc87538130ad38d31a5514c8176cddeaeb728660a4d0c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machine-learning-apps/mlops-dashboard/HEAD/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/7e/1be421c794107814fdc87538130ad38d31a5514c8176cddeaeb728660a4d0c -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [dev-packages] 7 | 8 | [packages] 9 | sklearn = "*" 10 | h2o = "*" 11 | pandas = "*" 12 | ipykernel = "*" 13 | matplotlib = "*" 14 | turicreate = "*" 15 | pandas-profiling = {extras = ["html", "notebook"],version = "*"} 16 | dora = "*" 17 | 18 | [requires] 19 | python_version = "3.6" 20 | -------------------------------------------------------------------------------- /docs/_sass/utilities/_lists.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for lists 3 | // 4 | 5 | // stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type 6 | 7 | .list-style-none { 8 | padding: 0 !important; 9 | margin: 0 !important; 10 | list-style: none !important; 11 | 12 | li { 13 | &::before { 14 | display: none !important; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Page not found 4 | permalink: /404 5 | nav_exclude: true 6 | search_exclude: true 7 | --- 8 | 9 |

Page not found

10 | 11 |

The page you requested could not be found. Try using the navigation {% if site.search_enabled %}or search {% endif %}to find what you're looking for or go to this site's home page.

12 | -------------------------------------------------------------------------------- /docs/docs/reports/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Reports 4 | has_children: true 5 | nav_order: 3 6 | --- 7 | 8 |

Mockup / Illustrative

9 | 10 | **Reports** are automatically rendered from Jupyter Notebooks located in the `/notebooks` directory of your repository. You can refresh these reports by commiting new or updated notebooks to the `master` branch of your repository. -------------------------------------------------------------------------------- /docs/assets/images/search.svg: -------------------------------------------------------------------------------- 1 | Search 2 | -------------------------------------------------------------------------------- /docs/_site/assets/images/search.svg: -------------------------------------------------------------------------------- 1 | Search 2 | -------------------------------------------------------------------------------- /docs/_sass/color_schemes/dark.scss: -------------------------------------------------------------------------------- 1 | 2 | $body-background-color: $grey-dk-300; 3 | $sidebar-color: $grey-dk-300; 4 | $border-color: $grey-dk-200; 5 | 6 | $body-text-color: $grey-lt-300; 7 | $body-heading-color: $grey-lt-000; 8 | $nav-child-link-color: $grey-dk-000; 9 | $search-result-preview-color: $grey-dk-000; 10 | 11 | $link-color: $blue-000; 12 | $btn-primary-color: $blue-200; 13 | $base-button-color: $grey-dk-250; 14 | 15 | $code-background-color: $grey-dk-250; 16 | $search-background-color: $grey-dk-250; 17 | $table-background-color: $grey-dk-250; 18 | -------------------------------------------------------------------------------- /docs/bin/just-the-docs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | gem_dir = File.expand_path("..",File.dirname(__FILE__)) 4 | $LOAD_PATH.unshift gem_dir # Look in gem directory for resources first. 5 | exec_type = ARGV[0] 6 | 7 | if exec_type == 'rake' then 8 | require 'rake' 9 | require 'pp' 10 | pwd=Dir.pwd 11 | Dir.chdir(gem_dir) # We'll load rakefile from the gem's dir. 12 | Rake.application.init 13 | Rake.application.load_rakefile 14 | Dir.chdir(pwd) # Revert to original pwd for any path args passed to task. 15 | Rake.application.invoke_task(ARGV[1]) 16 | end 17 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "just-the-docs", 3 | "version": "0.2.7", 4 | "description": "A modern Jekyll theme for documentation", 5 | "repository": "pmarsceill/just-the-docs", 6 | "license": "MIT", 7 | "bugs": "https://github.com/pmarsceill/just-the-docs/issues", 8 | "devDependencies": { 9 | "stylelint": "^10.0.1", 10 | "stylelint-config-primer": "^8.0.0", 11 | "stylelint-selector-no-utility": "^4.0.0" 12 | }, 13 | "dependencies": { 14 | "@primer/css": "^12.7.0" 15 | }, 16 | "scripts": { 17 | "test": "stylelint '**/*.scss'" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/_sass/labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels (not the form kind) 3 | // 4 | 5 | .label, 6 | .label-blue { 7 | display: inline-block; 8 | padding-top: 0.16em; 9 | padding-right: 0.42em; 10 | padding-bottom: 0.16em; 11 | padding-left: 0.42em; 12 | margin-right: $sp-1; 13 | margin-left: $sp-1; 14 | color: $white; 15 | text-transform: uppercase; 16 | vertical-align: middle; 17 | background-color: $blue-100; 18 | @include fs-2; 19 | } 20 | 21 | .label-green { 22 | background-color: $green-200; 23 | } 24 | 25 | .label-purple { 26 | background-color: $purple-100; 27 | } 28 | 29 | .label-red { 30 | background-color: $red-200; 31 | } 32 | 33 | .label-yellow { 34 | color: $grey-dk-200; 35 | background-color: $yellow-200; 36 | } 37 | -------------------------------------------------------------------------------- /docs/docs/deploy.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Deploy 4 | nav_order: 5 5 | --- 6 | 7 |

Mockup / Illustrative

8 | 9 | 10 | 13 |
14 | 15 |

Deploy Model On Your Infrastructure

16 |

Fork this project to run the model pipeline on your compute.

17 | 18 |

19 |
-------------------------------------------------------------------------------- /docs/_sass/support/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Colored button 2 | 3 | @mixin btn-color($fg, $bg) { 4 | color: $fg; 5 | background-color: darken($bg, 2%); 6 | background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); 7 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); 8 | 9 | &:hover, 10 | &.zeroclipboard-is-hover { 11 | color: $fg; 12 | background-color: darken($bg, 4%); 13 | background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); 14 | } 15 | 16 | &:active, 17 | &.selected, 18 | &.zeroclipboard-is-active { 19 | background-color: darken($bg, 5%); 20 | background-image: none; 21 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); 22 | } 23 | 24 | &.selected:hover { 25 | background-color: darken($bg, 10%); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docs/assets/js/search-data.json: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | { 4 | {% assign comma = false %} 5 | {% for page in site.html_pages %}{% if page.search_exclude != true %}{% if comma == true%},{% endif %}"{{ forloop.index0 }}": { 6 | "title": "{{ page.title | replace: '&', '&' }}", 7 | "content": "{{ page.content | markdownify | replace: ' 3.8.5" 17 | spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.0" 18 | spec.add_runtime_dependency "rake", "~> 12.3.1" 19 | 20 | spec.add_development_dependency "bundler", "~> 2.0.1" 21 | end 22 | -------------------------------------------------------------------------------- /docs/_sass/typography.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Typography 3 | // 4 | // stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type 5 | 6 | h1, 7 | .text-alpha { 8 | @include fs-8; 9 | font-weight: 300; 10 | } 11 | 12 | h2, 13 | .text-beta { 14 | @include fs-6; 15 | } 16 | 17 | h3, 18 | .text-gamma { 19 | @include fs-5; 20 | } 21 | 22 | h4, 23 | .text-delta { 24 | @include fs-2; 25 | font-weight: 300; 26 | text-transform: uppercase; 27 | letter-spacing: 0.1em; 28 | } 29 | 30 | h5, 31 | .text-epsilon { 32 | @include fs-3; 33 | color: $grey-dk-200; 34 | } 35 | 36 | h6, 37 | .text-zeta { 38 | @include fs-2; 39 | color: $grey-dk-200; 40 | } 41 | 42 | li { 43 | .highlight { 44 | margin-top: $sp-2; 45 | } 46 | } 47 | 48 | .text-small { 49 | @include fs-2; 50 | } 51 | 52 | .text-mono { 53 | font-family: $mono-font-family !important; 54 | } 55 | 56 | .text-center { 57 | text-align: center !important; 58 | } 59 | -------------------------------------------------------------------------------- /docs/assets/css/dark-mode-preview.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # this ensures Jekyll reads the file to be transformed into CSS later 3 | # only Main files contain this front matter, not partials. 4 | --- 5 | 6 | {% if site.logo %} 7 | $logo: "{{ site.logo | absolute_url }}"; 8 | {% endif %} 9 | 10 | // 11 | // Import external dependencies 12 | // 13 | 14 | @import "./vendor/normalize.scss/normalize.scss"; 15 | 16 | // 17 | // Import Just the Docs scss 18 | // 19 | 20 | // Support 21 | @import "./support/support"; 22 | 23 | // 24 | // Import custom color scheme scss 25 | // 26 | 27 | @import "./color_schemes/dark.scss"; 28 | 29 | // Modules 30 | @import "./base"; 31 | @import "./layout"; 32 | @import "./content"; 33 | @import "./navigation"; 34 | @import "./typography"; 35 | @import "./labels"; 36 | @import "./buttons"; 37 | @import "./search"; 38 | @import "./tables"; 39 | @import "./code"; 40 | @import "./utilities/utilities"; 41 | 42 | // 43 | // Import custom overrides 44 | // 45 | @import "./custom/custom"; 46 | -------------------------------------------------------------------------------- /docs/assets/js/dark-mode-preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function(){ 2 | 3 | const toggleDarkMode = document.querySelector('.js-toggle-dark-mode') 4 | const cssFile = document.querySelector('[rel="stylesheet"]') 5 | const originalCssRef = cssFile.getAttribute('href') 6 | const darkModeCssRef = originalCssRef.replace('just-the-docs.css', 'dark-mode-preview.css') 7 | const buttonCopy = ['Return to the light side', 'Preview dark color scheme'] 8 | const updateButtonText = function(toggleDarkMode) { 9 | toggleDarkMode.textContent === buttonCopy[0] ? 10 | toggleDarkMode.textContent = buttonCopy[1] : 11 | toggleDarkMode.textContent = buttonCopy[0] 12 | } 13 | 14 | jtd.addEvent(toggleDarkMode, 'click', function(){ 15 | if (cssFile.getAttribute('href') === originalCssRef) { 16 | cssFile.setAttribute('href', darkModeCssRef) 17 | updateButtonText(toggleDarkMode) 18 | } else { 19 | cssFile.setAttribute('href', originalCssRef) 20 | updateButtonText(toggleDarkMode) 21 | } 22 | }) 23 | }) 24 | -------------------------------------------------------------------------------- /docs/_site/assets/js/dark-mode-preview.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function(){ 2 | 3 | const toggleDarkMode = document.querySelector('.js-toggle-dark-mode') 4 | const cssFile = document.querySelector('[rel="stylesheet"]') 5 | const originalCssRef = cssFile.getAttribute('href') 6 | const darkModeCssRef = originalCssRef.replace('just-the-docs.css', 'dark-mode-preview.css') 7 | const buttonCopy = ['Return to the light side', 'Preview dark color scheme'] 8 | const updateButtonText = function(toggleDarkMode) { 9 | toggleDarkMode.textContent === buttonCopy[0] ? 10 | toggleDarkMode.textContent = buttonCopy[1] : 11 | toggleDarkMode.textContent = buttonCopy[0] 12 | } 13 | 14 | jtd.addEvent(toggleDarkMode, 'click', function(){ 15 | if (cssFile.getAttribute('href') === originalCssRef) { 16 | cssFile.setAttribute('href', darkModeCssRef) 17 | updateButtonText(toggleDarkMode) 18 | } else { 19 | cssFile.setAttribute('href', originalCssRef) 20 | updateButtonText(toggleDarkMode) 21 | } 22 | }) 23 | }) 24 | -------------------------------------------------------------------------------- /docs/assets/css/just-the-docs.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # this ensures Jekyll reads the file to be transformed into CSS later 3 | # only Main files contain this front matter, not partials. 4 | --- 5 | 6 | {% if site.logo %} 7 | $logo: "{{ site.logo | absolute_url }}"; 8 | {% endif %} 9 | 10 | // 11 | // Import external dependencies 12 | // 13 | 14 | @import "./vendor/normalize.scss/normalize.scss"; 15 | 16 | // 17 | // Import Just the Docs scss 18 | // 19 | 20 | // Support 21 | @import "./support/support"; 22 | 23 | // 24 | // Import custom overrides 25 | // 26 | 27 | @import "./custom/custom"; 28 | 29 | // 30 | // Import custom color scheme scss 31 | // 32 | 33 | {% if site.color_scheme == "dark" %} 34 | @import "./color_schemes/dark.scss"; 35 | {% endif %} 36 | 37 | // Modules 38 | @import "./base"; 39 | @import "./layout"; 40 | @import "./content"; 41 | @import "./navigation"; 42 | @import "./typography"; 43 | @import "./labels"; 44 | @import "./buttons"; 45 | @import "./search"; 46 | @import "./tables"; 47 | @import "./code"; 48 | @import "./utilities/utilities"; 49 | @import "./overrides"; 50 | -------------------------------------------------------------------------------- /docs/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Patrick Marsceill 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/_sass/tables.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Tables 3 | // 4 | // stylelint-disable max-nesting-depth, selector-no-type, selector-max-type 5 | 6 | .table-wrapper { 7 | display: block; 8 | width: 100%; 9 | max-width: 100%; 10 | margin-bottom: $sp-5; 11 | overflow-x: auto; 12 | border-radius: $border-radius; 13 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 14 | } 15 | 16 | table { 17 | display: table; 18 | min-width: 100%; 19 | border-collapse: separate; 20 | } 21 | 22 | th, 23 | td { 24 | @include fs-3; 25 | min-width: 120px; 26 | padding-top: $sp-2; 27 | padding-right: $sp-3; 28 | padding-bottom: $sp-2; 29 | padding-left: $sp-3; 30 | background-color: $table-background-color; 31 | border-bottom: $border rgba($border-color, 0.5); 32 | border-left: $border $border-color; 33 | 34 | &:first-of-type { 35 | border-left: 0; 36 | } 37 | } 38 | 39 | tbody { 40 | tr { 41 | &:last-of-type { 42 | th, 43 | td { 44 | border-bottom: 0; 45 | } 46 | 47 | td { 48 | padding-bottom: $sp-3; 49 | } 50 | } 51 | } 52 | } 53 | 54 | thead { 55 | th { 56 | border-bottom: $border $border-color; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Purpose 2 | 3 | Give developers an incentive to provide a [standardized ML specification](https://docs.google.com/document/d/1dt3FfZjXDaOHQfZIDFkLLKLlJasxluaQlw5LkXp5ZtI/edit) for machine learning projects, to enable the following: 4 | 5 | - An entrypoint for users to run ML workloads on the compute of their choice ( or on GitHub directly? ) 6 | - Provide mechanisms to make ML workflows extensible and facilitate greater collaboration / experimentation. 7 | - Transperency by organizing information into a common format 8 | - Reproduceability 9 | 10 | One way of providing this incentive is to render the information associated with the standardized specification into a dashboard which facilitates the consumption of this information. Furthermore, this dashboard should facilitate interacting with the ML workflow, including running and deploying models. 11 | 12 | ## The Prototype 13 | 14 | This initial prototype uses [Jekyll](https://jekyllrb.com/docs/) and GitHub Actions to render assets (metadata in the form of YAML & JSON, notebooks, etc) into a MLOps Dashboard. The metadata is located in a repo in a pre-determined directory structure. When metadata is created or changed in a repo, a GitHub Action refreshes the GitHub page. 15 | -------------------------------------------------------------------------------- /docs/lib/tasks/search.rake: -------------------------------------------------------------------------------- 1 | namespace :search do 2 | desc 'Generate the files needed for search functionality' 3 | task :init do 4 | puts 'Creating search data json file...' 5 | mkdir_p 'assets/js' 6 | touch 'assets/js/search-data.json' 7 | content = %Q[{{ page.content | markdownify | replace: ' 2 | 3 | 4 | 5 | {% if site.plugins.jekyll-seo == nil %} 6 | {{ page.title }} - {{ site.title }} 7 | 8 | {% if page.description %} 9 | 10 | {% endif %} 11 | {% endif %} 12 | 13 | 14 | 15 | 16 | 17 | {% if site.ga_tracking != nil %} 18 | 19 | 26 | 27 | {% endif %} 28 | 29 | {% if site.search_enabled != false %} 30 | 31 | {% endif %} 32 | 33 | 34 | 35 | 36 | {% include head_custom.html %} 37 | 38 | -------------------------------------------------------------------------------- /docs/_sass/utilities/_typography.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for typography 3 | // 4 | 5 | // stylelint-disable primer/selector-no-utility, primer/no-override 6 | 7 | .fs-1 { 8 | @include fs-1; 9 | } 10 | 11 | .fs-2 { 12 | @include fs-2; 13 | } 14 | 15 | .fs-3 { 16 | @include fs-3; 17 | } 18 | 19 | .fs-4 { 20 | @include fs-4; 21 | } 22 | 23 | .fs-5 { 24 | @include fs-5; 25 | } 26 | 27 | .fs-6 { 28 | @include fs-6; 29 | } 30 | 31 | .fs-7 { 32 | @include fs-7; 33 | } 34 | 35 | .fs-8 { 36 | @include fs-8; 37 | } 38 | 39 | .fs-9 { 40 | @include fs-9; 41 | } 42 | 43 | .fs-10 { 44 | @include fs-10; 45 | } 46 | 47 | .fw-300 { 48 | font-weight: 300 !important; 49 | } 50 | 51 | .fw-400 { 52 | font-weight: 400 !important; 53 | } 54 | 55 | .fw-500 { 56 | font-weight: 500 !important; 57 | } 58 | 59 | .fw-700 { 60 | font-weight: 700 !important; 61 | } 62 | 63 | .lh-0 { 64 | line-height: 0 !important; 65 | } 66 | 67 | .lh-default { 68 | line-height: $body-line-height; 69 | } 70 | 71 | .lh-tight { 72 | line-height: $body-heading-line-height; 73 | } 74 | 75 | .ls-5 { 76 | letter-spacing: 0.05em !important; 77 | } 78 | 79 | .ls-10 { 80 | letter-spacing: 0.1em !important; 81 | } 82 | 83 | .ls-0 { 84 | letter-spacing: 0 !important; 85 | } 86 | 87 | .text-uppercase { 88 | text-transform: uppercase !important; 89 | } 90 | 91 | // stylelint-enable primer/selector-no-utility 92 | -------------------------------------------------------------------------------- /docs/_sass/support/mixins/_typography.scss: -------------------------------------------------------------------------------- 1 | // Font size 2 | 3 | @mixin fs-1 { 4 | font-size: 9px !important; 5 | 6 | @include mq(sm) { 7 | font-size: 10px !important; 8 | } 9 | } 10 | 11 | @mixin fs-2 { 12 | font-size: 11px !important; 13 | 14 | @include mq(sm) { 15 | font-size: 12px !important; 16 | } 17 | } 18 | 19 | @mixin fs-3 { 20 | font-size: 12px !important; 21 | 22 | @include mq(sm) { 23 | font-size: 14px !important; 24 | } 25 | } 26 | 27 | @mixin fs-4 { 28 | font-size: 14px !important; 29 | 30 | @include mq(sm) { 31 | font-size: 16px !important; 32 | } 33 | } 34 | 35 | @mixin fs-5 { 36 | font-size: 16px !important; 37 | 38 | @include mq(sm) { 39 | font-size: 18px !important; 40 | } 41 | } 42 | 43 | @mixin fs-6 { 44 | font-size: 18px !important; 45 | 46 | @include mq(sm) { 47 | font-size: 24px !important; 48 | } 49 | } 50 | 51 | @mixin fs-7 { 52 | font-size: 24px !important; 53 | 54 | @include mq(sm) { 55 | font-size: 32px !important; 56 | } 57 | } 58 | 59 | @mixin fs-8 { 60 | font-size: 32px !important; 61 | 62 | @include mq(sm) { 63 | font-size: 36px !important; 64 | } 65 | } 66 | 67 | @mixin fs-9 { 68 | font-size: 36px !important; 69 | 70 | @include mq(sm) { 71 | font-size: 42px !important; 72 | } 73 | } 74 | 75 | @mixin fs-10 { 76 | font-size: 42px !important; 77 | 78 | @include mq(sm) { 79 | font-size: 48px !important; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /docs/_sass/utilities/_layout.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable primer/selector-no-utility, primer/no-override 2 | // 3 | // Utility classes for layout 4 | // 5 | 6 | // Display 7 | 8 | .d-block { display: block !important; } 9 | .d-flex { display: flex !important; } 10 | .d-inline { display: inline !important; } 11 | .d-inline-block { display: inline-block !important; } 12 | .d-none { display: none !important; } 13 | 14 | @each $media-query in map-keys($media-queries) { 15 | @for $i from 1 through length($spacers) { 16 | @include mq($media-query) { 17 | $size: #{map-get($spacers, sp-#{$i - 1})}; 18 | $scale: #{$i - 1}; 19 | 20 | // .d-sm-block, .d-md-none, .d-lg-inline 21 | .d-#{$media-query}-block { display: block !important; } 22 | .d-#{$media-query}-flex { display: flex !important; } 23 | .d-#{$media-query}-inline { display: inline !important; } 24 | .d-#{$media-query}-inline-block { display: inline-block !important; } 25 | .d-#{$media-query}-none { display: none !important; } 26 | 27 | } 28 | } 29 | } 30 | 31 | // Vertical alignment 32 | 33 | .v-align-baseline { vertical-align: baseline !important; } 34 | .v-align-bottom { vertical-align: bottom !important; } 35 | .v-align-middle { vertical-align: middle !important; } 36 | .v-align-text-bottom { vertical-align: text-bottom !important; } 37 | .v-align-text-top { vertical-align: text-top !important; } 38 | .v-align-top { vertical-align: top !important; } 39 | -------------------------------------------------------------------------------- /.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910: -------------------------------------------------------------------------------- 1 | I"%{"source"=>"/Users/hamelsmu/github/personal/mlops-dashboard", "destination"=>"/Users/hamelsmu/github/personal/mlops-dashboard/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>[".sass-cache", ".jekyll-cache", "gemfiles", "Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>[], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>nil, "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/page:num", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>"1..6", "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "livereload_port"=>35729, "serving"=>true, "watch"=>true, "url"=>"http://localhost:4000"}:ET -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | title: Home 4 | permalink: / 5 | nav_order: 1 6 | --- 7 | 8 |

Mockup / Illustrative

9 | 10 |
11 | 13 |

A MLOps Dashboard Automatically Created With GitHub Pages

14 |

This dashboard renders information in your repo relevant to machine learning projects automatically by using GitHub Actions and GitHub Pages.

15 | Learn more 16 |
17 | 18 | ### Sections: 19 | 20 | - **[Summary]({{ "summary" | relative_url }})**: uses the `/metadata/summary.md` file located your repo. This is meant to be a high level summary of your model. A recommended format for this is discussed in [Model Cards for Model Reporting](https://arxiv.org/pdf/1810.03993.pdf). 21 | 22 | - **[Reports]({{ "docs/reports" | relative_url }})**: these pages automatically render Jupyter notebooks located in the `/notebooks` directory of your repo. 23 | 24 | - **[Model Timeline]({{ "docs/model_timeline" | relative_url }})**: this is a timeline view of relevant milestones for your ML project. This page is generated by `/metadata/timeline.json` in your repo, which is system generated [^1]. 25 | 26 | - **[Completed Pipeline Runs]({{ "docs/pipeline_runs" | relative_url }})**: This shows the most recent pipeline runs. This page is generated by `/metadata/pipeline_runs.json` in our repo, which is system generated [^1]. 27 | 28 | - **[Deploy]({{ "docs/deploy" | relative_url }})**: A click-to-deploy mechanism for others to run your training pipeline and serve your model on the infrastructure of your choice. This is under construction. 29 | 30 | --- 31 | 32 | [^1]: *This system has not been designed yet.* -------------------------------------------------------------------------------- /docs/docs/reports/Model_Eval.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Model Eval 4 | parent: Reports 5 | --- 6 | 7 |

Mockup / Illustrative

8 | 9 | 10 | 11 | 12 | 13 | # Evaluate Model 14 | 15 | Compute a confusion matrix 16 | 17 | Normalized confusion matrix 18 | [[0.88173203 0.09765211 0.02061586] 19 | [0.1303451 0.83997974 0.02967516] 20 | [0.27873486 0.23896011 0.48230502]] 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ![png](Model_Eval_files/Model_Eval_2_2.png) 32 | 33 | 34 | # Make Predictions 35 | 36 | Using TensorFlow backend. 37 | 38 | 39 | 40 | ```python 41 | issue_labeler.get_probabilities(body='Can someone please help me?', 42 | title='random stuff') 43 | ``` 44 | 45 | 46 | 47 | 48 | {'bug': 0.12618249654769897, 49 | 'feature': 0.1929263472557068, 50 | 'question': 0.6808911561965942} 51 | 52 | 53 | 54 | 55 | ```python 56 | issue_labeler.get_probabilities(body='It would be great to add a new button', 57 | title='requesting a button') 58 | ``` 59 | 60 | 61 | 62 | 63 | {'bug': 0.019261939451098442, 64 | 'feature': 0.9305700659751892, 65 | 'question': 0.05016808584332466} 66 | 67 | 68 | 69 | 70 | ```python 71 | issue_labeler.get_probabilities(body='It does` not work, I get bad errors', 72 | title='nothing works') 73 | ``` 74 | 75 | 76 | 77 | 78 | {'bug': 0.9065071940422058, 79 | 'feature': 0.03202613815665245, 80 | 'question': 0.06146678701043129} 81 | 82 | 83 | -------------------------------------------------------------------------------- /docs/_sass/base.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base element style overrides 3 | // 4 | // stylelint-disable selector-no-type, selector-max-type 5 | 6 | * { 7 | box-sizing: border-box; 8 | } 9 | 10 | ::selection { 11 | color: $white; 12 | background: $link-color; 13 | } 14 | 15 | html { 16 | @include fs-4; 17 | } 18 | 19 | body { 20 | font-family: $body-font-family; 21 | font-size: inherit; 22 | line-height: $body-line-height; 23 | color: $body-text-color; 24 | background-color: $body-background-color; 25 | } 26 | 27 | p, 28 | h1, 29 | h2, 30 | h3, 31 | h4, 32 | h5, 33 | h6, 34 | ol, 35 | ul, 36 | pre, 37 | address, 38 | blockquote, 39 | dl, 40 | div, 41 | fieldset, 42 | form, 43 | hr, 44 | noscript, 45 | table { 46 | margin-top: 0; 47 | } 48 | 49 | h1, 50 | h2, 51 | h3, 52 | h4, 53 | h5, 54 | h6 { 55 | margin-top: 1.2em; 56 | margin-bottom: 0.8em; 57 | font-weight: 500; 58 | line-height: $body-heading-line-height; 59 | color: $body-heading-color; 60 | } 61 | 62 | p { 63 | margin-bottom: 1em; 64 | } 65 | 66 | a { 67 | color: $link-color; 68 | text-decoration: none; 69 | } 70 | 71 | a:not([class]) { 72 | text-decoration: none; 73 | background-image: linear-gradient($border-color 0%, $border-color 100%); 74 | background-repeat: repeat-x; 75 | background-position: 0 100%; 76 | background-size: 1px 1px; 77 | 78 | &:hover { 79 | background-image: linear-gradient(rgba($link-color, 0.45) 0%, rgba($link-color, 0.45) 100%); 80 | background-size: 1px 1px; 81 | 82 | } 83 | } 84 | 85 | code { 86 | font-family: $mono-font-family; 87 | font-size: 12px; 88 | line-height: $body-line-height; 89 | } 90 | 91 | figure, 92 | pre { 93 | margin: 0; 94 | } 95 | 96 | li { 97 | margin: 0.25em 0; 98 | } 99 | 100 | img { 101 | max-width: 100%; 102 | height: auto; 103 | } 104 | 105 | hr { 106 | height: 1px; 107 | padding: 0; 108 | margin: $sp-6 0; 109 | background-color: $border-color; 110 | border: 0; 111 | } 112 | -------------------------------------------------------------------------------- /docs/docs/model_timeline.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Model Timeline 4 | nav_order: 4 5 | --- 6 | 7 |

Mockup / Illustrative

8 | 9 | 10 | 13 | 14 |

Jan 2020

15 |
16 |
17 | {% octicon flame %} 18 |
19 |
20 | 21 | increased accuracy by 2% 22 |
23 |
24 |

25 | {% octicon git-commit %} 601423b 26 |

27 |
28 | 29 | 30 |
31 | 32 |
33 | {% octicon rocket %} 34 |
35 | 36 |
37 | Deployed a model to production 38 |
39 | 40 |

41 | {% octicon git-branch %} demo-mlops-2 42 | 43 |

44 | (#34) 45 | 46 |
47 | 48 | 49 |

2 days ago

50 |
51 | 52 |
53 | {% octicon checklist %} 54 |
55 | 56 |
57 | Ran 25 experiments 58 |
59 | 60 | WandB.com {% octicon link-external %} 61 | 62 |
63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/_sass/vendor/normalize.scss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_args": [ 3 | [ 4 | "normalize.scss", 5 | "/Users/pmarsceill/_projects/just-the-docs" 6 | ] 7 | ], 8 | "_from": "normalize.scss@*", 9 | "_id": "normalize.scss@0.1.0", 10 | "_inCache": true, 11 | "_installable": true, 12 | "_location": "/normalize.scss", 13 | "_nodeVersion": "0.10.32", 14 | "_npmUser": { 15 | "email": "alexguerrero1092@gmail.com", 16 | "name": "alexguerrero" 17 | }, 18 | "_npmVersion": "2.0.2", 19 | "_phantomChildren": {}, 20 | "_requested": { 21 | "name": "normalize.scss", 22 | "raw": "normalize.scss", 23 | "rawSpec": "", 24 | "scope": null, 25 | "spec": "*", 26 | "type": "range" 27 | }, 28 | "_requiredBy": [ 29 | "#DEV:/" 30 | ], 31 | "_resolved": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz", 32 | "_shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab", 33 | "_shrinkwrap": null, 34 | "_spec": "normalize.scss", 35 | "_where": "/Users/pmarsceill/_projects/just-the-docs", 36 | "author": "", 37 | "bugs": { 38 | "url": "https://github.com/guerrero/normalize.scss/issues" 39 | }, 40 | "dependencies": {}, 41 | "description": "Normalize.scss as a node packaged module", 42 | "devDependencies": {}, 43 | "directories": {}, 44 | "dist": { 45 | "shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab", 46 | "tarball": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz" 47 | }, 48 | "files": [ 49 | "normalize.scss" 50 | ], 51 | "gitHead": "d67d517e28615a873066438af1d4845c157c9baf", 52 | "homepage": "https://github.com/guerrero/normalize.scss", 53 | "license": "MIT", 54 | "maintainers": [ 55 | { 56 | "name": "alexguerrero", 57 | "email": "alexguerrero1092@gmail.com" 58 | } 59 | ], 60 | "name": "normalize.scss", 61 | "optionalDependencies": {}, 62 | "readme": "ERROR: No README data found!", 63 | "repository": { 64 | "type": "git", 65 | "url": "git://github.com/guerrero/normalize.scss.git" 66 | }, 67 | "scripts": {}, 68 | "style": "normalize.scss", 69 | "version": "0.1.0" 70 | } 71 | -------------------------------------------------------------------------------- /docs/_sass/navigation.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Main nav, breadcrumb, etc... 3 | // 4 | .navigation-list { 5 | padding: 0; 6 | margin-top: 0; 7 | margin-bottom: 0; 8 | list-style: none; 9 | } 10 | 11 | .navigation-list-child-list { 12 | padding-left: $sp-3; 13 | list-style: none; 14 | 15 | .navigation-list-link { 16 | color: $nav-child-link-color; 17 | } 18 | 19 | .navigation-list-item { 20 | position: relative; 21 | 22 | &::before { 23 | position: absolute; 24 | margin-top: 0.3em; 25 | margin-left: -0.8em; 26 | color: rgba($body-text-color, 0.3); 27 | content: "- "; 28 | } 29 | 30 | &.active { 31 | &::before { 32 | color: $body-text-color; 33 | } 34 | } 35 | } 36 | } 37 | 38 | .navigation-list-item { 39 | @include fs-4; 40 | margin: 0; 41 | 42 | @include mq(md) { 43 | @include fs-3; 44 | } 45 | 46 | .navigation-list-child-list { 47 | display: none; 48 | } 49 | 50 | &.active { 51 | .navigation-list-child-list { 52 | display: block; 53 | } 54 | } 55 | } 56 | 57 | .navigation-list-link { 58 | display: block; 59 | padding-top: $sp-1; 60 | padding-bottom: $sp-1; 61 | 62 | &.active { 63 | font-weight: 600; 64 | color: $body-heading-color; 65 | text-decoration: none; 66 | } 67 | } 68 | 69 | // Small screen nav 70 | 71 | .main-nav { 72 | display: none; 73 | 74 | &.nav-open { 75 | display: block; 76 | } 77 | @include mq(md) { 78 | display: block; 79 | } 80 | } 81 | 82 | .aux-nav { 83 | align-self: center; 84 | } 85 | 86 | // Breadcrumb nav 87 | .breadcrumb-nav { 88 | @include mq(md) { 89 | margin-top: -$sp-4; 90 | } 91 | } 92 | 93 | .breadcrumb-nav-list { 94 | padding-left: 0; 95 | margin-bottom: $sp-3; 96 | list-style: none; 97 | } 98 | 99 | .breadcrumb-nav-list-item { 100 | display: table-cell; 101 | @include fs-2; 102 | 103 | &::before { 104 | display: none; 105 | } 106 | 107 | &::after { 108 | display: inline-block; 109 | margin-right: $sp-2; 110 | margin-left: $sp-2; 111 | color: $grey-dk-000; 112 | content: "/"; 113 | } 114 | 115 | &:last-child { 116 | &::after { 117 | content: ""; 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole site, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing these this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'jekyll serve'. If you change this file, please restart the server process. 10 | 11 | # Site settings 12 | # These are used to personalize your new site. If you look in the HTML files, 13 | # you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on. 14 | # You can create any custom variable you would like, and they will be accessible 15 | # in the templates via {{ site.myvariable }}. 16 | remote_theme: pmarsceill/just-the-docs 17 | title: MLOps Dashboard 18 | description: A Dashboard for MLOps, generated automatically by GitHub Pages. 19 | baseurl: "/" # the subpath of your site, e.g. /blog 20 | url: "https:///machine-learning-apps.github.io" # the base hostname & protocol for your site, e.g. http://example.com 21 | 22 | permalink: pretty 23 | exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"] 24 | 25 | # Set a path/url to a logo that will be displayed instead of the title 26 | #logo: "/assets/images/just-the-docs.png" 27 | 28 | # Enable or disable the site search 29 | search_enabled: true 30 | 31 | # Set the search token separator for hyphenated-word search: 32 | search_tokenizer_separator: /[\s/]+/ 33 | 34 | # Enable or disable heading anchors 35 | heading_anchors: true 36 | 37 | # Aux links for the upper right navigation 38 | aux_links: 39 | "Edit On GitHub": 40 | - "//github.com/machine-learning-apps/mlops-dashboard" 41 | 42 | # Footer content appears at the bottom of every page's main content 43 | footer_content: "" 44 | 45 | # Color scheme currently only supports "dark" or nil (default) 46 | color_scheme: nil 47 | 48 | 49 | compress_html: 50 | clippings: all 51 | comments: all 52 | endings: all 53 | startings: [] 54 | blanklines: false 55 | profile: false 56 | 57 | relative_links: 58 | enabled: true 59 | 60 | gems: 61 | - jekyll-octicons 62 | - jekyll-relative-links 63 | -------------------------------------------------------------------------------- /docs/_includes/nav.html: -------------------------------------------------------------------------------- 1 | 41 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # TensorFlow is much easier to install using Anaconda, especially 2 | # on Windows or when using a GPU. Please see the installation 3 | # instructions in INSTALL.md 4 | 5 | ##### Core scientific packages 6 | jupyter==1.0.0 7 | matplotlib==3.1.2 8 | numpy==1.17.3 9 | pandas==0.25.3 10 | scipy==1.3.1 11 | 12 | 13 | ##### Machine Learning packages 14 | scikit-learn==0.22 15 | 16 | # Optional: the XGBoost library is only used in chapter 7 17 | xgboost==0.90 18 | 19 | ##### TensorFlow-related packages 20 | 21 | # If you have a TF-compatible GPU and you want to enable GPU support, then 22 | # replace tensorflow with tensorflow-gpu, and replace tensorflow-serving-api 23 | # with tensorflow-serving-api-gpu. 24 | # Your GPU must have CUDA Compute Capability 3.5 or higher support, and 25 | # you must install CUDA, cuDNN and more: see tensorflow.org for the detailed 26 | # installation instructions. 27 | 28 | tensorflow==2.0.0 29 | #tensorflow-gpu==2.0.0 30 | 31 | # Optional: the TF Serving API library is just needed for chapter 19. 32 | tensorflow-serving-api==2.0.0 33 | #tensorflow-serving-api-gpu==2.0.0 34 | 35 | tensorboard==2.0.0 36 | tensorflow-datasets==1.3.0 37 | tensorflow-hub==0.6.0 38 | tensorflow-probability==0.7 39 | 40 | # Optional: only used in chapter 13. 41 | # NOT AVAILABLE ON WINDOWS 42 | tfx==0.15.0 43 | 44 | # Optional: only used in chapter 16. 45 | # NOT AVAILABLE ON WINDOWS 46 | tensorflow-addons==0.6.0 47 | 48 | ##### Reinforcement Learning library (chapter 18) 49 | 50 | # There are a few dependencies you need to install first, check out: 51 | # https://github.com/openai/gym#installing-everything 52 | gym[atari]==0.15.4 53 | # On Windows, install atari_py using: 54 | # pip install --no-index -f https://github.com/Kojoley/atari-py/releases atari_py 55 | 56 | tf-agents==0.3.0rc0 57 | 58 | 59 | ##### Image manipulation 60 | imageio==2.6.1 61 | Pillow==6.2.1 62 | scikit-image==0.16.2 63 | graphviz 64 | pydot==1.4.1 65 | opencv-python==4.1.2.30 66 | pyglet==1.3.2 67 | 68 | #pyvirtualdisplay # needed in chapter 16, if on a headless server 69 | # (i.e., without screen, e.g., Colab or VM) 70 | 71 | 72 | ##### Additional utilities 73 | 74 | # Efficient jobs (caching, parallelism, persistence) 75 | joblib==0.14.0 76 | 77 | # Easy http requests 78 | requests==2.22.0 79 | 80 | # Nice utility to diff Jupyter Notebooks. 81 | nbdime==1.1.0 82 | 83 | # May be useful with Pandas for complex "where" clauses (e.g., Pandas 84 | # tutorial). 85 | numexpr==2.7.0 86 | 87 | # Optional: these libraries can be useful in the classification chapter, 88 | # exercise 4. 89 | nltk==3.4.5 90 | urlextract==0.13.0 91 | 92 | # Optional: tqdm displays nice progress bars, ipywidgets for tqdm's notebook support 93 | tqdm==4.40.0 94 | ipywidgets==7.5.1 95 | -------------------------------------------------------------------------------- /docs/_sass/buttons.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons and things that look like buttons 3 | // 4 | // stylelint-disable color-named 5 | 6 | .btn { 7 | display: inline-block; 8 | box-sizing: border-box; 9 | padding-top: 0.3em; 10 | padding-right: 1em; 11 | padding-bottom: 0.3em; 12 | padding-left: 1em; 13 | margin: 0; 14 | font-family: inherit; 15 | font-size: inherit; 16 | font-weight: 500; 17 | line-height: 1.5; 18 | color: $link-color; 19 | text-decoration: none; 20 | vertical-align: baseline; 21 | cursor: pointer; 22 | background-color: $base-button-color; 23 | border-width: 0; 24 | border-radius: $border-radius; 25 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 26 | appearance: none; 27 | 28 | &:focus { 29 | text-decoration: none; 30 | outline: none; 31 | box-shadow: 0 0 0 3px rgba(blue, 0.25); 32 | } 33 | 34 | &:focus:hover, 35 | &.selected:focus { 36 | box-shadow: 0 0 0 3px rgba(blue, 0.25); 37 | } 38 | 39 | &:hover, 40 | &.zeroclipboard-is-hover { 41 | color: darken($link-color, 2%); 42 | } 43 | 44 | &:hover, 45 | &:active, 46 | &.zeroclipboard-is-hover, 47 | &.zeroclipboard-is-active { 48 | text-decoration: none; 49 | background-color: darken($base-button-color, 1%); 50 | } 51 | 52 | &:active, 53 | &.selected, 54 | &.zeroclipboard-is-active { 55 | background-color: darken($base-button-color, 3%); 56 | background-image: none; 57 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); 58 | } 59 | 60 | &.selected:hover { 61 | background-color: darken(#dcdcdc, 5%); 62 | } 63 | 64 | &:disabled, 65 | &.disabled { 66 | &, 67 | &:hover { 68 | color: rgba(102, 102, 102, 0.5); 69 | cursor: default; 70 | background-color: rgba(229, 229, 229, 0.5); 71 | background-image: none; 72 | box-shadow: none; 73 | } 74 | } 75 | } 76 | 77 | .btn-outline { 78 | color: $link-color; 79 | background: transparent; 80 | box-shadow: inset 0 0 0 2px $grey-lt-300; 81 | 82 | &:hover, 83 | &:active, 84 | &.zeroclipboard-is-hover, 85 | &.zeroclipboard-is-active { 86 | color: darken($link-color, 4%); 87 | text-decoration: none; 88 | background-color: transparent; 89 | box-shadow: inset 0 0 0 3px $grey-lt-300; 90 | } 91 | 92 | &:focus { 93 | text-decoration: none; 94 | outline: none; 95 | box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25); 96 | } 97 | 98 | &:focus:hover, 99 | &.selected:focus { 100 | box-shadow: inset 0 0 0 2px $grey-dk-100; 101 | } 102 | } 103 | 104 | .btn-primary { 105 | @include btn-color($white, $btn-primary-color); 106 | } 107 | 108 | .btn-purple { 109 | @include btn-color($white, $purple-100); 110 | } 111 | 112 | .btn-blue { 113 | @include btn-color($white, $blue-000); 114 | } 115 | 116 | .btn-green { 117 | @include btn-color($white, $green-100); 118 | } 119 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 |

2 | Gem version Build status 3 |

4 |

5 |

6 |

Just the Docs

7 |

A modern, highly customizable, and responsive Jekyll theme for documentation with built-in search.
Easily hosted on GitHub Pages with few dependencies.

8 |

See it in action!

9 |


10 |

11 | 12 | ![jtd](https://user-images.githubusercontent.com/896475/47384541-89053c80-d6d5-11e8-98dc-dba16e192de9.gif) 13 | 14 | ## Installation 15 | 16 | Add this line to your Jekyll site's Gemfile: 17 | 18 | ```ruby 19 | gem "just-the-docs" 20 | ``` 21 | 22 | And add this line to your Jekyll site's `_config.yml`: 23 | 24 | ```yaml 25 | theme: just-the-docs 26 | ``` 27 | 28 | And then execute: 29 | 30 | $ bundle 31 | 32 | Or install it yourself as: 33 | 34 | $ gem install just-the-docs 35 | 36 | ## Usage 37 | 38 | [View the documentation](https://pmarsceill.github.io/just-the-docs/) for usage information. 39 | 40 | ## Contributing 41 | 42 | Bug reports and pull requests are welcome on GitHub at https://github.com/pmarsceill/just-the-docs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. 43 | 44 | ### Submitting code changes: 45 | 46 | - Open a [Pull Request](https://github.com/pmarsceill/just-the-docs/pulls) 47 | - Ensure all CI tests pass 48 | - Await code review 49 | - Bump the version number in `just-the-docs.gemspec` and `package.json` according to [semantic versioning](https://semver.org/). 50 | 51 | ### Design and development principles of this theme: 52 | 53 | 1. As few dependencies as possible 54 | 2. No build script needed 55 | 3. First class mobile experience 56 | 4. Make the content shine 57 | 58 | ## Development 59 | 60 | To set up your environment to develop this theme, run `bundle install`. 61 | 62 | Your theme is set up just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. 63 | 64 | When the theme is released, only the files in `_layouts`, `_includes`, and `_sass` tracked with Git will be released. 65 | 66 | ## License 67 | 68 | The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). 69 | -------------------------------------------------------------------------------- /.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/99/917202e6adb09a1f93cdabe5cd869a38511e3adde35d29a2b6a76e0c19a952: -------------------------------------------------------------------------------- 1 | I"1

Evaluate Model

2 | 3 |

Compute a confusion matrix

4 | 5 |
Normalized confusion matrix
 6 | [[0.88173203 0.09765211 0.02061586]
 7 |  [0.1303451  0.83997974 0.02967516]
 8 |  [0.27873486 0.23896011 0.48230502]]
 9 | 
10 | 
11 | 
12 | 
13 | 
14 | <matplotlib.axes._subplots.AxesSubplot at 0x7f487d90af60>
15 | 
16 | 17 |

png

18 | 19 |

Make Predictions

20 | 21 |
Using TensorFlow backend.
22 | 
23 | 24 |
issue_labeler.get_probabilities(body='Can someone please help me?', 
25 |                                 title='random stuff')
26 | 
27 | 28 |
{'bug': 0.12618249654769897,
29 |  'feature': 0.1929263472557068,
30 |  'question': 0.6808911561965942}
31 | 
32 | 33 |
issue_labeler.get_probabilities(body='It would be great to add a new button', 
34 |                                 title='requesting a button')
35 | 
36 | 37 |
{'bug': 0.019261939451098442,
38 |  'feature': 0.9305700659751892,
39 |  'question': 0.05016808584332466}
40 | 
41 | 42 |
issue_labeler.get_probabilities(body='It does` not work, I get bad errors', 
43 |                                 title='nothing works')
44 | 
45 | 46 |
{'bug': 0.9065071940422058,
47 |  'feature': 0.03202613815665245,
48 |  'question': 0.06146678701043129}
49 | 
50 | 51 | :ET -------------------------------------------------------------------------------- /metadata/model_card.md: -------------------------------------------------------------------------------- 1 | Toy example of a [model card](https://arxiv.org/pdf/1810.03993.pdf) 2 | 3 | ## Model Details 4 | 5 | - Developed by researchers at Google and the University of Toronto, 2018, v1. 6 | - Convolutional Neural Net. 7 | - Pretrained for face recognition then fine-tuned with cross-entropy loss for binary smiling classification. 8 | 9 | ## Intended Use 10 | 11 | - Intended to be used for fun applications, such as creating cartoon smiles on real images; augmentative applications, such as providing details for people who are blind; or assisting applications such as automatically finding smiling photos. 12 | - Particularly intended for younger audiences. 13 | - Not suitable for emotion detection or determining affect; smiles were annotated 14 | based on physical appearance, and not underlying emotions. 15 | 16 | ## Factors 17 | 18 | - Based on known problems with computer vision face technology, potential relevant factors include groups for gender, age, race, and Fitzpatrick skin type; hardware factors of camera type and lens type; and environmental factors oflighting and humidity. 19 | - Evaluation factors are gender and age group, as annotated in the publicly available 20 | dataset CelebA [36]. Further possible factors not currently available in a public smiling dataset. Gender and age determined by third-party annotators based 21 | on visual presentation, following a set of examples of male/female gender and 22 | young/old age. Further details available in [36]. 23 | 24 | ## Metrics 25 | 26 | - Evaluation metrics include False Positive Rate and False Negative Rate to 27 | measure disproportionate model performance errors across subgroups. False 28 | Discovery Rate and False Omission Rate, which measure the fraction of negative (not smiling) and positive (smiling) predictions that are incorrectly predicted 29 | to be positive and negative, respectively are also reported. [48] 30 | - Together, these four metrics provide values for different errors that can be calculated from the confusion matrix for binary classification systems. 31 | - These also correspond to metrics in recent definitions of “fairness” in machine learning (cf. [6, 26]), where parity across subgroups for different metrics correspond to different fairness criteria. 32 | - 95% confidence intervals calculated with bootstrap resampling. 33 | - All metrics reported at the .5 decision threshold, where all error types (FPR, FNR, FDR, FOR) are within the same range (0.04 - 0.14). 34 | 35 | ## Training Data 36 | 37 | - CelebA [36], training data split. 38 | Evaluation Data 39 | - CelebA [36], test data split. 40 | - Chosen as a basic proof-of-concept. 41 | 42 | ## Ethical Considerations 43 | 44 | - Faces and annotations based on public figures (celebrities). No new information 45 | is inferred or annotated. 46 | 47 | ## Caveats and Recommendations 48 | 49 | - Does not capture race or skin type, which has been reported as a source of disproportionate errors [5]. 50 | - Given gender classes are binary (male/not male), which we include as male/female. Further work needed to evaluate across a spectrum of genders. 51 | - An ideal evaluation dataset would additionally include annotations for Fitzpatrick skin type, camera details, and environment (lighting/humidity) details. 52 | -------------------------------------------------------------------------------- /docs/_sass/content.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // 4 | // Styles for rendered markdown in the .main-content container 5 | // 6 | // stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type 7 | 8 | .page-content { 9 | line-height: $content-line-height; 10 | 11 | a { 12 | overflow: hidden; 13 | text-overflow: ellipsis; 14 | white-space: nowrap; 15 | } 16 | 17 | ul, 18 | ol { 19 | padding-left: 1.5em; 20 | } 21 | 22 | ol { 23 | list-style-type: none; 24 | counter-reset: step-counter; 25 | 26 | > li { 27 | position: relative; 28 | 29 | &::before { 30 | position: absolute; 31 | top: 0.2em; 32 | left: -1.6em; 33 | color: $grey-dk-000; 34 | content: counter(step-counter); 35 | counter-increment: step-counter; 36 | @include fs-3; 37 | 38 | @include mq(sm) { 39 | top: 0.11em; 40 | } 41 | } 42 | 43 | ol { 44 | counter-reset: sub-counter; 45 | 46 | li { 47 | &::before { 48 | content: counter(sub-counter, lower-alpha); 49 | counter-increment: sub-counter; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | 56 | ul { 57 | list-style: none; 58 | 59 | > li { 60 | &::before { 61 | position: absolute; 62 | margin-left: -1.4em; 63 | color: $grey-dk-000; 64 | content: "•"; 65 | } 66 | } 67 | } 68 | 69 | .task-list { 70 | padding-left: 0; 71 | } 72 | 73 | .task-list-item { 74 | display: flex; 75 | align-items: center; 76 | 77 | &::before { 78 | content: ""; 79 | } 80 | } 81 | 82 | .task-list-item-checkbox { 83 | margin-right: 0.6em; 84 | } 85 | 86 | hr + * { 87 | margin-top: 0; 88 | } 89 | 90 | h1:first-of-type { 91 | margin-top: 0.5em; 92 | } 93 | 94 | dl { 95 | display: grid; 96 | grid-template-columns: max-content 1fr; 97 | } 98 | 99 | dt, 100 | dd { 101 | margin: 0.25em 0; 102 | } 103 | 104 | dt { 105 | text-align: right; 106 | 107 | &::after { 108 | content: ":"; 109 | } 110 | } 111 | 112 | dd { 113 | margin-left: 1em; 114 | font-weight: 500; 115 | } 116 | 117 | .anchor-heading { 118 | position: absolute; 119 | right: -$sp-4; 120 | width: $sp-5; 121 | height: 100%; 122 | padding-right: $sp-1; 123 | padding-left: $sp-1; 124 | overflow: visible; 125 | 126 | @include mq(md) { 127 | right: auto; 128 | left: -$sp-5; 129 | } 130 | 131 | svg { 132 | display: inline-block; 133 | width: 100%; 134 | height: 100%; 135 | fill: $link-color; 136 | visibility: hidden; 137 | } 138 | } 139 | 140 | .anchor-heading:hover, 141 | h1:hover > .anchor-heading, 142 | h2:hover > .anchor-heading, 143 | h3:hover > .anchor-heading, 144 | h4:hover > .anchor-heading, 145 | h5:hover > .anchor-heading, 146 | h6:hover > .anchor-heading { 147 | svg { 148 | visibility: visible; 149 | } 150 | } 151 | 152 | h1, 153 | h2, 154 | h3, 155 | h4, 156 | h5, 157 | h6 { 158 | position: relative; 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /docs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at patrick.marsceill@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /docs/_site/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at patrick.marsceill@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /docs/summary.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: Summary 4 | permalink: /summary 5 | nav_order: 2 6 | --- 7 | 8 |

Mockup / Illustrative

9 | 10 | 1. TOC 11 | {:toc} 12 | 13 | 14 | ## Model Details 15 | 16 | - Developed by researchers at Google and the University of Toronto, 2018, v1. 17 | - Convolutional Neural Net. 18 | - Pretrained for face recognition then fine-tuned with cross-entropy loss for binary smiling classification. 19 | 20 | ## Intended Use 21 | 22 | - Intended to be used for fun applications, such as creating cartoon smiles on real images; augmentative applications, such as providing details for people who are blind; or assisting applications such as automatically finding smiling photos. 23 | - Particularly intended for younger audiences. 24 | - Not suitable for emotion detection or determining affect; smiles were annotated 25 | based on physical appearance, and not underlying emotions. 26 | 27 | ## Factors 28 | 29 | - Based on known problems with computer vision face technology, potential relevant factors include groups for gender, age, race, and Fitzpatrick skin type; hardware factors of camera type and lens type; and environmental factors oflighting and humidity. 30 | - Evaluation factors are gender and age group, as annotated in the publicly available 31 | dataset CelebA [36]. Further possible factors not currently available in a public smiling dataset. Gender and age determined by third-party annotators based 32 | on visual presentation, following a set of examples of male/female gender and 33 | young/old age. Further details available in [36]. 34 | 35 | ## Metrics 36 | 37 | - Evaluation metrics include False Positive Rate and False Negative Rate to 38 | measure disproportionate model performance errors across subgroups. False 39 | Discovery Rate and False Omission Rate, which measure the fraction of negative (not smiling) and positive (smiling) predictions that are incorrectly predicted 40 | to be positive and negative, respectively are also reported. [48] 41 | - Together, these four metrics provide values for different errors that can be calculated from the confusion matrix for binary classification systems. 42 | - These also correspond to metrics in recent definitions of “fairness” in machine learning (cf. [6, 26]), where parity across subgroups for different metrics correspond to different fairness criteria. 43 | - 95% confidence intervals calculated with bootstrap resampling. 44 | - All metrics reported at the .5 decision threshold, where all error types (FPR, FNR, FDR, FOR) are within the same range (0.04 - 0.14). 45 | 46 | ## Training Data 47 | 48 | - CelebA [36], training data split. 49 | Evaluation Data 50 | - CelebA [36], test data split. 51 | - Chosen as a basic proof-of-concept. 52 | 53 | ## Ethical Considerations 54 | 55 | - Faces and annotations based on public figures (celebrities). No new information 56 | is inferred or annotated. 57 | 58 | ## Caveats and Recommendations 59 | 60 | - Does not capture race or skin type, which has been reported as a source of disproportionate errors [5]. 61 | - Given gender classes are binary (male/not male), which we include as male/female. Further work needed to evaluate across a spectrum of genders. 62 | - An ideal evaluation dataset would additionally include annotations for Fitzpatrick skin type, camera details, and environment (lighting/humidity) details. -------------------------------------------------------------------------------- /docs/_sass/vendor/normalize.scss/README.md: -------------------------------------------------------------------------------- 1 | # normalize.scss v0.1.0 2 | 3 | Normalize.scss is the SCSS version of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards. 4 | 5 | [View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html) 6 | 7 | ## Install 8 | 9 | * [npm](http://npmjs.org/): `npm install --save normalize.scss` 10 | * [Component(1)](https://github.com/component/component/): `component install guerrero/normalize.scss` 11 | * [Bower](http://bower.io/): `bower install --save normalize.scss` 12 | * Download: Go to [this link](https://raw.githubusercontent.com/guerrero/normalize.scss/master/normalize.scss), press right-click on the page and choose "Save as..." 13 | 14 | No other styles should come before Normalize.scss. 15 | 16 | It's recommendable to modify `normalize.scss` to suit it to your project 17 | 18 | ## What does it do? 19 | 20 | * Preserves useful defaults, unlike many CSS resets. 21 | * Normalizes styles for a wide range of elements. 22 | * Corrects bugs and common browser inconsistencies. 23 | * Improves usability with subtle improvements. 24 | * Explains what code does using detailed comments. 25 | 26 | ## Browser support 27 | 28 | * Google Chrome (latest) 29 | * Mozilla Firefox (latest) 30 | * Mozilla Firefox 4 31 | * Opera (latest) 32 | * Apple Safari 6+ 33 | * Internet Explorer 8+ 34 | 35 | [Normalize.css v1 provides legacy browser 36 | support](https://github.com/necolas/normalize.css/tree/v1) (IE 6+, Safari 4+), 37 | but is no longer actively developed. 38 | 39 | ## Extended details 40 | 41 | Additional detail and explanation of the esoteric parts of normalize.css. 42 | 43 | #### `pre, code, kbd, samp` 44 | 45 | The `font-family: monospace, monospace` hack fixes the inheritance and scaling 46 | of font-size for preformated text. The duplication of `monospace` is 47 | intentional. [Source](http://en.wikipedia.org/wiki/User:Davidgothberg/Test59). 48 | 49 | #### `sub, sup` 50 | 51 | Normally, using `sub` or `sup` affects the line-box height of text in all 52 | browsers. [Source](http://gist.github.com/413930). 53 | 54 | #### `svg:not(:root)` 55 | 56 | Adding `overflow: hidden` fixes IE9's SVG rendering. Earlier versions of IE 57 | don't support SVG, so we can safely use the `:not()` and `:root` selectors that 58 | modern browsers use in the default UA stylesheets to apply this style. [SVG 59 | Mailing List discussion](http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0339.html) 60 | 61 | #### `input[type="search"]` 62 | 63 | The search input is not fully stylable by default. In Chrome and Safari on 64 | OSX/iOS you can't control `font`, `padding`, `border`, or `background`. In 65 | Chrome and Safari on Windows you can't control `border` properly. It will apply 66 | `border-width` but will only show a border color (which cannot be controlled) 67 | for the outer 1px of that border. Applying `-webkit-appearance: textfield` 68 | addresses these issues without removing the benefits of search inputs (e.g. 69 | showing past searches). 70 | 71 | #### `legend` 72 | 73 | Adding `border: 0` corrects an IE 8–11 bug where `color` (yes, `color`) is not 74 | inherited by `legend`. 75 | 76 | ## Acknowledgements 77 | 78 | Normalize.scss is a project by [Alex Guerrero](https://github.com/guerrero) based on [normalize.css](http://necolas.github.io/normalize.css) from [Nicolas Gallagher](https://github.com/necolas), co-created with [Jonathan Neal](https://github.com/jonathantneal). 79 | -------------------------------------------------------------------------------- /docs/_sass/custom/custom.scss: -------------------------------------------------------------------------------- 1 | //// 2 | //// Typography 3 | //// 4 | 5 | //$body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif; 6 | //$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace; 7 | //$root-font-size: 16px; // Base font-size for rems 8 | //$body-line-height: 1.4; 9 | //$content-line-height: 1.5; 10 | //$body-heading-line-height: 1.15; 11 | 12 | //// 13 | //// Colors 14 | //// 15 | 16 | //$white: #fff; 17 | 18 | //$grey-dk-000: #959396; 19 | //$grey-dk-100: #5c5962; 20 | //$grey-dk-200: #44434d; 21 | //$grey-dk-250: #302d36; 22 | //$grey-dk-300: #27262b; 23 | 24 | //$grey-lt-000: #f5f6fa; 25 | //$grey-lt-100: #eeebee; 26 | //$grey-lt-200: #ecebed; 27 | //$grey-lt-300: #e6e1e8; 28 | 29 | //$purple-000: #7253ed; 30 | //$purple-100: #5e41d0; 31 | //$purple-200: #4e26af; 32 | //$purple-300: #381885; 33 | 34 | //$blue-000: #2c84fa; 35 | //$blue-100: #2869e6; 36 | //$blue-200: #264caf; 37 | //$blue-300: #183385; 38 | 39 | //$green-000: #41d693; 40 | //$green-100: #11b584; 41 | //$green-200: #009c7b; 42 | //$green-300: #026e57; 43 | 44 | //$yellow-000: #ffeb82; 45 | //$yellow-100: #fadf50; 46 | //$yellow-200: #f7d12e; 47 | //$yellow-300: #e7af06; 48 | 49 | //$red-000: #f77e7e; 50 | //$red-100: #f96e65; 51 | //$red-200: #e94c4c; 52 | //$red-300: #dd2e2e; 53 | 54 | //$body-background-color: $white; 55 | //$sidebar-color: $grey-lt-000; 56 | //$search-background-color: $white; 57 | //$table-background-color: $white; 58 | //$code-background-color: $grey-lt-000; 59 | 60 | //$body-text-color: $grey-dk-100; 61 | //$body-heading-color: $grey-dk-300; 62 | //$search-result-preview-color: $grey-dk-000; 63 | //$nav-child-link-color: $grey-dk-100; 64 | //$link-color: $purple-000; 65 | //$btn-primary-color: $purple-100; 66 | //$base-button-color: #f7f7f7; 67 | 68 | //// 69 | //// Spacing 70 | //// 71 | 72 | //$spacing-unit: 1rem; // 1rem == 16px 73 | 74 | //$spacers: ( 75 | //sp-0: 0, 76 | //sp-1: $spacing-unit * 0.25, 77 | //sp-2: $spacing-unit * 0.5, 78 | //sp-3: $spacing-unit * 0.75, 79 | //sp-4: $spacing-unit, 80 | //sp-5: $spacing-unit * 1.5, 81 | //sp-6: $spacing-unit * 2, 82 | //sp-7: $spacing-unit * 2.5, 83 | //sp-8: $spacing-unit * 3, 84 | //sp-9: $spacing-unit * 3.5, 85 | //sp-10: $spacing-unit * 4 86 | //); 87 | 88 | //$sp-1: map-get($spacers, sp-1); // 0.25 rem == 4px 89 | //$sp-2: map-get($spacers, sp-2); // 0.5 rem == 8px 90 | //$sp-3: map-get($spacers, sp-3); // 0.75 rem == 12px 91 | //$sp-4: map-get($spacers, sp-4); // 1 rem == 16px 92 | //$sp-5: map-get($spacers, sp-5); // 1.5 rem == 24px 93 | //$sp-6: map-get($spacers, sp-6); // 2 rem == 32px 94 | //$sp-7: map-get($spacers, sp-7); // 2.5 rem == 40px 95 | //$sp-8: map-get($spacers, sp-8); // 3 rem == 48px 96 | //$sp-9: map-get($spacers, sp-9); // 4 rem == 48px 97 | //$sp-10: map-get($spacers, sp-10); // 4.5 rem == 48px 98 | 99 | //// 100 | //// Borders 101 | //// 102 | 103 | //$border: 1px solid; 104 | //$border-radius: 4px; 105 | //$border-color: $grey-lt-100; 106 | 107 | //// 108 | //// Grid system 109 | //// 110 | 111 | //$gutter-spacing: $sp-6; 112 | //$gutter-spacing-sm: $sp-4; 113 | //$nav-width: 264px; 114 | //$nav-width-md: 248px; 115 | //$content-width: 800px; 116 | //$header-height: 60px; 117 | //$search-results-width: 500px; 118 | 119 | //// 120 | //// Media queries in pixels 121 | //// 122 | 123 | //$media-queries: ( 124 | //xs: 320px, 125 | //sm: 500px, 126 | //md: $content-width, 127 | //lg: $content-width + $nav-width, 128 | //xl: 1400px 129 | //); 130 | -------------------------------------------------------------------------------- /docs/_sass/search.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Search input and autocomplete 3 | // 4 | 5 | .search { 6 | position: relative; 7 | z-index: 99; 8 | flex-grow: 1; 9 | height: 100%; 10 | margin-bottom: $sp-3; 11 | 12 | @include mq(md) { 13 | margin-bottom: 0; 14 | } 15 | } 16 | 17 | .search-input-wrap { 18 | display: flex; 19 | height: 100%; 20 | padding: $sp-2; 21 | background-color: $search-background-color; 22 | border-radius: $border-radius; 23 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 24 | 25 | @include mq(md) { 26 | padding-top: 0; 27 | padding-right: 0; 28 | padding-bottom: 0; 29 | padding-left: 0; 30 | background-color: $body-background-color; 31 | border-radius: 0; 32 | box-shadow: none; 33 | } 34 | } 35 | 36 | .search-input { 37 | align-self: center; 38 | width: 100%; 39 | padding-top: $sp-1; 40 | padding-bottom: $sp-1; 41 | background-color: $search-background-color; 42 | border-top: 0; 43 | border-right: 0; 44 | border-bottom: 0; 45 | border-left: 0; 46 | order: 2; 47 | @include fs-4; 48 | 49 | &:focus { 50 | outline: 0; 51 | box-shadow: none; 52 | 53 | + .search-icon { 54 | fill: $link-color; 55 | } 56 | } 57 | 58 | @include mq(md) { 59 | background-color: $body-background-color; 60 | @include fs-3; 61 | } 62 | } 63 | 64 | .search-icon { 65 | align-self: center; 66 | margin-right: $sp-2; 67 | fill: $grey-dk-000; 68 | order: 1; 69 | } 70 | 71 | .search-results-wrap { 72 | position: absolute; 73 | z-index: 100; 74 | display: none; 75 | width: 100%; 76 | background: $search-background-color; 77 | border-radius: $border-radius; 78 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); 79 | 80 | &.active { 81 | display: block; 82 | } 83 | 84 | @include mq(md) { 85 | width: $search-results-width; 86 | } 87 | } 88 | 89 | .search-results-list { 90 | padding-left: 0; 91 | margin-top: $sp-1; 92 | margin-bottom: $sp-1; 93 | list-style: none; 94 | @include fs-4; 95 | 96 | @include mq(md) { 97 | @include fs-3; 98 | } 99 | } 100 | 101 | .search-results-list-item { 102 | padding: 0; 103 | margin: 0; 104 | } 105 | 106 | .search-result { 107 | display: block; 108 | padding-top: $sp-1; 109 | padding-right: $sp-3; 110 | padding-bottom: $sp-1; 111 | padding-left: $sp-3; 112 | 113 | &:hover, 114 | &.active { 115 | background-color: $sidebar-color; 116 | } 117 | 118 | @include mq(md) { 119 | padding-right: $sp-4; 120 | padding-left: $sp-4; 121 | } 122 | } 123 | 124 | .search-result-title { 125 | display: block; 126 | padding-top: $sp-2; 127 | padding-right: $sp-4; 128 | padding-bottom: $sp-2; 129 | 130 | @include mq(sm) { 131 | display: inline-block; 132 | width: 40%; 133 | word-wrap: break-word; 134 | vertical-align: top; 135 | } 136 | } 137 | 138 | .search-result-rel-url { 139 | display: block; 140 | overflow: hidden; 141 | color: $search-result-preview-color; 142 | text-overflow: ellipsis; 143 | white-space: nowrap; 144 | @include fs-1; 145 | } 146 | 147 | .search-result-preview { 148 | display: block; 149 | padding-top: $sp-2; 150 | padding-bottom: $sp-2; 151 | padding-left: $sp-4; 152 | color: $search-result-preview-color; 153 | border-left: $border; 154 | border-left-color: $border-color; 155 | @include fs-2; 156 | 157 | @include mq(sm) { 158 | display: inline-block; 159 | width: 60%; 160 | vertical-align: top; 161 | } 162 | } 163 | 164 | .search-result-highlight { 165 | font-weight: bold; 166 | color: $link-color; 167 | } 168 | -------------------------------------------------------------------------------- /docs/docs/pipeline_runs.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Completed Pipeline Runs 4 | nav_order: 5 5 | --- 6 | 7 |

Mockup / Illustrative

8 | 9 | 10 | 13 |
14 |
15 |
16 | actions--5287272-ksygxkr 17 | 2019-10-14T21:10:18Z 18 |
19 |
20 | Succeeded 21 | Duration: 11:43 min 22 |
23 |
24 | 25 | 26 | 27 |
28 | 29 |
30 |
31 |
32 | actions--0fbe4ae-kollree 33 | 2019-10-10T01:04:21Z 34 |
35 |
36 | Succeeded 37 | Duration: 12:26 min 38 |
39 |
40 | 41 | 42 | 43 |
44 | 45 | 46 |
47 |
48 |
49 | actions--da8cdae-poevbva 50 | 2019-10-10T00:35:56Z 51 |
52 |
53 | Failed 54 | Duration: 12:24 min 55 |
56 |
57 | 58 | 59 | 60 |
61 | 62 |
63 |
64 |
65 | smoke-test-lnsty24x 66 | 2019-10-01T21:10:18Z 67 |
68 |
69 | Succeeded 70 | Duration: 11:43 min 71 |
72 |
73 | 74 | 75 | 76 |
77 | 78 |
79 |
80 |
81 | hyper-param-tuning-lfsn241 82 | 2019-9-10T08:35:56Z 83 |
84 |
85 | Failed 86 | Duration: 12:24 min 87 |
88 |
89 | 90 | 91 | 92 |
-------------------------------------------------------------------------------- /docs/_sass/support/_variables.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Typography 3 | // 4 | 5 | $body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif !default; 6 | $mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default; 7 | $root-font-size: 16px !default; // Base font-size for rems 8 | $body-line-height: 1.4 !default; 9 | $content-line-height: 1.5 !default; 10 | $body-heading-line-height: 1.15 !default !default; 11 | 12 | // 13 | // Colors 14 | // 15 | 16 | $white: #fff !default; 17 | 18 | $grey-dk-000: #959396 !default; 19 | $grey-dk-100: #5c5962 !default; 20 | $grey-dk-200: #44434d !default; 21 | $grey-dk-250: #302d36 !default; 22 | $grey-dk-300: #27262b !default; 23 | 24 | $grey-lt-000: #f5f6fa !default; 25 | $grey-lt-100: #eeebee !default; 26 | $grey-lt-200: #ecebed !default; 27 | $grey-lt-300: #e6e1e8 !default; 28 | 29 | $purple-000: #7253ed !default; 30 | $purple-100: #5e41d0 !default; 31 | $purple-200: #4e26af !default; 32 | $purple-300: #381885 !default; 33 | 34 | $blue-000: #2c84fa !default; 35 | $blue-100: #2869e6 !default; 36 | $blue-200: #264caf !default; 37 | $blue-300: #183385 !default; 38 | 39 | $green-000: #41d693 !default; 40 | $green-100: #11b584 !default; 41 | $green-200: #009c7b !default; 42 | $green-300: #026e57 !default; 43 | 44 | $yellow-000: #ffeb82 !default; 45 | $yellow-100: #fadf50 !default; 46 | $yellow-200: #f7d12e !default; 47 | $yellow-300: #e7af06 !default; 48 | 49 | $red-000: #f77e7e !default; 50 | $red-100: #f96e65 !default; 51 | $red-200: #e94c4c !default; 52 | $red-300: #dd2e2e !default; 53 | 54 | $body-background-color: $white !default; 55 | $sidebar-color: $grey-lt-000 !default; 56 | $search-background-color: $white !default; 57 | $table-background-color: $white !default; 58 | $code-background-color: $grey-lt-000 !default; 59 | 60 | $body-text-color: $grey-dk-100 !default; 61 | $body-heading-color: $grey-dk-300 !default; 62 | $search-result-preview-color: $grey-dk-000 !default; 63 | $nav-child-link-color: $grey-dk-100 !default; 64 | $link-color: $purple-000 !default; 65 | $btn-primary-color: $purple-100 !default; 66 | $base-button-color: #f7f7f7 !default; 67 | 68 | // 69 | // Spacing 70 | // 71 | 72 | $spacing-unit: 1rem; // 1rem == 16px 73 | 74 | $spacers: ( 75 | sp-0: 0, 76 | sp-1: $spacing-unit * 0.25, 77 | sp-2: $spacing-unit * 0.5, 78 | sp-3: $spacing-unit * 0.75, 79 | sp-4: $spacing-unit, 80 | sp-5: $spacing-unit * 1.5, 81 | sp-6: $spacing-unit * 2, 82 | sp-7: $spacing-unit * 2.5, 83 | sp-8: $spacing-unit * 3, 84 | sp-9: $spacing-unit * 3.5, 85 | sp-10: $spacing-unit * 4 86 | ) !default; 87 | 88 | $sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px 89 | $sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px 90 | $sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px 91 | $sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px 92 | $sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px 93 | $sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px 94 | $sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px 95 | $sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px 96 | $sp-9: map-get($spacers, sp-9) !default; // 4 rem == 48px 97 | $sp-10: map-get($spacers, sp-10) !default; // 4.5 rem == 48px 98 | 99 | // 100 | // Borders 101 | // 102 | 103 | $border: 1px solid !default; 104 | $border-radius: 4px !default; 105 | $border-color: $grey-lt-100 !default; 106 | 107 | // 108 | // Grid system 109 | // 110 | 111 | $gutter-spacing: $sp-6 !default; 112 | $gutter-spacing-sm: $sp-4 !default; 113 | $nav-width: 264px !default; 114 | $nav-width-md: 248px !default; 115 | $content-width: 800px !default; 116 | $header-height: 60px !default; 117 | $search-results-width: 500px !default; 118 | 119 | // 120 | // Media queries in pixels 121 | // 122 | 123 | $media-queries: ( 124 | xs: 320px, 125 | sm: 500px, 126 | md: $content-width, 127 | lg: $content-width + $nav-width, 128 | xl: 1400px 129 | ) !default; 130 | -------------------------------------------------------------------------------- /docs/_site/404.html: -------------------------------------------------------------------------------- 1 | Page not found - MLOps Dashboard Link

Page not found

The page you requested could not be found. Try using the navigation or search to find what you're looking for or go to this site's home page.


2 | -------------------------------------------------------------------------------- /docs/_sass/utilities/_spacing.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for margins and padding 3 | // 4 | 5 | // scss-lint:disable SpaceAfterPropertyName 6 | // stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override 7 | 8 | // Margin spacer utilities 9 | 10 | @for $i from 1 through length($spacers) { 11 | $size: #{map-get($spacers, sp-#{$i - 1})}; 12 | $scale: #{$i - 1}; 13 | 14 | // .m-0, .m-1, .m-2... 15 | .m-#{$scale} { margin: #{$size} !important; } 16 | .mt-#{$scale} { margin-top: #{$size} !important; } 17 | .mr-#{$scale} { margin-right: #{$size} !important; } 18 | .mb-#{$scale} { margin-bottom: #{$size} !important; } 19 | .ml-#{$scale} { margin-left: #{$size} !important; } 20 | 21 | .mx-#{$scale} { 22 | margin-right: #{$size} !important; 23 | margin-left: #{$size} !important; 24 | } 25 | 26 | .my-#{$scale} { 27 | margin-top: #{$size} !important; 28 | margin-bottom: #{$size} !important; 29 | } 30 | 31 | .mxn-#{$scale} { 32 | margin-right: -#{$size} !important; 33 | margin-left: -#{$size} !important; 34 | } 35 | } 36 | 37 | .mx-auto { 38 | margin-right: auto !important; 39 | margin-left: auto !important; 40 | } 41 | 42 | @each $media-query in map-keys($media-queries) { 43 | @for $i from 1 through length($spacers) { 44 | @include mq($media-query) { 45 | $size: #{map-get($spacers, sp-#{$i - 1})}; 46 | $scale: #{$i - 1}; 47 | 48 | // .m-sm-0, .m-md-1, .m-lg-2... 49 | .m-#{$media-query}-#{$scale} { margin: #{$size} !important; } 50 | .mt-#{$media-query}-#{$scale} { margin-top: #{$size} !important; } 51 | .mr-#{$media-query}-#{$scale} { margin-right: #{$size} !important; } 52 | .mb-#{$media-query}-#{$scale} { margin-bottom: #{$size} !important; } 53 | .ml-#{$media-query}-#{$scale} { margin-left: #{$size} !important; } 54 | 55 | .mx-#{$media-query}-#{$scale} { 56 | margin-right: #{$size} !important; 57 | margin-left: #{$size} !important; 58 | } 59 | 60 | .my-#{$media-query}-#{$scale} { 61 | margin-top: #{$size} !important; 62 | margin-bottom: #{$size} !important; 63 | } 64 | 65 | .mxn-#{$media-query}-#{$scale} { 66 | margin-right: -#{$size} !important; 67 | margin-left: -#{$size} !important; 68 | } 69 | } 70 | } 71 | } 72 | 73 | // Padding spacer utilities 74 | 75 | @for $i from 1 through length($spacers) { 76 | $size: #{map-get($spacers, sp-#{$i - 1})}; 77 | $scale: #{$i - 1}; 78 | 79 | // .p-0, .p-1, .p-2... 80 | .p-#{$scale} { padding: #{$size} !important; } 81 | .pt-#{$scale} { padding-top: #{$size} !important; } 82 | .pr-#{$scale} { padding-right: #{$size} !important; } 83 | .pb-#{$scale} { padding-bottom: #{$size} !important; } 84 | .pl-#{$scale} { padding-left: #{$size} !important; } 85 | 86 | .px-#{$scale} { 87 | padding-right: #{$size} !important; 88 | padding-left: #{$size} !important; 89 | } 90 | 91 | .py-#{$scale} { 92 | padding-top: #{$size} !important; 93 | padding-bottom: #{$size} !important; 94 | } 95 | } 96 | 97 | @each $media-query in map-keys($media-queries) { 98 | @include mq($media-query) { 99 | @for $i from 1 through length($spacers) { 100 | $size: #{map-get($spacers, sp-#{$i - 1})}; 101 | $scale: #{$i - 1}; 102 | 103 | // .p-sm-0, .p-md-1, .p-lg-2... 104 | .p-#{$media-query}-#{$scale} { padding: #{$size} !important; } 105 | .pt-#{$media-query}-#{$scale} { padding-top: #{$size} !important; } 106 | .pr-#{$media-query}-#{$scale} { padding-right: #{$size} !important; } 107 | .pb-#{$media-query}-#{$scale} { padding-bottom: #{$size} !important; } 108 | .pl-#{$media-query}-#{$scale} { padding-left: #{$size} !important; } 109 | 110 | .px-#{$media-query}-#{$scale} { 111 | padding-right: #{$size} !important; 112 | padding-left: #{$size} !important; 113 | } 114 | 115 | .py-#{$media-query}-#{$scale} { 116 | padding-top: #{$size} !important; 117 | padding-bottom: #{$size} !important; 118 | } 119 | } 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /docs/_layouts/vendor/compress.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Jekyll layout that compresses HTML 3 | # v3.1.0 4 | # http://jch.penibelst.de/ 5 | # © 2014–2015 Anatol Broder 6 | # MIT License 7 | --- 8 | 9 | {% capture _LINE_FEED %} 10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} 11 | -------------------------------------------------------------------------------- /docs/_site/docs/deploy/index.html: -------------------------------------------------------------------------------- 1 | Deploy - MLOps Dashboard Link

Mockup / Illustrative

Deploy Model On Your Infrastructure

Fork this project to run the model pipeline on your compute.


2 | -------------------------------------------------------------------------------- /docs/_site/docs/reports/index.html: -------------------------------------------------------------------------------- 1 | Reports - MLOps Dashboard Link

Mockup / Illustrative

Reports are automatically rendered from Jupyter Notebooks located in the /notebooks directory of your repository. You can refresh these reports by commiting new or updated notebooks to the master branch of your repository.


Table of contents


2 | -------------------------------------------------------------------------------- /docs/_sass/layout.scss: -------------------------------------------------------------------------------- 1 | // 2 | // The basic two column layout 3 | // 4 | 5 | .page-wrap { 6 | @include mq(md) { 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | display: flex; 11 | width: 100%; 12 | height: 100%; 13 | overflow-x: hidden; 14 | overflow-y: hidden; 15 | } 16 | } 17 | 18 | .side-bar { 19 | z-index: 100; 20 | display: flex; 21 | flex-wrap: wrap; 22 | background-color: $sidebar-color; 23 | 24 | @include mq(md) { 25 | flex-wrap: nowrap; 26 | position: absolute; 27 | width: $nav-width-md; 28 | height: 100%; 29 | flex-direction: column; 30 | border-right: $border $border-color; 31 | align-items: flex-end; 32 | } 33 | 34 | @include mq(lg) { 35 | width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); 36 | min-width: $nav-width; 37 | } 38 | } 39 | 40 | .main-content-wrap { 41 | @include mq(md) { 42 | position: absolute; 43 | top: 0; 44 | left: 0; 45 | width: 100%; 46 | height: 100%; 47 | -webkit-overflow-scrolling: touch; 48 | overflow-x: hidden; 49 | overflow-y: scroll; 50 | } 51 | } 52 | 53 | .main-content { 54 | @include mq(md) { 55 | position: relative; 56 | max-width: $content-width; 57 | margin-left: $nav-width-md; 58 | } 59 | 60 | @include mq(lg) { 61 | margin-left: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); 62 | } 63 | } 64 | 65 | .js-main-content:focus { 66 | outline: none; 67 | } 68 | 69 | .page { 70 | @include container; 71 | padding-top: $gutter-spacing-sm; 72 | padding-bottom: $gutter-spacing-sm; 73 | 74 | @include mq(md) { 75 | padding-top: $gutter-spacing; 76 | padding-bottom: $gutter-spacing; 77 | } 78 | } 79 | 80 | .page-header { 81 | @include container; 82 | display: none; 83 | padding-top: $gutter-spacing-sm; 84 | padding-bottom: $gutter-spacing-sm; 85 | background-color: $sidebar-color; 86 | 87 | @include mq(md) { 88 | display: flex; 89 | justify-content: flex-end; 90 | height: $header-height; 91 | background-color: $body-background-color; 92 | border-bottom: $border $border-color; 93 | } 94 | 95 | &.nav-open { 96 | display: block; 97 | 98 | @include mq(md) { 99 | display: flex; 100 | } 101 | } 102 | } 103 | 104 | .navigation, 105 | .site-header, 106 | .site-footer { 107 | 108 | width: 100%; 109 | 110 | @include mq(lg) { 111 | width: $nav-width; 112 | } 113 | } 114 | 115 | .navigation { 116 | @include container; 117 | 118 | @include mq(md) { 119 | padding-top: $sp-8; 120 | padding-bottom: $gutter-spacing-sm; 121 | overflow-y: auto; 122 | flex: 1 1 auto; 123 | } 124 | } 125 | 126 | .site-header { 127 | display: flex; 128 | min-height: $header-height; 129 | align-items: center; 130 | 131 | @include mq(md) { 132 | z-index: 101; 133 | height: $header-height; 134 | max-height: $header-height; 135 | border-bottom: $border $border-color; 136 | } 137 | } 138 | 139 | .site-title { 140 | @include container; 141 | flex-grow: 1; 142 | display: flex; 143 | height: 100%; 144 | align-items: center; 145 | padding-top: $sp-3; 146 | padding-bottom: $sp-3; 147 | color: $body-heading-color; 148 | @include fs-6; 149 | 150 | @include mq(md) { 151 | padding-top: $sp-2; 152 | padding-bottom: $sp-2; 153 | } 154 | } 155 | 156 | @if variable-exists(logo) { 157 | .site-logo { 158 | width: 100%; 159 | height: 100%; 160 | background-image: url($logo); 161 | background-repeat: no-repeat; 162 | background-position: left center; 163 | background-size: contain; 164 | } 165 | } 166 | 167 | .menu-button { 168 | appearance: none; 169 | display: flex; 170 | height: 100%; 171 | padding: $gutter-spacing-sm; 172 | align-items: center; 173 | color: $link-color; 174 | text-transform: uppercase; 175 | background: transparent; 176 | border: 0; 177 | 178 | @include mq(md) { 179 | display: none; 180 | } 181 | } 182 | 183 | // stylelint-disable selector-max-type 184 | 185 | body { 186 | position: relative; 187 | padding-bottom: $sp-10; 188 | 189 | @include mq(md) { 190 | position: static; 191 | padding-bottom: 0; 192 | } 193 | } 194 | 195 | // stylelint-enable selector-max-type 196 | 197 | .site-footer { 198 | @include container; 199 | position: absolute; 200 | bottom: 0; 201 | left: 0; 202 | padding-top: $sp-4; 203 | padding-bottom: $sp-4; 204 | 205 | @include mq(md) { 206 | position: static; 207 | justify-self: end; 208 | } 209 | } 210 | -------------------------------------------------------------------------------- /docs/_sass/utilities/_colors.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes for colors 3 | // 4 | 5 | // Text colors 6 | 7 | .text-grey-dk-000 { 8 | color: $grey-dk-000 !important; 9 | } 10 | 11 | .text-grey-dk-100 { 12 | color: $grey-dk-100 !important; 13 | } 14 | 15 | .text-grey-dk-200 { 16 | color: $grey-dk-200 !important; 17 | } 18 | 19 | .text-grey-dk-250 { 20 | color: $grey-dk-250 !important; 21 | } 22 | 23 | .text-grey-dk-300 { 24 | color: $grey-dk-300 !important; 25 | } 26 | 27 | .text-grey-lt-000 { 28 | color: $grey-lt-000 !important; 29 | } 30 | 31 | .text-grey-lt-100 { 32 | color: $grey-lt-100 !important; 33 | } 34 | 35 | .text-grey-lt-200 { 36 | color: $grey-lt-200 !important; 37 | } 38 | 39 | .text-grey-lt-300 { 40 | color: $grey-lt-300 !important; 41 | } 42 | 43 | .text-blue-000 { 44 | color: $blue-000 !important; 45 | } 46 | 47 | .text-blue-100 { 48 | color: $blue-100 !important; 49 | } 50 | 51 | .text-blue-200 { 52 | color: $blue-200 !important; 53 | } 54 | 55 | .text-blue-300 { 56 | color: $blue-300 !important; 57 | } 58 | 59 | .text-green-000 { 60 | color: $green-000 !important; 61 | } 62 | 63 | .text-green-100 { 64 | color: $green-100 !important; 65 | } 66 | 67 | .text-green-200 { 68 | color: $green-200 !important; 69 | } 70 | 71 | .text-green-300 { 72 | color: $green-300 !important; 73 | } 74 | 75 | .text-purple-000 { 76 | color: $purple-000 !important; 77 | } 78 | 79 | .text-purple-100 { 80 | color: $purple-100 !important; 81 | } 82 | 83 | .text-purple-200 { 84 | color: $purple-200 !important; 85 | } 86 | 87 | .text-purple-300 { 88 | color: $purple-300 !important; 89 | } 90 | 91 | .text-yellow-000 { 92 | color: $yellow-000 !important; 93 | } 94 | 95 | .text-yellow-100 { 96 | color: $yellow-100 !important; 97 | } 98 | 99 | .text-yellow-200 { 100 | color: $yellow-200 !important; 101 | } 102 | 103 | .text-yellow-300 { 104 | color: $yellow-300 !important; 105 | } 106 | 107 | .text-red-000 { 108 | color: $red-000 !important; 109 | } 110 | 111 | .text-red-100 { 112 | color: $red-100 !important; 113 | } 114 | 115 | .text-red-200 { 116 | color: $red-200 !important; 117 | } 118 | 119 | .text-red-300 { 120 | color: $red-300 !important; 121 | } 122 | 123 | // Background colors 124 | 125 | .bg-grey-dk-000 { 126 | background-color: $grey-dk-000 !important; 127 | } 128 | 129 | .bg-grey-dk-100 { 130 | background-color: $grey-dk-100 !important; 131 | } 132 | 133 | .bg-grey-dk-200 { 134 | background-color: $grey-dk-200 !important; 135 | } 136 | 137 | .bg-grey-dk-250 { 138 | background-color: $grey-dk-250 !important; 139 | } 140 | 141 | .bg-grey-dk-300 { 142 | background-color: $grey-dk-300 !important; 143 | } 144 | 145 | .bg-grey-lt-000 { 146 | background-color: $grey-lt-000 !important; 147 | } 148 | 149 | .bg-grey-lt-100 { 150 | background-color: $grey-lt-100 !important; 151 | } 152 | 153 | .bg-grey-lt-200 { 154 | background-color: $grey-lt-200 !important; 155 | } 156 | 157 | .bg-grey-lt-300 { 158 | background-color: $grey-lt-300 !important; 159 | } 160 | 161 | .bg-blue-000 { 162 | background-color: $blue-000 !important; 163 | } 164 | 165 | .bg-blue-100 { 166 | background-color: $blue-100 !important; 167 | } 168 | 169 | .bg-blue-200 { 170 | background-color: $blue-200 !important; 171 | } 172 | 173 | .bg-blue-300 { 174 | background-color: $blue-300 !important; 175 | } 176 | 177 | .bg-green-000 { 178 | background-color: $green-000 !important; 179 | } 180 | 181 | .bg-green-100 { 182 | background-color: $green-100 !important; 183 | } 184 | 185 | .bg-green-200 { 186 | background-color: $green-200 !important; 187 | } 188 | 189 | .bg-green-300 { 190 | background-color: $green-300 !important; 191 | } 192 | 193 | .bg-purple-000 { 194 | background-color: $purple-000 !important; 195 | } 196 | 197 | .bg-purple-100 { 198 | background-color: $purple-100 !important; 199 | } 200 | 201 | .bg-purple-200 { 202 | background-color: $purple-200 !important; 203 | } 204 | 205 | .bg-purple-300 { 206 | background-color: $purple-300 !important; 207 | } 208 | 209 | .bg-yellow-000 { 210 | background-color: $yellow-000 !important; 211 | } 212 | 213 | .bg-yellow-100 { 214 | background-color: $yellow-100 !important; 215 | } 216 | 217 | .bg-yellow-200 { 218 | background-color: $yellow-200 !important; 219 | } 220 | 221 | .bg-yellow-300 { 222 | background-color: $yellow-300 !important; 223 | } 224 | 225 | .bg-red-000 { 226 | background-color: $red-000 !important; 227 | } 228 | 229 | .bg-red-100 { 230 | background-color: $red-100 !important; 231 | } 232 | 233 | .bg-red-200 { 234 | background-color: $red-200 !important; 235 | } 236 | 237 | .bg-red-300 { 238 | background-color: $red-300 !important; 239 | } 240 | -------------------------------------------------------------------------------- /docs/_includes/vendor/anchor_headings.html: -------------------------------------------------------------------------------- 1 | {% capture headingsWorkspace %} 2 | {% comment %} 3 | Version 1.0.3 4 | https://github.com/allejo/jekyll-anchor-headings 5 | 6 | "Be the pull request you wish to see in the world." ~Ben Balter 7 | 8 | Usage: 9 | {% include anchor_headings.html html=content %} 10 | 11 | Parameters: 12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 13 | 14 | Optional Parameters: 15 | * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content 16 | * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available 17 | * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space 18 | * anchorTitle (string) : '' - The `title` attribute that will be used for anchors 19 | * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored 20 | * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored 21 | * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content 22 | * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content 23 | 24 | Output: 25 | The original HTML with the addition of anchors inside of all of the h1-h6 headings. 26 | {% endcomment %} 27 | 28 | {% assign minHeader = include.h_min | default: 1 %} 29 | {% assign maxHeader = include.h_max | default: 6 %} 30 | {% assign beforeHeading = include.beforeHeading %} 31 | {% assign nodes = include.html | split: ' 46 | {% if headerLevel == 0 %} 47 | {% if nextChar != '<' and nextChar != '' %} 48 | {% capture node %}' | first }}>{% endcapture %} 61 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 62 | 63 | 64 | {% capture anchor %}{% endcapture %} 65 | 66 | {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} 67 | {% capture anchor %}href="#{{ html_id}}"{% endcapture %} 68 | 69 | {% if include.anchorClass %} 70 | {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} 71 | {% endif %} 72 | 73 | {% if include.anchorTitle %} 74 | {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %} 75 | {% endif %} 76 | 77 | {% capture anchor %}{{ include.anchorBody | replace: '%heading%', header | default: '' }}{% endcapture %} 78 | 79 | 80 | {% if beforeHeading %} 81 | {% capture anchor %}{{ anchor }} {% endcapture %} 82 | {% else %} 83 | {% capture anchor %} {{ anchor }}{% endcapture %} 84 | {% endif %} 85 | {% endif %} 86 | 87 | {% capture new_heading %} 88 | 6 | 7 | 8 | {% include head.html %} 9 | 10 | 11 | 12 | Link 13 | 14 | 15 | 16 |
17 | 30 |
31 |
32 | 50 |
51 | {% unless page.url == "/" %} 52 | {% if page.parent %} 53 | 64 | {% endif %} 65 | {% endunless %} 66 |
67 | {% if site.heading_anchors != false %} 68 | {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" %} 69 | {% else %} 70 | {{ content }} 71 | {% endif %} 72 | 73 | {% if page.has_children == true and page.has_toc != false %} 74 |
75 |

Table of contents

76 | {% assign children_list = site.pages | sort:"nav_order" %} 77 |
    78 | {% for child in children_list %} 79 | {% if child.parent == page.title and child.title != page.title %} 80 |
  • 81 | {{ child.title }}{% if child.summary %} - {{ child.summary }}{% endif %} 82 |
  • 83 | {% endif %} 84 | {% endfor %} 85 |
86 | {% endif %} 87 | 88 | {% if site.footer_content != nil %} 89 |
90 |
91 |

{{ site.footer_content }}

92 |
93 | {% endif %} 94 | 95 |
96 |
97 |
98 |
99 | 100 | 101 | -------------------------------------------------------------------------------- /docs/_sass/code.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Code and syntax highlighting 3 | // 4 | // stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type 5 | 6 | code { 7 | padding: 0.2em 0.15em; 8 | font-weight: 400; 9 | background-color: $code-background-color; 10 | border: $border $border-color; 11 | border-radius: $border-radius; 12 | } 13 | 14 | pre.highlight, 15 | figure.highlight { 16 | padding: $sp-3; 17 | margin-bottom: 0; 18 | -webkit-overflow-scrolling: touch; 19 | background-color: $code-background-color; 20 | 21 | code { 22 | padding: 0; 23 | border: 0; 24 | } 25 | } 26 | 27 | .highlighter-rouge { 28 | margin-bottom: $sp-3; 29 | overflow: hidden; 30 | border-radius: $border-radius; 31 | } 32 | 33 | .highlight .c { color: #586e75; } // comment // 34 | .highlight .err { color: #93a1a1; } // error // 35 | .highlight .g { color: #93a1a1; } // generic // 36 | .highlight .k { color: #859900; } // keyword // 37 | .highlight .l { color: #93a1a1; } // literal // 38 | .highlight .n { color: #93a1a1; } // name // 39 | .highlight .o { color: #859900; } // operator // 40 | .highlight .x { color: #cb4b16; } // other // 41 | .highlight .p { color: #93a1a1; } // punctuation // 42 | .highlight .cm { color: #586e75; } // comment.multiline // 43 | .highlight .cp { color: #859900; } // comment.preproc // 44 | .highlight .c1 { color: #586e75; } // comment.single // 45 | .highlight .cs { color: #859900; } // comment.special // 46 | .highlight .gd { color: #2aa198; } // generic.deleted // 47 | .highlight .ge { font-style: italic; color: #93a1a1; } // generic.emph // 48 | .highlight .gr { color: #dc322f; } // generic.error // 49 | .highlight .gh { color: #cb4b16; } // generic.heading // 50 | .highlight .gi { color: #859900; } // generic.inserted // 51 | .highlight .go { color: #93a1a1; } // generic.output // 52 | .highlight .gp { color: #93a1a1; } // generic.prompt // 53 | .highlight .gs { font-weight: bold; color: #93a1a1; } // generic.strong // 54 | .highlight .gu { color: #cb4b16; } // generic.subheading // 55 | .highlight .gt { color: #93a1a1; } // generic.traceback // 56 | .highlight .kc { color: #cb4b16; } // keyword.constant // 57 | .highlight .kd { color: #268bd2; } // keyword.declaration // 58 | .highlight .kn { color: #859900; } // keyword.namespace // 59 | .highlight .kp { color: #859900; } // keyword.pseudo // 60 | .highlight .kr { color: #268bd2; } // keyword.reserved // 61 | .highlight .kt { color: #dc322f; } // keyword.type // 62 | .highlight .ld { color: #93a1a1; } // literal.date // 63 | .highlight .m { color: #2aa198; } // literal.number // 64 | .highlight .s { color: #2aa198; } // literal.string // 65 | .highlight .na { color: #555; } // name.attribute // 66 | .highlight .nb { color: #b58900; } // name.builtin // 67 | .highlight .nc { color: #268bd2; } // name.class // 68 | .highlight .no { color: #cb4b16; } // name.constant // 69 | .highlight .nd { color: #268bd2; } // name.decorator // 70 | .highlight .ni { color: #cb4b16; } // name.entity // 71 | .highlight .ne { color: #cb4b16; } // name.exception // 72 | .highlight .nf { color: #268bd2; } // name.function // 73 | .highlight .nl { color: #555; } // name.label // 74 | .highlight .nn { color: #93a1a1; } // name.namespace // 75 | .highlight .nx { color: #555; } // name.other // 76 | .highlight .py { color: #93a1a1; } // name.property // 77 | .highlight .nt { color: #268bd2; } // name.tag // 78 | .highlight .nv { color: #268bd2; } // name.variable // 79 | .highlight .ow { color: #859900; } // operator.word // 80 | .highlight .w { color: #93a1a1; } // text.whitespace // 81 | .highlight .mf { color: #2aa198; } // literal.number.float // 82 | .highlight .mh { color: #2aa198; } // literal.number.hex // 83 | .highlight .mi { color: #2aa198; } // literal.number.integer // 84 | .highlight .mo { color: #2aa198; } // literal.number.oct // 85 | .highlight .sb { color: #586e75; } // literal.string.backtick // 86 | .highlight .sc { color: #2aa198; } // literal.string.char // 87 | .highlight .sd { color: #93a1a1; } // literal.string.doc // 88 | .highlight .s2 { color: #2aa198; } // literal.string.double // 89 | .highlight .se { color: #cb4b16; } // literal.string.escape // 90 | .highlight .sh { color: #93a1a1; } // literal.string.heredoc // 91 | .highlight .si { color: #2aa198; } // literal.string.interpol // 92 | .highlight .sx { color: #2aa198; } // literal.string.other // 93 | .highlight .sr { color: #dc322f; } // literal.string.regex // 94 | .highlight .s1 { color: #2aa198; } // literal.string.single // 95 | .highlight .ss { color: #2aa198; } // literal.string.symbol // 96 | .highlight .bp { color: #268bd2; } // name.builtin.pseudo // 97 | .highlight .vc { color: #268bd2; } // name.variable.class // 98 | .highlight .vg { color: #268bd2; } // name.variable.global // 99 | .highlight .vi { color: #268bd2; } // name.variable.instance // 100 | .highlight .il { color: #2aa198; } // literal.number.integer.long // 101 | 102 | // 103 | // Code examples (rendered) 104 | // 105 | 106 | .code-example { 107 | padding: $sp-3; 108 | margin-bottom: $sp-3; 109 | overflow: auto; 110 | border: 1px solid $border-color; 111 | border-radius: $border-radius; 112 | 113 | + .highlighter-rouge, 114 | + figure.highlight { 115 | position: relative; 116 | margin-top: -$sp-4; 117 | border-right: 1px solid $border-color; 118 | border-bottom: 1px solid $border-color; 119 | border-left: 1px solid $border-color; 120 | border-top-left-radius: 0; 121 | border-top-right-radius: 0; 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /docs/_site/index.html: -------------------------------------------------------------------------------- 1 | Home - MLOps Dashboard Link

Mockup / Illustrative

A MLOps Dashboard Automatically Created With GitHub Pages

This dashboard renders information in your repo relevant to machine learning projects automatically by using GitHub Actions and GitHub Pages.

Learn more

Sections:

  • Summary: uses the /metadata/summary.md file located your repo. This is meant to be a high level summary of your model. A recommended format for this is discussed in Model Cards for Model Reporting.

  • Reports: these pages automatically render Jupyter notebooks located in the /notebooks directory of your repo.

  • Model Timeline: this is a timeline view of relevant milestones for your ML project. This page is generated by /metadata/timeline.json in your repo, which is system generated 1.

  • Completed Pipeline Runs: This shows the most recent pipeline runs. This page is generated by /metadata/pipeline_runs.json in our repo, which is system generated 1.

  • Deploy: A click-to-deploy mechanism for others to run your training pipeline and serve your model on the infrastructure of your choice. This is under construction.


  1. This system has not been designed yet.  2


2 | -------------------------------------------------------------------------------- /docs/_site/docs/pipeline_runs/index.html: -------------------------------------------------------------------------------- 1 | Completed Pipeline Runs - MLOps Dashboard Link

Mockup / Illustrative

actions--5287272-ksygxkr 2019-10-14T21:10:18Z
Succeeded Duration: 11:43 min
actions--0fbe4ae-kollree 2019-10-10T01:04:21Z
Succeeded Duration: 12:26 min
actions--da8cdae-poevbva 2019-10-10T00:35:56Z
Failed Duration: 12:24 min
smoke-test-lnsty24x 2019-10-01T21:10:18Z
Succeeded Duration: 11:43 min
hyper-param-tuning-lfsn241 2019-9-10T08:35:56Z
Failed Duration: 12:24 min

2 | -------------------------------------------------------------------------------- /docs/_site/docs/reports/Model_Eval/index.html: -------------------------------------------------------------------------------- 1 | Model Eval - MLOps Dashboard Link

Mockup / Illustrative

Evaluate Model

Compute a confusion matrix

Normalized confusion matrix
 2 | [[0.88173203 0.09765211 0.02061586]
 3 |  [0.1303451  0.83997974 0.02967516]
 4 |  [0.27873486 0.23896011 0.48230502]]
 5 | 
 6 | 
 7 | 
 8 | 
 9 | 
10 | <matplotlib.axes._subplots.AxesSubplot at 0x7f487d90af60>
11 | 

png

Make Predictions

Using TensorFlow backend.
12 | 
issue_labeler.get_probabilities(body='Can someone please help me?', 
13 |                                 title='random stuff')
14 | 
{'bug': 0.12618249654769897,
15 |  'feature': 0.1929263472557068,
16 |  'question': 0.6808911561965942}
17 | 
issue_labeler.get_probabilities(body='It would be great to add a new button', 
18 |                                 title='requesting a button')
19 | 
{'bug': 0.019261939451098442,
20 |  'feature': 0.9305700659751892,
21 |  'question': 0.05016808584332466}
22 | 
issue_labeler.get_probabilities(body='It does` not work, I get bad errors', 
23 |                                 title='nothing works')
24 | 
{'bug': 0.9065071940422058,
25 |  'feature': 0.03202613815665245,
26 |  'question': 0.06146678701043129}
27 | 

28 | -------------------------------------------------------------------------------- /docs/_site/docs/model_timeline/index.html: -------------------------------------------------------------------------------- 1 | Model Timeline - MLOps Dashboard Link

Mockup / Illustrative

Jan 2020

increased accuracy by 2%

601423b

Deployed a model to production

demo-mlops-2

(#34)

2 days ago

Ran 25 experiments
WandB.com

2 | -------------------------------------------------------------------------------- /docs/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (6.0.2.1) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | zeitwerk (~> 2.2) 10 | addressable (2.7.0) 11 | public_suffix (>= 2.0.2, < 5.0) 12 | coffee-script (2.4.1) 13 | coffee-script-source 14 | execjs 15 | coffee-script-source (1.11.1) 16 | colorator (1.1.0) 17 | commonmarker (0.17.13) 18 | ruby-enum (~> 0.5) 19 | concurrent-ruby (1.1.5) 20 | dnsruby (1.61.3) 21 | addressable (~> 2.5) 22 | em-websocket (0.5.1) 23 | eventmachine (>= 0.12.9) 24 | http_parser.rb (~> 0.6.0) 25 | ethon (0.12.0) 26 | ffi (>= 1.3.0) 27 | eventmachine (1.2.7) 28 | execjs (2.7.0) 29 | faraday (1.0.0) 30 | multipart-post (>= 1.2, < 3) 31 | ffi (1.12.1) 32 | forwardable-extended (2.6.0) 33 | gemoji (3.0.1) 34 | github-pages (203) 35 | github-pages-health-check (= 1.16.1) 36 | jekyll (= 3.8.5) 37 | jekyll-avatar (= 0.7.0) 38 | jekyll-coffeescript (= 1.1.1) 39 | jekyll-commonmark-ghpages (= 0.1.6) 40 | jekyll-default-layout (= 0.1.4) 41 | jekyll-feed (= 0.13.0) 42 | jekyll-gist (= 1.5.0) 43 | jekyll-github-metadata (= 2.12.1) 44 | jekyll-mentions (= 1.5.1) 45 | jekyll-optional-front-matter (= 0.3.2) 46 | jekyll-paginate (= 1.1.0) 47 | jekyll-readme-index (= 0.3.0) 48 | jekyll-redirect-from (= 0.15.0) 49 | jekyll-relative-links (= 0.6.1) 50 | jekyll-remote-theme (= 0.4.1) 51 | jekyll-sass-converter (= 1.5.2) 52 | jekyll-seo-tag (= 2.6.1) 53 | jekyll-sitemap (= 1.4.0) 54 | jekyll-swiss (= 1.0.0) 55 | jekyll-theme-architect (= 0.1.1) 56 | jekyll-theme-cayman (= 0.1.1) 57 | jekyll-theme-dinky (= 0.1.1) 58 | jekyll-theme-hacker (= 0.1.1) 59 | jekyll-theme-leap-day (= 0.1.1) 60 | jekyll-theme-merlot (= 0.1.1) 61 | jekyll-theme-midnight (= 0.1.1) 62 | jekyll-theme-minimal (= 0.1.1) 63 | jekyll-theme-modernist (= 0.1.1) 64 | jekyll-theme-primer (= 0.5.4) 65 | jekyll-theme-slate (= 0.1.1) 66 | jekyll-theme-tactile (= 0.1.1) 67 | jekyll-theme-time-machine (= 0.1.1) 68 | jekyll-titles-from-headings (= 0.5.3) 69 | jemoji (= 0.11.1) 70 | kramdown (= 1.17.0) 71 | liquid (= 4.0.3) 72 | mercenary (~> 0.3) 73 | minima (= 2.5.1) 74 | nokogiri (>= 1.10.4, < 2.0) 75 | rouge (= 3.13.0) 76 | terminal-table (~> 1.4) 77 | github-pages-health-check (1.16.1) 78 | addressable (~> 2.3) 79 | dnsruby (~> 1.60) 80 | octokit (~> 4.0) 81 | public_suffix (~> 3.0) 82 | typhoeus (~> 1.3) 83 | html-pipeline (2.12.3) 84 | activesupport (>= 2) 85 | nokogiri (>= 1.4) 86 | http_parser.rb (0.6.0) 87 | i18n (0.9.5) 88 | concurrent-ruby (~> 1.0) 89 | jekyll (3.8.5) 90 | addressable (~> 2.4) 91 | colorator (~> 1.0) 92 | em-websocket (~> 0.5) 93 | i18n (~> 0.7) 94 | jekyll-sass-converter (~> 1.0) 95 | jekyll-watch (~> 2.0) 96 | kramdown (~> 1.14) 97 | liquid (~> 4.0) 98 | mercenary (~> 0.3.3) 99 | pathutil (~> 0.9) 100 | rouge (>= 1.7, < 4) 101 | safe_yaml (~> 1.0) 102 | jekyll-avatar (0.7.0) 103 | jekyll (>= 3.0, < 5.0) 104 | jekyll-coffeescript (1.1.1) 105 | coffee-script (~> 2.2) 106 | coffee-script-source (~> 1.11.1) 107 | jekyll-commonmark (1.3.1) 108 | commonmarker (~> 0.14) 109 | jekyll (>= 3.7, < 5.0) 110 | jekyll-commonmark-ghpages (0.1.6) 111 | commonmarker (~> 0.17.6) 112 | jekyll-commonmark (~> 1.2) 113 | rouge (>= 2.0, < 4.0) 114 | jekyll-default-layout (0.1.4) 115 | jekyll (~> 3.0) 116 | jekyll-feed (0.13.0) 117 | jekyll (>= 3.7, < 5.0) 118 | jekyll-gist (1.5.0) 119 | octokit (~> 4.2) 120 | jekyll-github-metadata (2.12.1) 121 | jekyll (~> 3.4) 122 | octokit (~> 4.0, != 4.4.0) 123 | jekyll-mentions (1.5.1) 124 | html-pipeline (~> 2.3) 125 | jekyll (>= 3.7, < 5.0) 126 | jekyll-octicons (9.3.1) 127 | jekyll (>= 3.6, < 5.0) 128 | octicons (= 9.3.1) 129 | jekyll-optional-front-matter (0.3.2) 130 | jekyll (>= 3.0, < 5.0) 131 | jekyll-paginate (1.1.0) 132 | jekyll-readme-index (0.3.0) 133 | jekyll (>= 3.0, < 5.0) 134 | jekyll-redirect-from (0.15.0) 135 | jekyll (>= 3.3, < 5.0) 136 | jekyll-relative-links (0.6.1) 137 | jekyll (>= 3.3, < 5.0) 138 | jekyll-remote-theme (0.4.1) 139 | addressable (~> 2.0) 140 | jekyll (>= 3.5, < 5.0) 141 | rubyzip (>= 1.3.0) 142 | jekyll-sass-converter (1.5.2) 143 | sass (~> 3.4) 144 | jekyll-seo-tag (2.6.1) 145 | jekyll (>= 3.3, < 5.0) 146 | jekyll-sitemap (1.4.0) 147 | jekyll (>= 3.7, < 5.0) 148 | jekyll-swiss (1.0.0) 149 | jekyll-theme-architect (0.1.1) 150 | jekyll (~> 3.5) 151 | jekyll-seo-tag (~> 2.0) 152 | jekyll-theme-cayman (0.1.1) 153 | jekyll (~> 3.5) 154 | jekyll-seo-tag (~> 2.0) 155 | jekyll-theme-dinky (0.1.1) 156 | jekyll (~> 3.5) 157 | jekyll-seo-tag (~> 2.0) 158 | jekyll-theme-hacker (0.1.1) 159 | jekyll (~> 3.5) 160 | jekyll-seo-tag (~> 2.0) 161 | jekyll-theme-leap-day (0.1.1) 162 | jekyll (~> 3.5) 163 | jekyll-seo-tag (~> 2.0) 164 | jekyll-theme-merlot (0.1.1) 165 | jekyll (~> 3.5) 166 | jekyll-seo-tag (~> 2.0) 167 | jekyll-theme-midnight (0.1.1) 168 | jekyll (~> 3.5) 169 | jekyll-seo-tag (~> 2.0) 170 | jekyll-theme-minimal (0.1.1) 171 | jekyll (~> 3.5) 172 | jekyll-seo-tag (~> 2.0) 173 | jekyll-theme-modernist (0.1.1) 174 | jekyll (~> 3.5) 175 | jekyll-seo-tag (~> 2.0) 176 | jekyll-theme-primer (0.5.4) 177 | jekyll (> 3.5, < 5.0) 178 | jekyll-github-metadata (~> 2.9) 179 | jekyll-seo-tag (~> 2.0) 180 | jekyll-theme-slate (0.1.1) 181 | jekyll (~> 3.5) 182 | jekyll-seo-tag (~> 2.0) 183 | jekyll-theme-tactile (0.1.1) 184 | jekyll (~> 3.5) 185 | jekyll-seo-tag (~> 2.0) 186 | jekyll-theme-time-machine (0.1.1) 187 | jekyll (~> 3.5) 188 | jekyll-seo-tag (~> 2.0) 189 | jekyll-titles-from-headings (0.5.3) 190 | jekyll (>= 3.3, < 5.0) 191 | jekyll-watch (2.2.1) 192 | listen (~> 3.0) 193 | jemoji (0.11.1) 194 | gemoji (~> 3.0) 195 | html-pipeline (~> 2.2) 196 | jekyll (>= 3.0, < 5.0) 197 | kramdown (1.17.0) 198 | liquid (4.0.3) 199 | listen (3.2.1) 200 | rb-fsevent (~> 0.10, >= 0.10.3) 201 | rb-inotify (~> 0.9, >= 0.9.10) 202 | mercenary (0.3.6) 203 | mini_portile2 (2.4.0) 204 | minima (2.5.1) 205 | jekyll (>= 3.5, < 5.0) 206 | jekyll-feed (~> 0.9) 207 | jekyll-seo-tag (~> 2.1) 208 | minitest (5.14.0) 209 | multipart-post (2.1.1) 210 | nokogiri (1.10.7) 211 | mini_portile2 (~> 2.4.0) 212 | octicons (9.3.1) 213 | nokogiri (>= 1.6.3.1) 214 | octokit (4.15.0) 215 | faraday (>= 0.9) 216 | sawyer (~> 0.8.0, >= 0.5.3) 217 | pathutil (0.16.2) 218 | forwardable-extended (~> 2.6) 219 | public_suffix (3.1.1) 220 | rb-fsevent (0.10.3) 221 | rb-inotify (0.10.1) 222 | ffi (~> 1.0) 223 | rouge (3.13.0) 224 | ruby-enum (0.7.2) 225 | i18n 226 | rubyzip (2.0.0) 227 | safe_yaml (1.0.5) 228 | sass (3.7.4) 229 | sass-listen (~> 4.0.0) 230 | sass-listen (4.0.0) 231 | rb-fsevent (~> 0.9, >= 0.9.4) 232 | rb-inotify (~> 0.9, >= 0.9.7) 233 | sawyer (0.8.2) 234 | addressable (>= 2.3.5) 235 | faraday (> 0.8, < 2.0) 236 | terminal-table (1.8.0) 237 | unicode-display_width (~> 1.1, >= 1.1.1) 238 | thread_safe (0.3.6) 239 | typhoeus (1.3.1) 240 | ethon (>= 0.9.0) 241 | tzinfo (1.2.6) 242 | thread_safe (~> 0.1) 243 | unicode-display_width (1.6.1) 244 | zeitwerk (2.2.2) 245 | 246 | PLATFORMS 247 | ruby 248 | 249 | DEPENDENCIES 250 | github-pages 251 | jekyll-octicons 252 | jekyll-relative-links 253 | 254 | BUNDLED WITH 255 | 2.1.4 256 | -------------------------------------------------------------------------------- /docs/_site/summary.html: -------------------------------------------------------------------------------- 1 | Summary - MLOps Dashboard Link

Mockup / Illustrative

  1. Model Details
  2. Intended Use
  3. Factors
  4. Metrics
  5. Training Data
  6. Ethical Considerations
  7. Caveats and Recommendations

Model Details

  • Developed by researchers at Google and the University of Toronto, 2018, v1.
  • Convolutional Neural Net.
  • Pretrained for face recognition then fine-tuned with cross-entropy loss for binary smiling classification.

Intended Use

  • Intended to be used for fun applications, such as creating cartoon smiles on real images; augmentative applications, such as providing details for people who are blind; or assisting applications such as automatically finding smiling photos.
  • Particularly intended for younger audiences.
  • Not suitable for emotion detection or determining affect; smiles were annotated based on physical appearance, and not underlying emotions.

Factors

  • Based on known problems with computer vision face technology, potential relevant factors include groups for gender, age, race, and Fitzpatrick skin type; hardware factors of camera type and lens type; and environmental factors oflighting and humidity.
  • Evaluation factors are gender and age group, as annotated in the publicly available dataset CelebA [36]. Further possible factors not currently available in a public smiling dataset. Gender and age determined by third-party annotators based on visual presentation, following a set of examples of male/female gender and young/old age. Further details available in [36].

Metrics

  • Evaluation metrics include False Positive Rate and False Negative Rate to measure disproportionate model performance errors across subgroups. False Discovery Rate and False Omission Rate, which measure the fraction of negative (not smiling) and positive (smiling) predictions that are incorrectly predicted to be positive and negative, respectively are also reported. [48]
  • Together, these four metrics provide values for different errors that can be calculated from the confusion matrix for binary classification systems.
  • These also correspond to metrics in recent definitions of “fairness” in machine learning (cf. [6, 26]), where parity across subgroups for different metrics correspond to different fairness criteria.
  • 95% confidence intervals calculated with bootstrap resampling.
  • All metrics reported at the .5 decision threshold, where all error types (FPR, FNR, FDR, FOR) are within the same range (0.04 - 0.14).

Training Data

  • CelebA [36], training data split. Evaluation Data
  • CelebA [36], test data split.
  • Chosen as a basic proof-of-concept.

Ethical Considerations

  • Faces and annotations based on public figures (celebrities). No new information is inferred or annotated.

Caveats and Recommendations

  • Does not capture race or skin type, which has been reported as a source of disproportionate errors [5].
  • Given gender classes are binary (male/not male), which we include as male/female. Further work needed to evaluate across a spectrum of genders.
  • An ideal evaluation dataset would additionally include annotations for Fitzpatrick skin type, camera details, and environment (lighting/humidity) details.

2 | -------------------------------------------------------------------------------- /docs/_sass/vendor/normalize.scss/normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.scss v0.1.0 | MIT License | based on git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 29 | * and Firefox. 30 | * Correct `block` display not defined for `main` in IE 11. 31 | */ 32 | 33 | article, 34 | aside, 35 | details, 36 | figcaption, 37 | figure, 38 | footer, 39 | header, 40 | hgroup, 41 | main, 42 | menu, 43 | nav, 44 | section, 45 | summary { 46 | display: block; 47 | } 48 | 49 | /** 50 | * 1. Correct `inline-block` display not defined in IE 8/9. 51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 52 | */ 53 | 54 | audio, 55 | canvas, 56 | progress, 57 | video { 58 | display: inline-block; /* 1 */ 59 | vertical-align: baseline; /* 2 */ 60 | } 61 | 62 | /** 63 | * Prevent modern browsers from displaying `audio` without controls. 64 | * Remove excess height in iOS 5 devices. 65 | */ 66 | 67 | audio:not([controls]) { 68 | display: none; 69 | height: 0; 70 | } 71 | 72 | /** 73 | * Address `[hidden]` styling not present in IE 8/9/10. 74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 75 | */ 76 | 77 | [hidden], 78 | template { 79 | display: none; 80 | } 81 | 82 | /* Links 83 | ========================================================================== */ 84 | 85 | /** 86 | * Remove the gray background color from active links in IE 10. 87 | */ 88 | 89 | a { 90 | background-color: transparent; 91 | } 92 | 93 | /** 94 | * Improve readability when focused and also mouse hovered in all browsers. 95 | */ 96 | 97 | a:active, 98 | a:hover { 99 | outline: 0; 100 | } 101 | 102 | /* Text-level semantics 103 | ========================================================================== */ 104 | 105 | /** 106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 107 | */ 108 | 109 | abbr[title] { 110 | border-bottom: 1px dotted; 111 | } 112 | 113 | /** 114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 115 | */ 116 | 117 | b, 118 | strong { 119 | font-weight: bold; 120 | } 121 | 122 | /** 123 | * Address styling not present in Safari and Chrome. 124 | */ 125 | 126 | dfn { 127 | font-style: italic; 128 | } 129 | 130 | /** 131 | * Address variable `h1` font-size and margin within `section` and `article` 132 | * contexts in Firefox 4+, Safari, and Chrome. 133 | */ 134 | 135 | h1 { 136 | font-size: 2em; 137 | margin: 0.67em 0; 138 | } 139 | 140 | /** 141 | * Address styling not present in IE 8/9. 142 | */ 143 | 144 | mark { 145 | background: #ff0; 146 | color: #000; 147 | } 148 | 149 | /** 150 | * Address inconsistent and variable font size in all browsers. 151 | */ 152 | 153 | small { 154 | font-size: 80%; 155 | } 156 | 157 | /** 158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 159 | */ 160 | 161 | sub, 162 | sup { 163 | font-size: 75%; 164 | line-height: 0; 165 | position: relative; 166 | vertical-align: baseline; 167 | } 168 | 169 | sup { 170 | top: -0.5em; 171 | } 172 | 173 | sub { 174 | bottom: -0.25em; 175 | } 176 | 177 | /* Embedded content 178 | ========================================================================== */ 179 | 180 | /** 181 | * Remove border when inside `a` element in IE 8/9/10. 182 | */ 183 | 184 | img { 185 | border: 0; 186 | } 187 | 188 | /** 189 | * Correct overflow not hidden in IE 9/10/11. 190 | */ 191 | 192 | svg:not(:root) { 193 | overflow: hidden; 194 | } 195 | 196 | /* Grouping content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Address margin not present in IE 8/9 and Safari. 201 | */ 202 | 203 | figure { 204 | margin: 1em 40px; 205 | } 206 | 207 | /** 208 | * Address differences between Firefox and other browsers. 209 | */ 210 | 211 | hr { 212 | -moz-box-sizing: content-box; 213 | box-sizing: content-box; 214 | height: 0; 215 | } 216 | 217 | /** 218 | * Contain overflow in all browsers. 219 | */ 220 | 221 | pre { 222 | overflow: auto; 223 | } 224 | 225 | /** 226 | * Address odd `em`-unit font size rendering in all browsers. 227 | */ 228 | 229 | code, 230 | kbd, 231 | pre, 232 | samp { 233 | font-family: monospace, monospace; 234 | font-size: 1em; 235 | } 236 | 237 | /* Forms 238 | ========================================================================== */ 239 | 240 | /** 241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 242 | * styling of `select`, unless a `border` property is set. 243 | */ 244 | 245 | /** 246 | * 1. Correct color not being inherited. 247 | * Known issue: affects color of disabled elements. 248 | * 2. Correct font properties not being inherited. 249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 250 | */ 251 | 252 | button, 253 | input, 254 | optgroup, 255 | select, 256 | textarea { 257 | color: inherit; /* 1 */ 258 | font: inherit; /* 2 */ 259 | margin: 0; /* 3 */ 260 | } 261 | 262 | /** 263 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 264 | */ 265 | 266 | button { 267 | overflow: visible; 268 | } 269 | 270 | /** 271 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 272 | * All other form control elements do not inherit `text-transform` values. 273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 274 | * Correct `select` style inheritance in Firefox. 275 | */ 276 | 277 | button, 278 | select { 279 | text-transform: none; 280 | } 281 | 282 | /** 283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 284 | * and `video` controls. 285 | * 2. Correct inability to style clickable `input` types in iOS. 286 | * 3. Improve usability and consistency of cursor style between image-type 287 | * `input` and others. 288 | */ 289 | 290 | button, 291 | html input[type="button"], /* 1 */ 292 | input[type="reset"], 293 | input[type="submit"] { 294 | -webkit-appearance: button; /* 2 */ 295 | cursor: pointer; /* 3 */ 296 | } 297 | 298 | /** 299 | * Re-set default cursor for disabled elements. 300 | */ 301 | 302 | button[disabled], 303 | html input[disabled] { 304 | cursor: default; 305 | } 306 | 307 | /** 308 | * Remove inner padding and border in Firefox 4+. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | input::-moz-focus-inner { 313 | border: 0; 314 | padding: 0; 315 | } 316 | 317 | /** 318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 319 | * the UA stylesheet. 320 | */ 321 | 322 | input { 323 | line-height: normal; 324 | } 325 | 326 | /** 327 | * It's recommended that you don't attempt to style these elements. 328 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 329 | * 330 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 331 | * 2. Remove excess padding in IE 8/9/10. 332 | */ 333 | 334 | input[type="checkbox"], 335 | input[type="radio"] { 336 | box-sizing: border-box; /* 1 */ 337 | padding: 0; /* 2 */ 338 | } 339 | 340 | /** 341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 342 | * `font-size` values of the `input`, it causes the cursor style of the 343 | * decrement button to change from `default` to `text`. 344 | */ 345 | 346 | input[type="number"]::-webkit-inner-spin-button, 347 | input[type="number"]::-webkit-outer-spin-button { 348 | height: auto; 349 | } 350 | 351 | /** 352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 354 | * (include `-moz` to future-proof). 355 | */ 356 | 357 | input[type="search"] { 358 | -webkit-appearance: textfield; /* 1 */ 359 | -moz-box-sizing: content-box; 360 | -webkit-box-sizing: content-box; /* 2 */ 361 | box-sizing: content-box; 362 | } 363 | 364 | /** 365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 366 | * Safari (but not Chrome) clips the cancel button when the search input has 367 | * padding (and `textfield` appearance). 368 | */ 369 | 370 | input[type="search"]::-webkit-search-cancel-button, 371 | input[type="search"]::-webkit-search-decoration { 372 | -webkit-appearance: none; 373 | } 374 | 375 | /** 376 | * Define consistent border, margin, and padding. 377 | */ 378 | 379 | fieldset { 380 | border: 1px solid #c0c0c0; 381 | margin: 0 2px; 382 | padding: 0.35em 0.625em 0.75em; 383 | } 384 | 385 | /** 386 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 388 | */ 389 | 390 | legend { 391 | border: 0; /* 1 */ 392 | padding: 0; /* 2 */ 393 | } 394 | 395 | /** 396 | * Remove default vertical scrollbar in IE 8/9/10/11. 397 | */ 398 | 399 | textarea { 400 | overflow: auto; 401 | } 402 | 403 | /** 404 | * Don't inherit the `font-weight` (applied by a rule above). 405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 406 | */ 407 | 408 | optgroup { 409 | font-weight: bold; 410 | } 411 | 412 | /* Tables 413 | ========================================================================== */ 414 | 415 | /** 416 | * Remove most spacing between table cells. 417 | */ 418 | 419 | table { 420 | border-collapse: collapse; 421 | border-spacing: 0; 422 | } 423 | 424 | td, 425 | th { 426 | padding: 0; 427 | } 428 | -------------------------------------------------------------------------------- /docs/docs/reports/EDA.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: EDA 4 | parent: Reports 5 | --- 6 | 7 |

Mockup / Illustrative

8 | 9 | 10 | 11 | 12 | 13 | ##
Descriptive Statistics - Housing Data
14 | 15 | ### Preview of Dataset 16 | 17 | Available at https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.tgz 18 | 19 | ### Preview of First 10 Rows 20 | 21 | Full dataset has 20640 rows, 20640 columns 22 | 23 | 24 | 25 | 26 | 27 |
28 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 |
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximity
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0NEAR BAY
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0NEAR BAY
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0NEAR BAY
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0NEAR BAY
5-122.2537.8552.0919.0213.0413.0193.04.0368269700.0NEAR BAY
6-122.2537.8452.02535.0489.01094.0514.03.6591299200.0NEAR BAY
7-122.2537.8452.03104.0687.01157.0647.03.1200241400.0NEAR BAY
8-122.2637.8442.02555.0665.01206.0595.02.0804226700.0NEAR BAY
9-122.2537.8452.03549.0707.01551.0714.03.6912261100.0NEAR BAY
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 |
198 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 |
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
count20640.00000020640.00000020640.00000020640.00000020433.00000020640.00000020640.00000020640.00000020640.000000
mean-119.56970435.63186128.6394862635.763081537.8705531425.476744499.5396803.870671206855.816909
std2.0035322.13595212.5855582181.615252421.3850701132.462122382.3297531.899822115395.615874
min-124.35000032.5400001.0000002.0000001.0000003.0000001.0000000.49990014999.000000
25%-121.80000033.93000018.0000001447.750000296.000000787.000000280.0000002.563400119600.000000
50%-118.49000034.26000029.0000002127.000000435.0000001166.000000409.0000003.534800179700.000000
75%-118.01000037.71000037.0000003148.000000647.0000001725.000000605.0000004.743250264725.000000
max-114.31000041.95000052.00000039320.0000006445.00000035682.0000006082.00000015.000100500001.000000
325 |
326 | 327 | 328 | 329 | 330 | 331 | 332 | <1H OCEAN 9136 333 | INLAND 6551 334 | NEAR OCEAN 2658 335 | NEAR BAY 2290 336 | ISLAND 5 337 | Name: ocean_proximity, dtype: int64 338 | 339 | 340 | 341 | Saving figure attribute_histogram_plots 342 | 343 | 344 | 345 | ![png](EDA_files/EDA_13_1.png) 346 | 347 | 348 | The implementation of `test_set_check()` above works fine in both Python 2 and Python 3. In earlier releases, the following implementation was proposed, which supported any hash function, but was much slower and did not support Python 2: 349 | 350 | If you want an implementation that supports any hash function and is compatible with both Python 2 and Python 3, here is one: 351 | 352 | ### Median Income 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | ![png](EDA_files/EDA_25_1.png) 363 | 364 | 365 | # Geographic Distribution 366 | 367 | 368 | ![png](EDA_files/EDA_28_0.png) 369 | 370 | 371 | ## Correlation with `median_house_value` 372 | 373 | 374 | 375 | 376 | median_house_value 1.000000 377 | median_income 0.687160 378 | total_rooms 0.135097 379 | housing_median_age 0.114110 380 | households 0.064506 381 | total_bedrooms 0.047689 382 | population -0.026920 383 | longitude -0.047432 384 | latitude -0.142724 385 | Name: median_house_value, dtype: float64 386 | 387 | 388 | 389 | ## Scatterplot Matrix 390 | 391 | Saving figure scatter_matrix_plot 392 | 393 | 394 | 395 | ![png](EDA_files/EDA_32_1.png) 396 | 397 | 398 | #### Median House Value vs. Median Income 399 | 400 | 401 | ![png](EDA_files/EDA_34_0.png) 402 | 403 | 404 | #### Scatterplot Rooms Per Household vs. Median House Value 405 | 406 | 407 | ![png](EDA_files/EDA_37_0.png) 408 | 409 | --------------------------------------------------------------------------------