RESULT: {{ prediction_text }}
77 | 78 |Note: This is not any official site.
Please, do not enter any confidential data.
{{data_hn}}
88 |{{data_ip}}
89 | 90 | -------------------------------------------------------------------------------- /Deploy-As-Service-Using-AWS-EC2/Images/Ec2Medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/Deploy-As-Service-Using-AWS-EC2/Images/Ec2Medium.png -------------------------------------------------------------------------------- /Deploy-As-Service-Using-AWS-EC2/Readme.md: -------------------------------------------------------------------------------- 1 |Workflow : The client sends a request to the API. API trigger is added to the Lambda function which results in invoking the SageMaker endpoint and returning predictions back to the client through API.
9 | 10 | > Check out our article for detailed explanation. 11 | 12 | Deploying Machine Learning Models as API using AWS 14 | 15 | 16 |PROFIT: {{ prediction_text }}
25 | 26 |NOTE : To generate requirements .txt , go to path in command prompt or Terminal and type pipreqs. 13 | 14 |
docker buid -t imagename:tag 36 | 37 | ``` 38 | docker buid -t azuremlr:latest . 39 | ``` 40 |
For More details visit Dockerizing Flask App 41 | 42 |
NOTE : Please Create your account in Docker Hub if you don't have a one
48 | 49 |I have used many online resources while creating the application and I would like to thank them . Hope you found it insightful.If you have any queries you can mail me at : kumartharun435@gmail.com . I would love to hear feedback from you to improvise it and make it better!
86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /DeployFlaskAzure/app.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | from flask import Flask, request, jsonify, render_template 4 | import pickle 5 | 6 | app = Flask(__name__,template_folder='templates') 7 | model = pickle.load(open('model.pkl', 'rb')) 8 | 9 | @app.route('/') 10 | def home(): 11 | return render_template('index.html') 12 | 13 | @app.route('/predict',methods=['POST']) 14 | def predict(): 15 | ''' 16 | For rendering results on HTML GUI 17 | ''' 18 | features = [x for x in request.form.values()] 19 | final_features = [np.array(features)] 20 | column_names=['R&DSpend','Administration','MarketingSpend','State'] 21 | final_features=pd.DataFrame(final_features,columns=column_names) 22 | prediction= model.predict(final_features) 23 | temp=0.0 24 | for i in prediction: 25 | for j in i: 26 | temp=j 27 | return render_template('index.html', prediction_text='${}'.format(temp)) 28 | 29 | 30 | if __name__ == '__main__': 31 | app.run(host='0.0.0.0') 32 | -------------------------------------------------------------------------------- /DeployFlaskAzure/model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/model.pkl -------------------------------------------------------------------------------- /DeployFlaskAzure/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.3.2 2 | seaborn==0.9.0 3 | numpy==1.22.0 4 | pandas==0.25.1 5 | matplotlib==3.0.3 6 | scikit_learn==0.23.1 7 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/css/scss-files.txt: -------------------------------------------------------------------------------- 1 | The scss source files are available in the pro version. 2 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/home.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/intro-carousel/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/intro-carousel/1.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/intro-carousel/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/intro-carousel/2.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/intro-carousel/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/intro-carousel/3.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/intro-carousel/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/intro-carousel/4.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/intro-carousel/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/intro-carousel/5.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/pop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/pop.jpg -------------------------------------------------------------------------------- /DeployFlaskAzure/static/img/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/img/preloader.gif -------------------------------------------------------------------------------- /DeployFlaskAzure/static/js/main.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | // Back to top button 4 | $(window).scroll(function () { 5 | if ($(this).scrollTop() > 100) { 6 | $('.back-to-top').fadeIn('slow'); 7 | } else { 8 | $('.back-to-top').fadeOut('slow'); 9 | } 10 | }); 11 | $('.back-to-top').click(function () { 12 | $('html, body').animate({ 13 | scrollTop: 0 14 | }, 1500, 'easeInOutExpo'); 15 | return false; 16 | }); 17 | 18 | // Stick the header at top on scroll 19 | $("#header").sticky({ 20 | topSpacing: 0, 21 | zIndex: '50' 22 | }); 23 | 24 | // Intro background carousel 25 | $("#intro-carousel").owlCarousel({ 26 | autoplay: true, 27 | dots: false, 28 | loop: true, 29 | animateOut: 'fadeOut', 30 | items: 1 31 | }); 32 | 33 | // Initiate the wowjs animation library 34 | new WOW().init(); 35 | 36 | // Initiate superfish on nav menu 37 | $('.nav-menu').superfish({ 38 | animation: { 39 | opacity: 'show' 40 | }, 41 | speed: 400 42 | }); 43 | 44 | // Mobile Navigation 45 | if ($('#nav-menu-container').length) { 46 | var $mobile_nav = $('#nav-menu-container').clone().prop({ 47 | id: 'mobile-nav' 48 | }); 49 | $mobile_nav.find('> ul').attr({ 50 | 'class': '', 51 | 'id': '' 52 | }); 53 | $('body').append($mobile_nav); 54 | $('body').prepend(''); 55 | $('body').append(''); 56 | $('#mobile-nav').find('.menu-has-children').prepend(''); 57 | 58 | $(document).on('click', '.menu-has-children i', function (e) { 59 | $(this).next().toggleClass('menu-item-active'); 60 | $(this).nextAll('ul').eq(0).slideToggle(); 61 | $(this).toggleClass("fa-chevron-up fa-chevron-down"); 62 | }); 63 | 64 | $(document).on('click', '#mobile-nav-toggle', function (e) { 65 | $('body').toggleClass('mobile-nav-active'); 66 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 67 | $('#mobile-body-overly').toggle(); 68 | }); 69 | 70 | $(document).click(function (e) { 71 | var container = $("#mobile-nav, #mobile-nav-toggle"); 72 | if (!container.is(e.target) && container.has(e.target).length === 0) { 73 | if ($('body').hasClass('mobile-nav-active')) { 74 | $('body').removeClass('mobile-nav-active'); 75 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 76 | $('#mobile-body-overly').fadeOut(); 77 | } 78 | } 79 | }); 80 | } else if ($("#mobile-nav, #mobile-nav-toggle").length) { 81 | $("#mobile-nav, #mobile-nav-toggle").hide(); 82 | } 83 | 84 | // Smooth scroll for the menu and links with .scrollto classes 85 | $('.nav-menu a, #mobile-nav a, .scrollto').on('click', function () { 86 | if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 87 | var target = $(this.hash); 88 | if (target.length) { 89 | var top_space = 0; 90 | 91 | if ($('#header').length) { 92 | top_space = $('#header').outerHeight(); 93 | 94 | if (!$('#header').hasClass('header-fixed')) { 95 | top_space = top_space - 20; 96 | } 97 | } 98 | 99 | $('html, body').animate({ 100 | scrollTop: target.offset().top - top_space 101 | }, 1500, 'easeInOutExpo'); 102 | 103 | if ($(this).parents('.nav-menu').length) { 104 | $('.nav-menu .menu-active').removeClass('menu-active'); 105 | $(this).closest('li').addClass('menu-active'); 106 | } 107 | 108 | if ($('body').hasClass('mobile-nav-active')) { 109 | $('body').removeClass('mobile-nav-active'); 110 | $('#mobile-nav-toggle i').toggleClass('fa-times fa-bars'); 111 | $('#mobile-body-overly').fadeOut(); 112 | } 113 | return false; 114 | } 115 | } 116 | }); 117 | 118 | 119 | // Porfolio - uses the magnific popup jQuery plugin 120 | $('.portfolio-popup').magnificPopup({ 121 | type: 'image', 122 | removalDelay: 300, 123 | mainClass: 'mfp-fade', 124 | gallery: { 125 | enabled: true 126 | }, 127 | zoom: { 128 | enabled: true, 129 | duration: 300, 130 | easing: 'ease-in-out', 131 | opener: function (openerElement) { 132 | return openerElement.is('img') ? openerElement : openerElement.find('img'); 133 | } 134 | } 135 | }); 136 | 137 | // Testimonials carousel (uses the Owl Carousel library) 138 | $(".testimonials-carousel").owlCarousel({ 139 | autoplay: true, 140 | dots: true, 141 | loop: true, 142 | responsive: { 143 | 0: { 144 | items: 1 145 | }, 146 | 768: { 147 | items: 2 148 | }, 149 | 900: { 150 | items: 3 151 | } 152 | } 153 | }); 154 | 155 | // Clients carousel (uses the Owl Carousel library) 156 | $(".clients-carousel").owlCarousel({ 157 | autoplay: true, 158 | dots: true, 159 | loop: true, 160 | responsive: { 161 | 0: { 162 | items: 2 163 | }, 164 | 768: { 165 | items: 4 166 | }, 167 | 900: { 168 | items: 6 169 | } 170 | } 171 | }); 172 | 173 | 174 | }); 175 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/easing/easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * Open source under the BSD License. 4 | * Copyright © 2008 George McGinley Smith 5 | * All rights reserved. 6 | * https://raw.github.com/gdsmith/jquery-easing/master/LICENSE 7 | */ 8 | 9 | (function (factory) { 10 | if (typeof define === "function" && define.amd) { 11 | define(['jquery'], function ($) { 12 | return factory($); 13 | }); 14 | } else if (typeof module === "object" && typeof module.exports === "object") { 15 | exports = factory(require('jquery')); 16 | } else { 17 | factory(jQuery); 18 | } 19 | })(function($){ 20 | 21 | // Preserve the original jQuery "swing" easing as "jswing" 22 | if (typeof $.easing !== 'undefined') { 23 | $.easing['jswing'] = $.easing['swing']; 24 | } 25 | 26 | var pow = Math.pow, 27 | sqrt = Math.sqrt, 28 | sin = Math.sin, 29 | cos = Math.cos, 30 | PI = Math.PI, 31 | c1 = 1.70158, 32 | c2 = c1 * 1.525, 33 | c3 = c1 + 1, 34 | c4 = ( 2 * PI ) / 3, 35 | c5 = ( 2 * PI ) / 4.5; 36 | 37 | // x is the fraction of animation progress, in the range 0..1 38 | function bounceOut(x) { 39 | var n1 = 7.5625, 40 | d1 = 2.75; 41 | if ( x < 1/d1 ) { 42 | return n1*x*x; 43 | } else if ( x < 2/d1 ) { 44 | return n1*(x-=(1.5/d1))*x + .75; 45 | } else if ( x < 2.5/d1 ) { 46 | return n1*(x-=(2.25/d1))*x + .9375; 47 | } else { 48 | return n1*(x-=(2.625/d1))*x + .984375; 49 | } 50 | } 51 | 52 | $.extend( $.easing, 53 | { 54 | def: 'easeOutQuad', 55 | swing: function (x) { 56 | return $.easing[$.easing.def](x); 57 | }, 58 | easeInQuad: function (x) { 59 | return x * x; 60 | }, 61 | easeOutQuad: function (x) { 62 | return 1 - ( 1 - x ) * ( 1 - x ); 63 | }, 64 | easeInOutQuad: function (x) { 65 | return x < 0.5 ? 66 | 2 * x * x : 67 | 1 - pow( -2 * x + 2, 2 ) / 2; 68 | }, 69 | easeInCubic: function (x) { 70 | return x * x * x; 71 | }, 72 | easeOutCubic: function (x) { 73 | return 1 - pow( 1 - x, 3 ); 74 | }, 75 | easeInOutCubic: function (x) { 76 | return x < 0.5 ? 77 | 4 * x * x * x : 78 | 1 - pow( -2 * x + 2, 3 ) / 2; 79 | }, 80 | easeInQuart: function (x) { 81 | return x * x * x * x; 82 | }, 83 | easeOutQuart: function (x) { 84 | return 1 - pow( 1 - x, 4 ); 85 | }, 86 | easeInOutQuart: function (x) { 87 | return x < 0.5 ? 88 | 8 * x * x * x * x : 89 | 1 - pow( -2 * x + 2, 4 ) / 2; 90 | }, 91 | easeInQuint: function (x) { 92 | return x * x * x * x * x; 93 | }, 94 | easeOutQuint: function (x) { 95 | return 1 - pow( 1 - x, 5 ); 96 | }, 97 | easeInOutQuint: function (x) { 98 | return x < 0.5 ? 99 | 16 * x * x * x * x * x : 100 | 1 - pow( -2 * x + 2, 5 ) / 2; 101 | }, 102 | easeInSine: function (x) { 103 | return 1 - cos( x * PI/2 ); 104 | }, 105 | easeOutSine: function (x) { 106 | return sin( x * PI/2 ); 107 | }, 108 | easeInOutSine: function (x) { 109 | return -( cos( PI * x ) - 1 ) / 2; 110 | }, 111 | easeInExpo: function (x) { 112 | return x === 0 ? 0 : pow( 2, 10 * x - 10 ); 113 | }, 114 | easeOutExpo: function (x) { 115 | return x === 1 ? 1 : 1 - pow( 2, -10 * x ); 116 | }, 117 | easeInOutExpo: function (x) { 118 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 119 | pow( 2, 20 * x - 10 ) / 2 : 120 | ( 2 - pow( 2, -20 * x + 10 ) ) / 2; 121 | }, 122 | easeInCirc: function (x) { 123 | return 1 - sqrt( 1 - pow( x, 2 ) ); 124 | }, 125 | easeOutCirc: function (x) { 126 | return sqrt( 1 - pow( x - 1, 2 ) ); 127 | }, 128 | easeInOutCirc: function (x) { 129 | return x < 0.5 ? 130 | ( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 : 131 | ( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2; 132 | }, 133 | easeInElastic: function (x) { 134 | return x === 0 ? 0 : x === 1 ? 1 : 135 | -pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 ); 136 | }, 137 | easeOutElastic: function (x) { 138 | return x === 0 ? 0 : x === 1 ? 1 : 139 | pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1; 140 | }, 141 | easeInOutElastic: function (x) { 142 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 143 | -( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 : 144 | pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1; 145 | }, 146 | easeInBack: function (x) { 147 | return c3 * x * x * x - c1 * x * x; 148 | }, 149 | easeOutBack: function (x) { 150 | return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 ); 151 | }, 152 | easeInOutBack: function (x) { 153 | return x < 0.5 ? 154 | ( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 : 155 | ( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2; 156 | }, 157 | easeInBounce: function (x) { 158 | return 1 - bounceOut( 1 - x ); 159 | }, 160 | easeOutBounce: bounceOut, 161 | easeInOutBounce: function (x) { 162 | return x < 0.5 ? 163 | ( 1 - bounceOut( 1 - 2 * x ) ) / 2 : 164 | ( 1 + bounceOut( 2 * x - 1 ) ) / 2; 165 | } 166 | }); 167 | 168 | }); 169 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/easing/easing.min.js: -------------------------------------------------------------------------------- 1 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})}); 2 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.eot -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.ttf -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskAzure/static/lib/ionicons/fonts/ionicons.woff -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/jquery/jquery-migrate.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Migrate v3.0.0 | (c) jQuery Foundation and other contributors | jquery.org/license */ 2 | "undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b){"use strict";function c(c){var d=b.console;e[c]||(e[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function d(a,b,d,e){Object.defineProperty(a,b,{configurable:!0,enumerable:!0,get:function(){return c(e),d}})}a.migrateVersion="3.0.0",function(){var c=b.console&&b.console.log&&function(){b.console.log.apply(b.console,arguments)},d=/^[12]\./;c&&(a&&!d.test(a.fn.jquery)||c("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),a.migrateWarnings&&c("JQMIGRATE: Migrate plugin loaded multiple times"),c("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion))}();var e={};a.migrateWarnings=[],void 0===a.migrateTrace&&(a.migrateTrace=!0),a.migrateReset=function(){e={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&c("jQuery is not compatible with Quirks Mode");var f=a.fn.init,g=a.isNumeric,h=a.find,i=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,j=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;a.fn.init=function(a){var b=Array.prototype.slice.call(arguments);return"string"==typeof a&&"#"===a&&(c("jQuery( '#' ) is not a valid selector"),b[0]=[]),f.apply(this,b)},a.fn.init.prototype=a.fn,a.find=function(a){var b=Array.prototype.slice.call(arguments);if("string"==typeof a&&i.test(a))try{document.querySelector(a)}catch(d){a=a.replace(j,function(a,b,c,d){return"["+b+c+'"'+d+'"]'});try{document.querySelector(a),c("Attribute selector with '#' must be quoted: "+b[0]),b[0]=a}catch(e){c("Attribute selector with '#' was not fixed: "+b[0])}}return h.apply(this,b)};var k;for(k in h)Object.prototype.hasOwnProperty.call(h,k)&&(a.find[k]=h[k]);a.fn.size=function(){return c("jQuery.fn.size() is deprecated; use the .length property"),this.length},a.parseJSON=function(){return c("jQuery.parseJSON is deprecated; use JSON.parse"),JSON.parse.apply(null,arguments)},a.isNumeric=function(b){function d(b){var c=b&&b.toString();return!a.isArray(b)&&c-parseFloat(c)+1>=0}var e=g(b),f=d(b);return e!==f&&c("jQuery.isNumeric() should not be called on constructed objects"),f},d(a,"unique",a.uniqueSort,"jQuery.unique is deprecated, use jQuery.uniqueSort"),d(a.expr,"filters",a.expr.pseudos,"jQuery.expr.filters is now jQuery.expr.pseudos"),d(a.expr,":",a.expr.pseudos,'jQuery.expr[":"] is now jQuery.expr.pseudos');var l=a.ajax;a.ajax=function(){var a=l.apply(this,arguments);return a.promise&&(d(a,"success",a.done,"jQXHR.success is deprecated and removed"),d(a,"error",a.fail,"jQXHR.error is deprecated and removed"),d(a,"complete",a.always,"jQXHR.complete is deprecated and removed")),a};var m=a.fn.removeAttr,n=a.fn.toggleClass,o=/\S+/g;a.fn.removeAttr=function(b){var d=this;return a.each(b.match(o),function(b,e){a.expr.match.bool.test(e)&&(c("jQuery.fn.removeAttr no longer sets boolean properties: "+e),d.prop(e,!1))}),m.apply(this,arguments)},a.fn.toggleClass=function(b){return void 0!==b&&"boolean"!=typeof b?n.apply(this,arguments):(c("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var c=this.getAttribute&&this.getAttribute("class")||"";c&&a.data(this,"__className__",c),this.setAttribute&&this.setAttribute("class",c||b===!1?"":a.data(this,"__className__")||"")}))};var p=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return p=!0,a=d.apply(this,arguments),p=!1,a})}),a.swap=function(a,b,d,e){var f,g,h={};p||c("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=d.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f};var q=a.data;a.data=function(b,d,e){var f;return d&&d!==a.camelCase(d)&&(f=a.hasData(b)&&q.call(this,b),f&&d in f)?(c("jQuery.data() always sets/gets camelCased names: "+d),arguments.length>2&&(f[d]=e),f[d]):q.apply(this,arguments)};var r=a.Tween.prototype.run;a.Tween.prototype.run=function(b){a.easing[this.easing].length>1&&(c('easing function "jQuery.easing.'+this.easing.toString()+'" should use only first argument'),a.easing[this.easing]=a.easing[this.easing].bind(a.easing,b,this.options.duration*b,0,1,this.options.duration)),r.apply(this,arguments)};var s=a.fn.load,t=a.event.fix;a.event.props=[],a.event.fixHooks={},a.event.fix=function(b){var d,e=b.type,f=this.fixHooks[e],g=a.event.props;if(g.length)for(c("jQuery.event.props are deprecated and removed: "+g.join());g.length;)a.event.addProp(g.pop());if(f&&!f._migrated_&&(f._migrated_=!0,c("jQuery.event.fixHooks are deprecated and removed: "+e),(g=f.props)&&g.length))for(;g.length;)a.event.addProp(g.pop());return d=t.call(this,b),f&&f.filter?f.filter(d,b):d},a.each(["load","unload","error"],function(b,d){a.fn[d]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===d&&"string"==typeof a[0]?s.apply(this,a):(c("jQuery.fn."+d+"() is deprecated"),a.splice(0,0,d),arguments.length?this.on.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a(function(){a(document).triggerHandler("ready")}),a.event.special.ready={setup:function(){this===document&&c("'ready' event is deprecated")}},a.fn.extend({bind:function(a,b,d){return c("jQuery.fn.bind() is deprecated"),this.on(a,null,b,d)},unbind:function(a,b){return c("jQuery.fn.unbind() is deprecated"),this.off(a,null,b)},delegate:function(a,b,d,e){return c("jQuery.fn.delegate() is deprecated"),this.on(b,a,d,e)},undelegate:function(a,b,d){return c("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(a,"**"):this.off(b,a||"**",d)}});var u=a.fn.offset;a.fn.offset=function(){var b,d=this[0],e={top:0,left:0};return d&&d.nodeType?(b=(d.ownerDocument||document).documentElement,a.contains(b,d)?u.apply(this,arguments):(c("jQuery.fn.offset() requires an element connected to a document"),e)):(c("jQuery.fn.offset() requires a valid DOM element"),e)};var v=a.param;a.param=function(b,d){var e=a.ajaxSettings&&a.ajaxSettings.traditional;return void 0===d&&e&&(c("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),d=e),v.call(this,b,d)};var w=a.fn.andSelf||a.fn.addBack;a.fn.andSelf=function(){return c("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)};var x=a.Deferred,y=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var d=x(),e=d.promise();return d.pipe=e.pipe=function(){var b=arguments;return c("deferred.pipe() is deprecated"),a.Deferred(function(c){a.each(y,function(f,g){var h=a.isFunction(b[f])&&b[f];d[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g[0]+"With"](this===e?c.promise():this,h?[b]:arguments)})}),b=null}).promise()},b&&b.call(d,d),d}}(jQuery,window); -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/magnific-popup/magnific-popup.css: -------------------------------------------------------------------------------- 1 | /* Magnific Popup CSS */ 2 | .mfp-bg { 3 | top: 0; 4 | left: 0; 5 | width: 100%; 6 | height: 100%; 7 | z-index: 1042; 8 | overflow: hidden; 9 | position: fixed; 10 | background: #0b0b0b; 11 | opacity: 0.8; } 12 | 13 | .mfp-wrap { 14 | top: 0; 15 | left: 0; 16 | width: 100%; 17 | height: 100%; 18 | z-index: 1043; 19 | position: fixed; 20 | outline: none !important; 21 | -webkit-backface-visibility: hidden; } 22 | 23 | .mfp-container { 24 | text-align: center; 25 | position: absolute; 26 | width: 100%; 27 | height: 100%; 28 | left: 0; 29 | top: 0; 30 | padding: 0 8px; 31 | box-sizing: border-box; } 32 | 33 | .mfp-container:before { 34 | content: ''; 35 | display: inline-block; 36 | height: 100%; 37 | vertical-align: middle; } 38 | 39 | .mfp-align-top .mfp-container:before { 40 | display: none; } 41 | 42 | .mfp-content { 43 | position: relative; 44 | display: inline-block; 45 | vertical-align: middle; 46 | margin: 0 auto; 47 | text-align: left; 48 | z-index: 1045; } 49 | 50 | .mfp-inline-holder .mfp-content, 51 | .mfp-ajax-holder .mfp-content { 52 | width: 100%; 53 | cursor: auto; } 54 | 55 | .mfp-ajax-cur { 56 | cursor: progress; } 57 | 58 | .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { 59 | cursor: -moz-zoom-out; 60 | cursor: -webkit-zoom-out; 61 | cursor: zoom-out; } 62 | 63 | .mfp-zoom { 64 | cursor: pointer; 65 | cursor: -webkit-zoom-in; 66 | cursor: -moz-zoom-in; 67 | cursor: zoom-in; } 68 | 69 | .mfp-auto-cursor .mfp-content { 70 | cursor: auto; } 71 | 72 | .mfp-close, 73 | .mfp-arrow, 74 | .mfp-preloader, 75 | .mfp-counter { 76 | -webkit-user-select: none; 77 | -moz-user-select: none; 78 | user-select: none; } 79 | 80 | .mfp-loading.mfp-figure { 81 | display: none; } 82 | 83 | .mfp-hide { 84 | display: none !important; } 85 | 86 | .mfp-preloader { 87 | color: #CCC; 88 | position: absolute; 89 | top: 50%; 90 | width: auto; 91 | text-align: center; 92 | margin-top: -0.8em; 93 | left: 8px; 94 | right: 8px; 95 | z-index: 1044; } 96 | .mfp-preloader a { 97 | color: #CCC; } 98 | .mfp-preloader a:hover { 99 | color: #FFF; } 100 | 101 | .mfp-s-ready .mfp-preloader { 102 | display: none; } 103 | 104 | .mfp-s-error .mfp-content { 105 | display: none; } 106 | 107 | button.mfp-close, 108 | button.mfp-arrow { 109 | overflow: visible; 110 | cursor: pointer; 111 | background: transparent; 112 | border: 0; 113 | -webkit-appearance: none; 114 | display: block; 115 | outline: none; 116 | padding: 0; 117 | z-index: 1046; 118 | box-shadow: none; 119 | touch-action: manipulation; } 120 | 121 | button::-moz-focus-inner { 122 | padding: 0; 123 | border: 0; } 124 | 125 | .mfp-close { 126 | width: 44px; 127 | height: 44px; 128 | line-height: 44px; 129 | position: absolute; 130 | right: 0; 131 | top: 0; 132 | text-decoration: none; 133 | text-align: center; 134 | opacity: 0.65; 135 | padding: 0 0 18px 10px; 136 | color: #FFF; 137 | font-style: normal; 138 | font-size: 28px; 139 | font-family: Arial, Baskerville, monospace; } 140 | .mfp-close:hover, 141 | .mfp-close:focus { 142 | opacity: 1; } 143 | .mfp-close:active { 144 | top: 1px; } 145 | 146 | .mfp-close-btn-in .mfp-close { 147 | color: #333; } 148 | 149 | .mfp-image-holder .mfp-close, 150 | .mfp-iframe-holder .mfp-close { 151 | color: #FFF; 152 | right: -6px; 153 | text-align: right; 154 | padding-right: 6px; 155 | width: 100%; } 156 | 157 | .mfp-counter { 158 | position: absolute; 159 | top: 0; 160 | right: 0; 161 | color: #CCC; 162 | font-size: 12px; 163 | line-height: 18px; 164 | white-space: nowrap; } 165 | 166 | .mfp-arrow { 167 | position: absolute; 168 | opacity: 0.65; 169 | margin: 0; 170 | top: 50%; 171 | margin-top: -55px; 172 | padding: 0; 173 | width: 90px; 174 | height: 110px; 175 | -webkit-tap-highlight-color: transparent; } 176 | .mfp-arrow:active { 177 | margin-top: -54px; } 178 | .mfp-arrow:hover, 179 | .mfp-arrow:focus { 180 | opacity: 1; } 181 | .mfp-arrow:before, 182 | .mfp-arrow:after { 183 | content: ''; 184 | display: block; 185 | width: 0; 186 | height: 0; 187 | position: absolute; 188 | left: 0; 189 | top: 0; 190 | margin-top: 35px; 191 | margin-left: 35px; 192 | border: medium inset transparent; } 193 | .mfp-arrow:after { 194 | border-top-width: 13px; 195 | border-bottom-width: 13px; 196 | top: 8px; } 197 | .mfp-arrow:before { 198 | border-top-width: 21px; 199 | border-bottom-width: 21px; 200 | opacity: 0.7; } 201 | 202 | .mfp-arrow-left { 203 | left: 0; } 204 | .mfp-arrow-left:after { 205 | border-right: 17px solid #FFF; 206 | margin-left: 31px; } 207 | .mfp-arrow-left:before { 208 | margin-left: 25px; 209 | border-right: 27px solid #3F3F3F; } 210 | 211 | .mfp-arrow-right { 212 | right: 0; } 213 | .mfp-arrow-right:after { 214 | border-left: 17px solid #FFF; 215 | margin-left: 39px; } 216 | .mfp-arrow-right:before { 217 | border-left: 27px solid #3F3F3F; } 218 | 219 | .mfp-iframe-holder { 220 | padding-top: 40px; 221 | padding-bottom: 40px; } 222 | .mfp-iframe-holder .mfp-content { 223 | line-height: 0; 224 | width: 100%; 225 | max-width: 900px; } 226 | .mfp-iframe-holder .mfp-close { 227 | top: -40px; } 228 | 229 | .mfp-iframe-scaler { 230 | width: 100%; 231 | height: 0; 232 | overflow: hidden; 233 | padding-top: 56.25%; } 234 | .mfp-iframe-scaler iframe { 235 | position: absolute; 236 | display: block; 237 | top: 0; 238 | left: 0; 239 | width: 100%; 240 | height: 100%; 241 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); 242 | background: #000; } 243 | 244 | /* Main image in popup */ 245 | img.mfp-img { 246 | width: auto; 247 | max-width: 100%; 248 | height: auto; 249 | display: block; 250 | line-height: 0; 251 | box-sizing: border-box; 252 | padding: 40px 0 40px; 253 | margin: 0 auto; } 254 | 255 | /* The shadow behind the image */ 256 | .mfp-figure { 257 | line-height: 0; } 258 | .mfp-figure:after { 259 | content: ''; 260 | position: absolute; 261 | left: 0; 262 | top: 40px; 263 | bottom: 40px; 264 | display: block; 265 | right: 0; 266 | width: auto; 267 | height: auto; 268 | z-index: -1; 269 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); 270 | background: #444; } 271 | .mfp-figure small { 272 | color: #BDBDBD; 273 | display: block; 274 | font-size: 12px; 275 | line-height: 14px; } 276 | .mfp-figure figure { 277 | margin: 0; } 278 | 279 | .mfp-bottom-bar { 280 | margin-top: -36px; 281 | position: absolute; 282 | top: 100%; 283 | left: 0; 284 | width: 100%; 285 | cursor: auto; } 286 | 287 | .mfp-title { 288 | text-align: left; 289 | line-height: 18px; 290 | color: #F3F3F3; 291 | word-wrap: break-word; 292 | padding-right: 36px; } 293 | 294 | .mfp-image-holder .mfp-content { 295 | max-width: 100%; } 296 | 297 | .mfp-gallery .mfp-image-holder .mfp-figure { 298 | cursor: pointer; } 299 | 300 | @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { 301 | /** 302 | * Remove all paddings around the image on small screen 303 | */ 304 | .mfp-img-mobile .mfp-image-holder { 305 | padding-left: 0; 306 | padding-right: 0; } 307 | .mfp-img-mobile img.mfp-img { 308 | padding: 0; } 309 | .mfp-img-mobile .mfp-figure:after { 310 | top: 0; 311 | bottom: 0; } 312 | .mfp-img-mobile .mfp-figure small { 313 | display: inline; 314 | margin-left: 5px; } 315 | .mfp-img-mobile .mfp-bottom-bar { 316 | background: rgba(0, 0, 0, 0.6); 317 | bottom: 0; 318 | margin: 0; 319 | top: auto; 320 | padding: 3px 5px; 321 | position: fixed; 322 | box-sizing: border-box; } 323 | .mfp-img-mobile .mfp-bottom-bar:empty { 324 | padding: 0; } 325 | .mfp-img-mobile .mfp-counter { 326 | right: 5px; 327 | top: 3px; } 328 | .mfp-img-mobile .mfp-close { 329 | top: 0; 330 | right: 0; 331 | width: 35px; 332 | height: 35px; 333 | line-height: 35px; 334 | background: rgba(0, 0, 0, 0.6); 335 | position: fixed; 336 | text-align: center; 337 | padding: 0; } } 338 | 339 | @media all and (max-width: 900px) { 340 | .mfp-arrow { 341 | -webkit-transform: scale(0.75); 342 | transform: scale(0.75); } 343 | .mfp-arrow-left { 344 | -webkit-transform-origin: 0; 345 | transform-origin: 0; } 346 | .mfp-arrow-right { 347 | -webkit-transform-origin: 100%; 348 | transform-origin: 100%; } 349 | .mfp-container { 350 | padding-left: 6px; 351 | padding-right: 6px; } } 352 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/owlcarousel/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Owl 2 | Modified work Copyright 2016-2018 David Deutsch 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /DeployFlaskAzure/static/lib/owlcarousel/README.md: -------------------------------------------------------------------------------- 1 | # Owl Carousel 2 2 | 3 | Touch enabled [jQuery](https://jquery.com/) plugin that lets you create a beautiful, responsive carousel slider. **To get started, check out https://owlcarousel2.github.io/OwlCarousel2/.** 4 | 5 | ## Quick start 6 | 7 | ### Install 8 | 9 | This package can be installed with: 10 | 11 | - [npm](https://www.npmjs.com/package/owl.carousel): `npm install --save owl.carousel` or `yarn add owl.carousel jquery` 12 | - [bower](http://bower.io/search/?q=owl.carousel): `bower install --save owl.carousel` 13 | 14 | Or download the [latest release](https://github.com/OwlCarousel2/OwlCarousel2/releases). 15 | 16 | ### Load 17 | 18 | #### Webpack 19 | 20 | Add jQuery via the "webpack.ProvidePlugin" to your webpack configuration: 21 | 22 | const webpack = require('webpack'); 23 | 24 | //... 25 | plugins: [ 26 | new webpack.ProvidePlugin({ 27 | $: 'jquery', 28 | jQuery: 'jquery', 29 | 'window.jQuery': 'jquery' 30 | }), 31 | ], 32 | //... 33 | 34 | Load the required stylesheet and JS: 35 | 36 | ```js 37 | import 'owl.carousel/dist/assets/owl.carousel.css'; 38 | import 'owl.carousel'; 39 | ``` 40 | 41 | #### Static HTML 42 | 43 | Put the required stylesheet at the [top](https://developer.yahoo.com/performance/rules.html#css_top) of your markup: 44 | 45 | ```html 46 | 47 | ``` 48 | 49 | ```html 50 | 51 | ``` 52 | 53 | **NOTE:** If you want to use the default navigation styles, you will also need to include `owl.theme.default.css`. 54 | 55 | 56 | Put the script at the [bottom](https://developer.yahoo.com/performance/rules.html#js_bottom) of your markup right after jQuery: 57 | 58 | ```html 59 | 60 | 61 | ``` 62 | 63 | ```html 64 | 65 | 66 | ``` 67 | 68 | ### Usage 69 | 70 | Wrap your items (`div`, `a`, `img`, `span`, `li` etc.) with a container element (`div`, `ul` etc.). Only the class `owl-carousel` is mandatory to apply proper styles: 71 | 72 | ```html 73 |NOTE : To generate requirements .txt , go to path in command prompt or Terminal and type pipreqs 13 | 14 | >Add These in your requirements.txt as these ensure proper deployment in Heroku cloud. 15 | 16 | ``` 17 | gunicorn==19.9.0 18 | itsdangerous==1.1.0 19 | Jinja2==2.10.1 20 | MarkupSafe==1.1.1 21 | Werkzeug==0.15.5 22 | ``` 23 | 24 |
In My repo My python name is app.py and application name is app.
34 | 35 |Upload These Files in Git Repo
36 | 37 | ``` 38 | model.pkl 39 | app.py 40 | requirements.txt 41 | Procfile 42 | templates 43 | ``` 44 | 45 | 46 |Give a name to your app and create
48 |Please Refer the Structure
55 |A Link Will be Generated after sucessful Deployment like this https://tharun3.herokuapp.com
61 | 62 |Hope you found it insightful. I would love to hear feedback from you to improvise it and make it better!
74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /DeployFlaskHeroku/app.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | from flask import Flask, request, jsonify, render_template 4 | import pickle 5 | 6 | app = Flask(__name__,template_folder='templates') 7 | model = pickle.load(open('model.pkl', 'rb')) 8 | 9 | @app.route('/') 10 | def home(): 11 | return render_template('index.html') 12 | 13 | @app.route('/predict',methods=['POST']) 14 | def predict(): 15 | ''' 16 | For rendering results on HTML GUI 17 | ''' 18 | int_features = [float(x) for x in request.form.values()] 19 | final_features = [np.array(int_features)] 20 | prediction = model.predict(final_features) 21 | result=0.0 22 | for i in prediction: 23 | for j in i: 24 | result=j 25 | 26 | return render_template('index.html', prediction_text='Employee Salary should be $ {:.2f}'.format(result*100)) 27 | 28 | 29 | if __name__ == '__main__': 30 | app.run(port = 5000, debug=True) 31 | -------------------------------------------------------------------------------- /DeployFlaskHeroku/model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developers-cosmos/DeployMachineLearningModels/296a46a61b7e618fac750a580f68d2bda75621f5/DeployFlaskHeroku/model.pkl -------------------------------------------------------------------------------- /DeployFlaskHeroku/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.3.2 2 | gunicorn==19.9.0 3 | itsdangerous==1.1.0 4 | Jinja2==2.11.3 5 | MarkupSafe==1.1.1 6 | Werkzeug==2.2.3 7 | numpy>=1.9.2 8 | scipy>=0.15.1 9 | scikit-learn>=0.18 10 | matplotlib>=1.4.3 11 | pandas>=0.19 12 | 13 | -------------------------------------------------------------------------------- /DeployFlaskHeroku/slr.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Tue Dec 24 23:27:24 2019 4 | 5 | @author: kumar 6 | """ 7 | 8 | import pandas as pd 9 | import numpy as np 10 | import matplotlib.pyplot as plt 11 | import seaborn as sns 12 | import statsmodels.formula.api as smf 13 | import statistics as sts 14 | import pylab 15 | 16 | dataset=pd.read_csv("C:\\Users\\kumar\\PythonAssign\\Linear\\Linear\\Datasets\\Salary_Data.csv") 17 | dataset.columns 18 | import statsmodels.formula.api as smf 19 | model=smf.ols("Salary~YearsExperience",data=dataset).fit() 20 | pred=model.predict(dataset) 21 | dataset_binary = dataset[['YearsExperience', 'Salary']] 22 | X = np.array(dataset_binary['YearsExperience']).reshape(-1, 1) 23 | y = np.array(dataset_binary['Salary']).reshape(-1, 1) 24 | y=np.log(dataset_binary.Salary) 25 | y=np.array(y).reshape(-1,1) 26 | from sklearn.model_selection import train_test_split 27 | x_train, x_test, y_train, y_test = train_test_split(X,y, test_size=0.3, random_state=42) 28 | from sklearn import linear_model 29 | regressor= linear_model.LinearRegression() 30 | regressor.fit(x_train,y_train) 31 | import pickle 32 | pickle.dump(regressor, open('model.pkl', 'wb')) 33 | model=pickle.load(open('model.pkl','rb')) -------------------------------------------------------------------------------- /DeployFlaskHeroku/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Imagine You built an Optimized Model and got an accuracy of x%. You stop the Process , Continue to next Model. But in Real Case Scenarios, Bringing Models into Production and Sharing Business insights is Important.
4 | 5 | >Don''t Know How to Deploy? 6 | 7 |Data scientists build Machine learning models in jupyter lab, google colab and the likes, Machine learning engineers take the built model into production. 14 | 15 | Deployment of an ML-model simply means the integration of the model into an existing production environment which can take in an input and return an output that can be used in making practical business decisions. 16 |
17 | 18 |Platform-as-a-service provides a framework for developers to create their own applications. Essential, PaaS gives developers an online platform to create and manage software without worrying about maintaining everything else. Users manage the applications and data they create and store while the provider handles all the rest. PaaS offerings are built on virtualizations and often come with services to aid in testing and deploying applications.
35 | 36 |Infrastructure-as-a-service offers the most management responsibilities for users. IaaS is a fully self-service model where the provider delivers infrastructure resources via virtualization technologies. IaaS comprises scalable computing, storage, and security capabilities accessed on an API or dashboard. Users manage the data infrastructure themselves without having to worry about physical installations. 47 | 48 | With IaaS, users have the most control over the resources provided to them. IaaS offers the systems needed to deploy applications and software without the need to maintain physical hardware. This means, though, that users need to ensure they handle the runtime and OS securely in order to avoid distributing harmful software. IaaS eliminates the physical aspect of owning and operating data centers while still requiring the same safety and security protocols.
49 | 50 |I have used many online resources while creating the application and I would like to thank them . Hope you found it insightful.If you have any queries you can mail me at : kumartharun435@gmail.com . I would love to hear feedback from you to improvise it and make it better!
56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | --------------------------------------------------------------------------------