diff --git a/Week_00/00_Overview.html b/Week_00/00_Overview.html index f32c6c4..32f5f78 100644 --- a/Week_00/00_Overview.html +++ b/Week_00/00_Overview.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_00/00a_DailyChallenge.html b/Week_00/00a_DailyChallenge.html index 0569420..28a4370 100644 --- a/Week_00/00a_DailyChallenge.html +++ b/Week_00/00a_DailyChallenge.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_00/00b_DailyResources.html b/Week_00/00b_DailyResources.html index fb10a30..7ab0785 100644 --- a/Week_00/00b_DailyResources.html +++ b/Week_00/00b_DailyResources.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_00/01_Errata.html b/Week_00/01_Errata.html index ba80109..0c625b8 100644 --- a/Week_00/01_Errata.html +++ b/Week_00/01_Errata.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/001_Overview.html b/Week_01/001_Overview.html index a02665a..10c38a0 100644 --- a/Week_01/001_Overview.html +++ b/Week_01/001_Overview.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/Lesson_01.html b/Week_01/Lesson_01.html index 10c8f08..2f606a3 100644 --- a/Week_01/Lesson_01.html +++ b/Week_01/Lesson_01.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/Lesson_02.html b/Week_01/Lesson_02.html index e987c1c..d11db79 100644 --- a/Week_01/Lesson_02.html +++ b/Week_01/Lesson_02.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/Lesson_03.html b/Week_01/Lesson_03.html index f5524d4..f42ef04 100644 --- a/Week_01/Lesson_03.html +++ b/Week_01/Lesson_03.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/Lesson_04.html b/Week_01/Lesson_04.html index 0a32004..613f4af 100644 --- a/Week_01/Lesson_04.html +++ b/Week_01/Lesson_04.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_01/Lesson_05.html b/Week_01/Lesson_05.html index d3e83c0..bc03947 100644 --- a/Week_01/Lesson_05.html +++ b/Week_01/Lesson_05.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -778,7 +779,7 @@

    Standard Library Highlights -
    0.6508227309087278
    +
    0.11290791626756647
     
    @@ -844,7 +845,7 @@

    Standard Library Highlights -
    2024-01-30 09:22:01.276254
    +
    2024-01-31 08:52:49.083772
     
    @@ -1167,8 +1168,8 @@

    Basic Quiz Game
    What is the capital of France?
    -a. London
    -b. Paris
    +a. Paris
    +b. London
     c. Rome
     
    @@ -1208,9 +1209,9 @@

    Basic Quiz Game
    What is the capital of France?
    -a. Rome
    -b. Paris
    -c. London
    +a. London
    +b. Rome
    +c. Paris
     
    ---------------------------------------------------------------------------
    @@ -1249,9 +1250,9 @@ 

    Basic Quiz Game
    What is the capital of France?
    -a. Paris
    -b. London
    -c. Rome
    +a. London
    +b. Rome
    +c. Paris
     
    ---------------------------------------------------------------------------
    @@ -1291,8 +1292,8 @@ 

    Basic Quiz Game
    What is the capital of France?
     a. Rome
    -b. Paris
    -c. London
    +b. London
    +c. Paris
     
    ---------------------------------------------------------------------------
    diff --git a/Week_02/002_Overview.html b/Week_02/002_Overview.html
    index 3613209..1c7b0e7 100644
    --- a/Week_02/002_Overview.html
    +++ b/Week_02/002_Overview.html
    @@ -259,6 +259,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_02/Lesson_06.html b/Week_02/Lesson_06.html index e6cc40b..ae7d1be 100644 --- a/Week_02/Lesson_06.html +++ b/Week_02/Lesson_06.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_02/Lesson_07.html b/Week_02/Lesson_07.html index 154c1f9..f75a03d 100644 --- a/Week_02/Lesson_07.html +++ b/Week_02/Lesson_07.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -741,15 +742,15 @@

    Matrix Dot Product (Element-wise Product):Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_02/Lesson_09.html b/Week_02/Lesson_09.html index ff91e91..568f967 100644 --- a/Week_02/Lesson_09.html +++ b/Week_02/Lesson_09.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_02/Lesson_10.html b/Week_02/Lesson_10.html index c1ab9e8..57eafa7 100644 --- a/Week_02/Lesson_10.html +++ b/Week_02/Lesson_10.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -595,7 +596,7 @@

    Step 1: Import Necessary Libraries -

    Poisson Distribution Example

    @@ -702,7 +703,7 @@

    Step 3: Understanding Distributions -../_images/f471f48523b4b750801da5035d60e32b3d9fa7f967a86460fac3a817493a2910.png +../_images/8c3a0d5ed06805763b5404ef2a3b932553e09a5d3a21332e387e2d8401ad344f.png

    diff --git a/Week_03/003_Overview.html b/Week_03/003_Overview.html index d40ecf5..ab0a82e 100644 --- a/Week_03/003_Overview.html +++ b/Week_03/003_Overview.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_03/Lesson_11.html b/Week_03/Lesson_11.html index cbab5d9..d5f4122 100644 --- a/Week_03/Lesson_11.html +++ b/Week_03/Lesson_11.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -598,7 +599,7 @@

    Setup for Activities

    -
    /tmp/ipykernel_237615/2223182689.py:3: DeprecationWarning: 
    +
    /tmp/ipykernel_288486/2223182689.py:3: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    diff --git a/Week_03/Lesson_12.html b/Week_03/Lesson_12.html
    index e043166..d8257d6 100644
    --- a/Week_03/Lesson_12.html
    +++ b/Week_03/Lesson_12.html
    @@ -261,6 +261,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_03/Lesson_12solution.html b/Week_03/Lesson_12solution.html index e4a845c..b5c1723 100644 --- a/Week_03/Lesson_12solution.html +++ b/Week_03/Lesson_12solution.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -603,7 +604,7 @@

    Objective -
    /tmp/ipykernel_237648/2223182689.py:3: DeprecationWarning: 
    +
    /tmp/ipykernel_288519/2223182689.py:3: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    diff --git a/Week_03/Lesson_13.html b/Week_03/Lesson_13.html
    index 0f49dd0..935bdd9 100644
    --- a/Week_03/Lesson_13.html
    +++ b/Week_03/Lesson_13.html
    @@ -259,6 +259,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -649,7 +650,7 @@

    Step 1: Load and Explore the Dataset
    /tmp/ipykernel_237687/245541981.py:1: DeprecationWarning: 
    +
    -
    /tmp/ipykernel_237687/684399944.py:1: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
    +
    /tmp/ipykernel_288555/684399944.py:1: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
     The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.
     
     For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.
     
     
       titanic_data['Age'].fillna(titanic_data['Age'].median(), inplace=True)
    -/tmp/ipykernel_237687/684399944.py:3: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
    +/tmp/ipykernel_288555/684399944.py:3: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
     The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.
     
     For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.
    diff --git a/Week_03/Lesson_14.html b/Week_03/Lesson_14.html
    index 796e91c..9113cd1 100644
    --- a/Week_03/Lesson_14.html
    +++ b/Week_03/Lesson_14.html
    @@ -261,6 +261,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -871,7 +872,7 @@

    Best Practices and Considerations
    /tmp/ipykernel_237713/2131166956.py:1: DeprecationWarning: 
    +
    /tmp/ipykernel_288580/2131166956.py:1: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    @@ -1127,7 +1128,7 @@ 

    Step 8: Statistical Summary Comparison -
    /tmp/ipykernel_237713/1279951594.py:6: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
    +
    /tmp/ipykernel_288580/1279951594.py:6: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
     The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.
     
     For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.
    diff --git a/Week_03/Lesson_15.html b/Week_03/Lesson_15.html
    index bd48b9a..bd76991 100644
    --- a/Week_03/Lesson_15.html
    +++ b/Week_03/Lesson_15.html
    @@ -259,6 +259,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -751,7 +752,7 @@

    Step 1: Load the necessary libraries -
    /tmp/ipykernel_237751/3916798240.py:2: DeprecationWarning: 
    +
    /tmp/ipykernel_288616/3916798240.py:2: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    diff --git a/Week_04/004_Overview.html b/Week_04/004_Overview.html
    index 2095142..f512db4 100644
    --- a/Week_04/004_Overview.html
    +++ b/Week_04/004_Overview.html
    @@ -259,6 +259,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_04/Lesson_16.html b/Week_04/Lesson_16.html index a4f3666..7ce5fa3 100644 --- a/Week_04/Lesson_16.html +++ b/Week_04/Lesson_16.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -581,7 +582,7 @@

    Prerequisites -
    /tmp/ipykernel_237786/955872667.py:2: DeprecationWarning: 
    +
    /tmp/ipykernel_288649/955872667.py:2: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    diff --git a/Week_04/Lesson_17.html b/Week_04/Lesson_17.html
    index 0c5b0cf..14b57bc 100644
    --- a/Week_04/Lesson_17.html
    +++ b/Week_04/Lesson_17.html
    @@ -261,6 +261,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -583,7 +584,7 @@

    Prerequisites -
    /tmp/ipykernel_237837/955872667.py:2: DeprecationWarning: 
    +
    /tmp/ipykernel_288689/955872667.py:2: DeprecationWarning: 
     Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
     (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
     but was not found to be installed on your system.
    diff --git a/Week_04/Lesson_18.html b/Week_04/Lesson_18.html
    index c7f2ab6..a96f880 100644
    --- a/Week_04/Lesson_18.html
    +++ b/Week_04/Lesson_18.html
    @@ -259,6 +259,7 @@
     
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_04/Lesson_19.html b/Week_04/Lesson_19.html index 9befee1..9719ec4 100644 --- a/Week_04/Lesson_19.html +++ b/Week_04/Lesson_19.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_04/Lesson_20.html b/Week_04/Lesson_20.html index 14449a6..7b2fd47 100644 --- a/Week_04/Lesson_20.html +++ b/Week_04/Lesson_20.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_05/005_Overview.html b/Week_05/005_Overview.html index c3b93de..abf1f8a 100644 --- a/Week_05/005_Overview.html +++ b/Week_05/005_Overview.html @@ -259,6 +259,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/Week_05/005_Overview_.html b/Week_05/005_Overview_.html deleted file mode 100644 index 69b761d..0000000 --- a/Week_05/005_Overview_.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - - - - - - - - - Course Structure — 100 Days of Machine Learning - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - - - - - - -
    - -
    -

    Course Structure#

    -
    -
    -

    Module 3: Supervised Learning - Regression and Classification#

    -
    -

    Weeks 5-6#

    -
      -
    • Focus: Key concepts and algorithms in supervised learning.

    • -
    • Topics include regression, classification algorithms, decision trees, SVM, and ensemble methods.

    • -
    -
    -

    Week 5: Supervised Learning - Regression#

    -
      -
    • Day 21: Introduction to Regression Analysis in Python

      -
        -
      • Basics of regression analysis and simple linear regression.

      • -
      • Math Focus: Linear equation fundamentals and fitting models to data.

      • -
      -
    • -
    • Day 22: Implementing Multiple Linear Regression in Python

      -
        -
      • Understand and implement multiple linear regression.

      • -
      • Math Focus: Multivariate calculus and regression coefficients interpretation.

      • -
      -
    • -
    • Day 23: Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression

      -
        -
      • Explore advanced regression techniques and their applications.

      • -
      • Math Focus: Polynomial functions, Lasso and Ridge regularization techniques.

      • -
      -
    • -
    • Day 24: Regression Model Evaluation Metrics in Python

      -
        -
      • Key metrics for evaluating regression models.

      • -
      • Math Focus: Mean Squared Error (MSE), Root Mean Squared Error (RMSE), and R-squared.

      • -
      -
    • -
    • Day 25: Addressing Overfitting and Underfitting in Regression Models

      -
        -
      • Strategies to combat overfitting and underfitting in regression.

      • -
      • Math Focus: Bias-variance tradeoff and regularization methods.

      • -
      -
    • -
    -
    -
    -
    - - - - -
    - - - - - - - - -
    - - - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/Week_05/Lesson_21.html b/Week_05/Lesson_21.html index f40f37c..6b68de5 100644 --- a/Week_05/Lesson_21.html +++ b/Week_05/Lesson_21.html @@ -261,6 +261,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • @@ -848,7 +849,7 @@

    Import and Analyze a Housing Dataset
    /tmp/ipykernel_237871/737031205.py:1: DeprecationWarning: 
    +
     
    @@ -685,8 +687,8 @@ 

    Understanding Model Evaluation Metrics -
    MSE: 732.3551245668029
    -R-squared: -0.027105564211052702
    +
    MSE: 3183.330047035957
    +R-squared: 0.13751568541102366
     
    @@ -710,8 +712,8 @@

    Understanding Model Evaluation Metrics -../_images/1d0563321f6a2b86ded4cb8e6c1035aab0234f07e9db2f827b7c6ea403da2913.png - diff --git a/Week_05/Lesson_23.html b/Week_05/Lesson_23.html index c0e5c7c..4cd5a10 100644 --- a/Week_05/Lesson_23.html +++ b/Week_05/Lesson_23.html @@ -9,7 +9,7 @@ - Outline Only - Lesson 23: Advanced Regression Techniques — 100 Days of Machine Learning + Day 23: Advanced Regression Techniques — 100 Days of Machine Learning @@ -62,13 +62,14 @@ const thebe_selector_output = ".output, .cell_output" + + - - + @@ -238,11 +239,6 @@ - -

    Week 5 - Data Preprocessing

    -

    Week 4 - Data Preprocessing

    -

    Course Overview

    -

    @@ -483,7 +484,9 @@ `); - +

    @@ -494,11 +497,27 @@
    -

    Outline Only - Lesson 23: Advanced Regression Techniques

    +

    Day 23: Advanced Regression Techniques

    @@ -508,35 +527,1398 @@

    Outline Only - Lesson 23: Advanced Regression Techniques

    -
    -

    Outline Only - Lesson 23: Advanced Regression Techniques#

    -

    Polynomial, Lasso, and Ridge Regression - Explore advanced regression techniques and their applications. - Math Focus: Polynomial functions, Lasso and Ridge regularization techniques.

    +
    +

    Day 23: Advanced Regression Techniques#

    +
    +

    Introduction#

    +

    Astute readers may have noticed during the Day 22 lesson that some of the customer_data.csv plots were not great fits across the entire domain of the data. This is because there was a non-linear element (an \(x^2\) term) in the function I used to build that dataset out of random numbers. Most data we’ll encounter is not perfectly linear, but we can still use regression. A higher order function may describe the relationships between our independent variables and the dependent variable. We are not limited to \(y = mx + c\), or even \(y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n + \epsilon\) – we can include \(x_n^2, x_n^3, ...\) as if they were new independent variables, and give our regression line the freedom to match any polynomial function.

    +

    We’ll just need to steer clear of overfitting: with unlimited terms, it’s arbitrarily simple to draw a polynomial function that passes through every data point perfectly. This is unlikely to translate into predictive power outside of training, though. Lasso and Ridge are specific forms of regularization designed to address overfitting by penalizing the size of the coefficients. Keep an eye out for the penalty term (\(\lambda\)) which controls the complexity of the model.

    +

    A general polynomial regression model can be represented as:

    +

    \( y = \beta_0 + \beta_1x_1 + \beta_2x_1^2 + \ldots + \beta_nx_1^n + \epsilon \)

    +

    Where:

      -
    • Theoretical Concepts:

      -
        -
      • Overview of polynomial regression and its applications.

      • -
      • Introduction to regularization techniques: Lasso and Ridge regression.

      • +
      • \(y\) is the dependent variable.

      • +
      • \(x_1, x_1^2, \ldots, x_1^n\) are the predictor variables and their polynomial terms up to degree (n).

      • +
      • \(\beta_0, \beta_1, \ldots, \beta_n\) are the coefficients.

      • +
      • \(\epsilon\) represents the model error.

      -
    • -
    • Mathematical Foundation:

      -
        -
      • Polynomial functions and their role in regression.

      • -
      • Lasso (L1 regularization) and Ridge (L2 regularization) concepts.

      • +

        To get acquainted with the topic, let’s take a peek at what adding additional degrees to the polynomial can do:

        +
        +
        +
        # overview plot
        +import numpy as np
        +import matplotlib.pyplot as plt
        +from sklearn.linear_model import LinearRegression
        +from sklearn.preprocessing import PolynomialFeatures
        +from sklearn.metrics import r2_score
        +
        +# Generating demo data
        +np.random.seed(42)
        +x = np.random.normal(0, 1, 20)
        +
        +# This is the actual equation, so we could check exactly what coefficients our regression found.
        +y= -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)
        +
        +# Reshape x for sklearn
        +x = x[:, np.newaxis]
        +y = y[:, np.newaxis]
        +
        +# Simple linear regression
        +linear_regressor = LinearRegression()
        +linear_regressor.fit(x, y)
        +y_pred_linear = linear_regressor.predict(x)
        +
        +# Polynomial regression (underfit)
        +poly_features2 = PolynomialFeatures(degree=2)
        +x_poly2 = poly_features2.fit_transform(x)
        +poly_regressor2 = LinearRegression()
        +poly_regressor2.fit(x_poly2, y)
        +y_pred_poly2 = poly_regressor2.predict(x_poly2)
        +
        +# Polynomial regression (well-fit)
        +poly_features3 = PolynomialFeatures(degree=3)
        +x_poly3 = poly_features3.fit_transform(x)
        +poly_regressor3 = LinearRegression()
        +poly_regressor3.fit(x_poly3, y)
        +y_pred_poly3 = poly_regressor3.predict(x_poly3)
        +
        +# Polynomial regression (overfit)
        +poly_features5 = PolynomialFeatures(degree=5)
        +x_poly5 = poly_features5.fit_transform(x)
        +poly_regressor5 = LinearRegression()
        +poly_regressor5.fit(x_poly5, y)
        +y_pred_poly5 = poly_regressor5.predict(x_poly5)
        +
        +# R^2 Scores
        +r2_linear = r2_score(y, y_pred_linear)
        +r2_poly2 = r2_score(y, y_pred_poly2)
        +r2_poly3 = r2_score(y, y_pred_poly3)
        +r2_poly5 = r2_score(y, y_pred_poly5)
        +
        +# Plotting
        +plt.figure(figsize=(12, 10))
        +
        +# Plot simple linear regression
        +plt.subplot(2, 2, 1)
        +plt.scatter(x, y, color='blue', label='Actual response, yi')
        +plt.plot(x, y_pred_linear, color='red', label='Estimated regression line, f(x)')
        +plt.title(f'Degree: 1, R^2 = {r2_linear:.2f}')
        +plt.legend()
        +
        +# Plot underfit polynomial regression
        +plt.subplot(2, 2, 2)
        +plt.scatter(x, y, color='blue', label='Actual response, yi')
        +sorted_axis = np.argsort(x[:, 0])
        +plt.plot(x[sorted_axis], y_pred_poly2[sorted_axis], color='red', label='Estimated regression line, f(x)')
        +plt.title(f'Degree: 2, R^2 = {r2_poly2:.2f}')
        +plt.legend()
        +
        +# Plot well-fit polynomial regression
        +plt.subplot(2, 2, 3)
        +plt.scatter(x, y, color='blue', label='Actual response, yi')
        +sorted_axis = np.argsort(x[:, 0])
        +plt.plot(x[sorted_axis], y_pred_poly3[sorted_axis], color='red', label='Estimated regression line, f(x)')
        +plt.title(f'Degree: 3, R^2 = {r2_poly3:.2f}')
        +plt.legend()
        +
        +# Plot overfit polynomial regression
        +plt.subplot(2, 2, 4)
        +plt.scatter(x, y, color='blue', label='Actual response, yi')
        +sorted_axis = np.argsort(x[:, 0])
        +plt.plot(x[sorted_axis], y_pred_poly5[sorted_axis], color='red', label='Estimated regression line, f(x)')
        +plt.title(f'Degree: 5, R^2 = {r2_poly5:.2f}')
        +plt.legend()
        +
        +# Show the plots
        +plt.tight_layout()
        +plt.show()
        +
        +
        +
        +
        +../_images/5a3b207bfabe58ccdfda75f84946a10cdf87d302d66c3b6d1746e2c56a800111.png +
        +
        +
    +
    +

    Polynomial Regression#

    +

    In terms of execution, we can use sklearn’s sklearn.preprocessing.PolynomialFeatures functionality to perform linear regression with a higher degree. This is exactly what was used in the overview plot above, but I wanted to isolate the code for easier comparison to Lasso and Ridge regression below.

    +

    Some additional things to keep in mind:

    +
      +
    1. Choice of Polynomial Degree: Determining the appropriate degree of the polynomial is critical. A higher-degree polynomial can fit the training data very well but might perform poorly on unseen data due to overfitting. Various model selection techniques, such as cross-validation, can be used to choose a polynomial degree that balances bias and variance.

    2. +
    3. Feature Scaling: Polynomial terms can have very different scales, especially for higher degrees, which can make the regression model sensitive to the scale of the input features. Normalizing or standardizing the features before applying polynomial regression can help with model convergence and interpretation.

    4. +
    5. Multivariate Polynomial Regression: While your introduction focuses on polynomial regression with a single independent variable (\(x_1\)), it’s important to note that polynomial regression can be extended to multiple independent variables, allowing for interaction terms between different variables (e.g., \(x_1x_2\), \(x_1^2x_2\), etc.). This introduces complexity in model interpretation but can capture interactions between predictors that are not apparent in single-variable analyses.

    6. +
    7. Computational Complexity: As the degree of the polynomial and the number of independent variables increase, the computational complexity of fitting the regression model also increases. This is due to the larger number of terms and interactions that need to be calculated and optimized. It’s important to balance the model’s complexity with computational constraints.

    8. +
    9. Analyzing Residuals: When using polynomial regression, it becomes even more important to analyze residuals to ensure that the assumptions of linear regression are still met. This includes checking for homoscedasticity, normality of residuals, and absence of autocorrelation. If these assumptions are violated, the results of the regression, including any inference drawn from the coefficients, may not be valid.

    10. +
    +
    +

    On make_pipeline#

    +

    make_pipeline from sklearn.pipeline is a utility function that simplifies the process of creating a pipeline of transformations with a final estimator. In machine learning workflows, it’s often necessary to chain together multiple steps such as preprocessing (like scaling features or applying polynomial expansions) and then applying a model (like LinearRegression, Lasso, or Ridge). A pipeline bundles these steps into a single object that behaves like a compound estimator.

    +

    When you use make_pipeline, you can pass it a series of transformations followed by an estimator, and it automatically names each step based on its class. The steps are executed in sequence: each step’s fit_transform() method is called on the input data (except for the last step, where only fit() is called), transforming the data along the way, until it finally fits the model on the transformed data. This streamlines the code, making it cleaner and easier to read, and reduces the risk of mistakes (like applying transformations to the training data but forgetting to do so on the test data).

    +

    The intro plot above does not use a pipeline, but Lasso and Ridge specifically benefit from it. In this next example, we will pipeline from PolynomialFeatures (a preprocessor) to LinearRegression (a model).

    +

    This allows us to convert this block of code:

    +
    # Polynomial regression (well-fit)
    +poly_features3 = PolynomialFeatures(degree=3)
    +x_poly3 = poly_features3.fit_transform(x)
    +poly_regressor3 = LinearRegression()
    +poly_regressor3.fit(x_poly3, y)
    +y_pred_poly3 = poly_regressor3.predict(x_poly3)
    +
    +
    +

    into this:

    +
    poly = make_pipeline(PolynomialFeatures(degree), LinearRegression())
    +poly.fit(X, y)
    +
    +
    +

    You can imagine that as you add additional steps to transform your data, the first style of code will grow from 6 lines, to 9, to 12… while the second example simply adds more “machinery” to the sequence described in make_pipeline(...).

    +

    For instance, when used with LinearRegression, Lasso, or Ridge in the context of polynomial regression, you would typically create a pipeline that first expands your features into a polynomial feature space (using PolynomialFeatures) and then scales them (using StandardScaler, although not in these basic examples, it’s a common practice), before finally applying the regression model. This ensures that the feature expansion and scaling are part of the model fitting process, which is particularly important for cross-validation and deploying the model for predictions on new data.

    +

    To get the coefficients and intercept out of a pipeline that ends in linear regression, you’ll have to reach inside the pipeline via the name it generates for its different steps. poly_regressor3.coef_ becomes poly['linearregression'].coef, where the string 'linearregression' is generated from the LinearRegression object that was passed into the pipeline.

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn.linear_model import Lasso
    +from sklearn.preprocessing import PolynomialFeatures
    +from sklearn.linear_model import LinearRegression
    +from sklearn.pipeline import make_pipeline
    +# Generating demo data
    +np.random.seed(42)
    +x = np.random.normal(0, 1, 20)
    +X = x[:, np.newaxis]
    +
    +# This is the actual equation, so we could check exactly what coefficients our regression found.
    +y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)
    +
    +# Reshape x for sklearn
    +x = x[:, np.newaxis]
    +y = y[:, np.newaxis]
    +
    +degree = 4  # choosing the same degree as the true model
    +poly = make_pipeline(PolynomialFeatures(degree), LinearRegression())
    +poly.fit(X, y)
    +
    +# Generating points for plotting the regression line
    +x_plot = np.linspace(min(X), max(X), 100)
    +y_plot = poly.predict(x_plot)
    +
    +plt.scatter(x, y, label='Data points')
    +sorted_axis = np.argsort(x[:, 0])
    +plt.plot(x_plot, y_plot, label='Polynomial regression line', color='red')
    +plt.legend()
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.title('Polynomial (degree = 4) regression')
    +plt.show()
    +
    +
    +
    +
    +../_images/efe2803e3c407dd4463ca9959dfcf6bfa2b0b72cc864062d127916b2c28a2c0e.png +
    +
    +
    +
    +
    poly
    +
    +
    +
    +
    +
    Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=4)),
    +                ('linearregression', LinearRegression())])
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    +
    +
    +
    +
    poly['linearregression'].coef_
    +
    +
    +
    +
    +
    array([[ 0.        , -2.00193104,  7.3848762 ,  3.00349368, -4.16571691]])
    +
    +
    +
    +
    +
    +
    +
    poly['linearregression'].intercept_
    +
    +
    +
    +
    +
    array([-0.32345315])
    +
    +
    +
    +
    +
    +
    +
    +

    Lasso Regression#

    +

    Lasso regression adds a penalty equal to the absolute value of the magnitude of coefficients. This can lead not only to small coefficients but can actually shrink some of them to zero, effectively performing variable selection. Using that feature of Lasso regression, you don’t have to interpret the usefulness of a variable - if it’s not important to the model, then its coefficients will drop to zero. However, to achieve this result, you’ll have to tune your lambda (\(\lambda\)) value. If \(\lambda\) is too small, the penalty effect might be negligible, leading to little improvement over ordinary least squares regression. If \(\lambda\) is too large, too many variables might be eliminated, resulting in underfitting. Techniques such as cross-validation can be used to select an optimal \(\lambda\).

    +

    The objective function for Lasso regression is:

    +

    \( \text{Minimize: } \frac{1}{2N} \sum_{i=1}^{N} (y_i - \sum_{j=1}^{n} \beta_j x_{ij})^2 + \lambda \sum_{j=1}^{n} |\beta_j| \)

    +

    Where:

    +
      +
    • \(N\) is the number of observations.

    • +
    • \(\lambda\) is the regularization parameter controlling the strength of the penalty.

    • +
    • The first term is the Mean Squared Error, and the second term is the L1 penalty.

    - -
  • Python Implementation:

    -
      -
    • Implementing polynomial regression with numpy and scikit-learn.

    • -
    • Demonstrating Lasso and Ridge regression using scikit-learn.

    • -
    • Comparing models using visualizations in matplotlib.

    • +

      Other things to keep in mind:

      +
        +
      • Lasso regression is sensitive to the scale of the input variables, so standardizing the data (to have 0 mean and unit variance) before applying Lasso regression is a common practice.

      • +
      • While Lasso can lead to sparse solutions, Ridge regression is preferred when multicollinearity is present among the features.

      - -
    • Example Dataset:

      -
        -
      • Dataset requiring a non-linear fit (e.g., environmental data).

      • +

        The introduction plot used sklearn.linear_model.LinearRegression to perform regression with different degrees of polynomials. Although Lasso might not perfectly capture the relationship in polynomial terms without specifically including polynomial features, this code will illustrate the process:

        +
        +
        +
        import numpy as np
        +import matplotlib.pyplot as plt
        +from sklearn.linear_model import Lasso
        +from sklearn.preprocessing import PolynomialFeatures
        +from sklearn.pipeline import make_pipeline
        +
        +# Generating demo data
        +np.random.seed(42)
        +x = np.random.normal(0, 1, 20)
        +y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)
        +X = x[:, np.newaxis]
        +
        +degree = 4  # choosing the same degree as the true model
        +lasso_poly = make_pipeline(PolynomialFeatures(degree), Lasso(alpha=0.1, max_iter=10000))
        +lasso_poly.fit(X, y)
        +
        +# Generating points for plotting the regression line
        +x_plot = np.linspace(min(x), max(x), 100)
        +X_plot = x_plot[:, np.newaxis]
        +y_plot = lasso_poly.predict(X_plot)
        +
        +# Plotting the data points and the regression line
        +plt.scatter(x, y, label='Data points')
        +plt.plot(x_plot, y_plot, label='Lasso Regression Line', color='red')
        +plt.legend()
        +plt.xlabel('x')
        +plt.ylabel('y')
        +plt.title('Lasso Regression with Polynomial Features')
        +plt.show()
        +
        +
        +
        +
        +../_images/cf2893ef3bdd7bf0354019761a0360b80dbe08cc759e847d38b3cd7a4c87129a.png +
        +
        +
        +
        +
        lasso_poly['lasso'].coef_
        +
        +
        +
        +
        +
        array([ 0.        , -1.55260439,  5.72240286,  2.90811749, -3.66350745])
        +
        +
        +
        +
        +
        +
        +
        lasso_poly['lasso'].intercept_
        +
        +
        +
        +
        +
        0.19943027115730638
        +
        +
        +
        +
        +
          +
        • Choosing Degree and \(\lambda\): The choice of degree=4 for the polynomial features and alpha=0.1 for the Lasso regression penalty ($\lambda$) is somewhat arbitrary here and might need adjustment based on cross-validation to find the optimal model complexity and regularization strength.

        • +
        • Max Iterations: Increasing max_iter in Lasso() might be necessary for the algorithm to converge, especially for higher degrees of polynomials or smaller values of \(\alpha\) (lambda).

        - +
  • +
    +

    Ridge Regression#

    +

    Ridge regression adds a penalty equal to the square of the magnitude of coefficients. All coefficients are shrunk by the same factor (none are eliminated).

    +

    The objective function for Ridge regression is:

    +

    \( \text{Minimize: } \frac{1}{2N} \sum_{i=1}^{N} (y_i - \sum_{j=1}^{n} \beta_j x_{ij})^2 + \lambda \sum_{j=1}^{n} \beta_j^2 \)

    +
      +
    • Similarly, \(N\) and \(\lambda\) have the same definitions as in Lasso.

    • +
    • The first term again represents the Mean Squared Error, and the second term is the L2 penalty.

    +
      +
    1. Effect of the Penalty: Ridge regression is particularly useful when dealing with multicollinearity or when you have more predictors than observations.

    2. +
    3. Scaling Importance: standardizing the features in Ridge regression is important due to the square of the coefficients being included in the penalty term. Features on larger scales can have disproportionately large effects on the formulation.

    4. +
    5. Choosing \(\lambda\) for the bias-variance trade-off: A higher \(\lambda\) increases bias but reduces variance, whereas a lower \(\lambda\) does the opposite. The optimal \(\lambda\) minimizes the mean squared error of predictions.

    6. +
    7. Computational Aspects: Ridge regression tends to be computationally more efficient than Lasso for a large number of features, mainly because the solution is obtained through matrix operations that have computationally efficient implementations.

    8. +
    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn.linear_model import Ridge
    +from sklearn.preprocessing import PolynomialFeatures
    +from sklearn.pipeline import make_pipeline
    +
    +# Generating demo data using the same snippet
    +np.random.seed(42)
    +x = np.random.normal(0, 1, 20)
    +y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)
    +X = x[:, np.newaxis]
    +
    +# Using polynomial features again since our relationship is non-linear
    +degree = 4
    +ridge_poly = make_pipeline(PolynomialFeatures(degree), Ridge(alpha=0.1))
    +ridge_poly.fit(X, y)
    +
    +# Generating points for plotting
    +x_plot = np.linspace(min(x), max(x), 100)
    +X_plot = x_plot[:, np.newaxis]
    +y_plot = ridge_poly.predict(X_plot)
    +
    +# Plotting
    +plt.scatter(x, y, label='Data points')
    +plt.plot(x_plot, y_plot, color='red', label='Ridge Regression Line')
    +plt.legend()
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.title('Ridge Regression with Polynomial Features')
    +plt.show()
    +
    +
    +
    +
    +../_images/0db9f24dd130ecb95bde386604ac8a3a2c4540ea1d11b2edf145ecd048c39112.png +
    +
    +
    +
    +
    ridge_poly['ridge'].coef_
    +
    +
    +
    +
    +
    array([ 0.        , -2.05626925,  6.75667935,  3.06069885, -3.96459941])
    +
    +
    +
    +
    +
    +
    +
    ridge_poly['ridge'].intercept_
    +
    +
    +
    +
    +
    -0.14654769263455236
    +
    +
    +
    +
    +
    +
    +

    Exercise For The Reader#

    +

    Lasso and Ridge regression could be applied to sklearn’s included California housing data set.

    +
      +
    • Don’t forget to do a test train split.

    • +
    • It’s probably best to use a scaler.

    • +
    • selecting variables is important, but can be thought of as part science and part art. Try a few and see what helps.

    • +
    +
    +
    +
    # starter code
    +from sklearn.datasets import fetch_california_housing
    +from sklearn.model_selection import train_test_split
    +fetched = fetch_california_housing(as_frame=True)
    +X = fetched['data']
    +Y = fetched['target']
    +
    +# Splitting dataset
    +X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
    +
    +
    +
    +
    +
    +
    +
    X.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    MedIncHouseAgeAveRoomsAveBedrmsPopulationAveOccupLatitudeLongitude
    08.325241.06.9841271.023810322.02.55555637.88-122.23
    18.301421.06.2381370.9718802401.02.10984237.86-122.22
    27.257452.08.2881361.073446496.02.80226037.85-122.24
    35.643152.05.8173521.073059558.02.54794537.85-122.25
    43.846252.06.2818531.081081565.02.18146737.85-122.25
    +
    +
    +
    +
    +
    # model configuration
    +from sklearn.preprocessing import StandardScaler
    +
    +degrees = 8
    +ridge_poly = make_pipeline(PolynomialFeatures(degrees), StandardScaler(), Ridge(alpha=0.1))
    +ridge_poly.fit(X_train, Y_train)
    +
    +
    +
    +
    +
    Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=8)),
    +                ('standardscaler', StandardScaler()),
    +                ('ridge', Ridge(alpha=0.1))])
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    +
    +
    +
    +
    from sklearn.metrics import mean_squared_error, r2_score
    +
    +# Making predictions
    +predictions = ridge_poly.predict(X_test)
    +
    +# Evaluation
    +mse = mean_squared_error(Y_test, predictions)
    +r2 = r2_score(Y_test, predictions)
    +
    +print(f'MSE: {mse}')
    +print(f'R-squared: {r2}')
    +
    +
    +
    +
    +
    MSE: 620.2980353830641
    +R-squared: -472.3621683634644
    +
    +
    +
    +
    +
    +
    +
    # examine the concrete results of the model - prediction vs test data's label
    +# the dataset provides home values in fractions of $100,000, so we convert the prediction to real dollars.
    +print(f"""Input data:
    +{X_test[:1]}
    +
    +Median house value: ${Y_test.iloc[0] * 100:.2f}k
    +Predicted value: ${predictions[0] * 100:.2f}k""")
    +
    +
    +
    +
    +
    Input data:
    +       MedInc  HouseAge  AveRooms  AveBedrms  Population  AveOccup  Latitude  \
    +20046  1.6812      25.0  4.192201   1.022284      1392.0  3.877437     36.06   
    +
    +       Longitude  
    +20046    -119.01  
    +
    +Median house value: $47.70k
    +Predicted value: $70.53k
    +
    +
    +
    +
    +

    Can you improve it with data preprocessing or altering the model parameters?

    +

    Have fun!

    +
    +
    +

    Additional Resources#

    + +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    Outline Only - Lesson 24: Regression Model Evaluation Metrics in Python - Key metrics for evaluating regression models.

    - -
    -
    - -
    -
    -
    - - - - -
    - -
    -

    Outline Only - Lesson 24: Regression Model Evaluation Metrics in Python - Key metrics for evaluating regression models.#

    -

    Math Focus: Mean Squared Error (MSE), Root Mean Squared Error (RMSE), and R-squared.

    -
      -
    • Theoretical Concepts:

      -
        -
      • Importance of model evaluation in regression analysis.

      • -
      • Overview of key metrics: MSE, RMSE, and R-squared.

      • -
      -
    • -
    • Mathematical Foundation:

      -
        -
      • Formulas and interpretation of MSE, RMSE, and R-squared.

      • -
      • Understanding the significance of these metrics in model performance.

      • -
      -
    • -
    • Python Implementation:

      -
        -
      • Calculating MSE, RMSE, and R-squared using scikit-learn.

      • -
      • Visualizing residuals to understand model performance.

      • -
      -
    • -
    • Example Dataset:

      -
        -
      • Use datasets from previous lessons for consistency in evaluation.

      • -
      -
    • -
    -
    - - - - -
    - - - - - - - - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/Week_05/Lesson_25.html b/Week_05/Lesson_25.html deleted file mode 100644 index cf40263..0000000 --- a/Week_05/Lesson_25.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - - - - - - - - - Outline Only - Lesson 25: Addressing Overfitting and Underfitting in Regression Models — 100 Days of Machine Learning - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    -
    -
    - - - -
    -
    - -
    - - - - - - - - - - - - - -
    - -
    - - - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - - - -
    -

    Outline Only - Lesson 25: Addressing Overfitting and Underfitting in Regression Models

    - -
    -
    - -
    -
    -
    - - - - -
    - -
    -

    Outline Only - Lesson 25: Addressing Overfitting and Underfitting in Regression Models#

    -

    Strategies to combat overfitting and underfitting in regression. - Math Focus: Bias-variance tradeoff and regularization methods.

    -
      -
    • Theoretical Concepts:

      -
        -
      • Identifying symptoms of overfitting and underfitting in regression models.

      • -
      • Strategies to combat overfitting and underfitting.

      • -
      -
    • -
    • Mathematical Foundation:

      -
        -
      • Bias-variance tradeoff.

      • -
      • Regularization methods and their mathematical basis.

      • -
      -
    • -
    • Python Implementation:

      -
        -
      • Demonstrating overfitting and underfitting using matplotlib.

      • -
      • Implementing regularization techniques in Python.

      • -
      • Using validation curves and learning curves for model diagnostics.

      • -
      -
    • -
    • Example Dataset:

      -
        -
      • A dataset with a clear overfitting/underfitting tendency (e.g., high-dimensional data).

      • -
      -
    • -
    -
    - - - - -
    - - - - - - - - -
    - - - - -
    -
    - - -
    - - -
    -
    -
    - - - - - -
    -
    - - \ No newline at end of file diff --git a/_images/0db9f24dd130ecb95bde386604ac8a3a2c4540ea1d11b2edf145ecd048c39112.png b/_images/0db9f24dd130ecb95bde386604ac8a3a2c4540ea1d11b2edf145ecd048c39112.png new file mode 100644 index 0000000..524a124 Binary files /dev/null and b/_images/0db9f24dd130ecb95bde386604ac8a3a2c4540ea1d11b2edf145ecd048c39112.png differ diff --git a/_images/1960b324add5d46958aae8ded16b7d272ca3d7a00e62af7e627201cecc10a22d.png b/_images/1960b324add5d46958aae8ded16b7d272ca3d7a00e62af7e627201cecc10a22d.png deleted file mode 100644 index a73bc8a..0000000 Binary files a/_images/1960b324add5d46958aae8ded16b7d272ca3d7a00e62af7e627201cecc10a22d.png and /dev/null differ diff --git a/_images/1d0563321f6a2b86ded4cb8e6c1035aab0234f07e9db2f827b7c6ea403da2913.png b/_images/1d0563321f6a2b86ded4cb8e6c1035aab0234f07e9db2f827b7c6ea403da2913.png deleted file mode 100644 index 0fadd59..0000000 Binary files a/_images/1d0563321f6a2b86ded4cb8e6c1035aab0234f07e9db2f827b7c6ea403da2913.png and /dev/null differ diff --git a/_images/4d7b3afa51f748619d6d68f394d8d582710de819323ec9056508688058da6b39.png b/_images/4d7b3afa51f748619d6d68f394d8d582710de819323ec9056508688058da6b39.png deleted file mode 100644 index 81b91a0..0000000 Binary files a/_images/4d7b3afa51f748619d6d68f394d8d582710de819323ec9056508688058da6b39.png and /dev/null differ diff --git a/_images/4e87df33e5462df633db2b7b3ed7111f3e20a8646e86a404e369b3186da83e8e.png b/_images/4e87df33e5462df633db2b7b3ed7111f3e20a8646e86a404e369b3186da83e8e.png deleted file mode 100644 index 822bb71..0000000 Binary files a/_images/4e87df33e5462df633db2b7b3ed7111f3e20a8646e86a404e369b3186da83e8e.png and /dev/null differ diff --git a/_images/596a853ea8f36fbbdd24acadc5c2d5007c23779e63fc1516ee16885d91138718.png b/_images/596a853ea8f36fbbdd24acadc5c2d5007c23779e63fc1516ee16885d91138718.png new file mode 100644 index 0000000..81eaec4 Binary files /dev/null and b/_images/596a853ea8f36fbbdd24acadc5c2d5007c23779e63fc1516ee16885d91138718.png differ diff --git a/_images/5a3b207bfabe58ccdfda75f84946a10cdf87d302d66c3b6d1746e2c56a800111.png b/_images/5a3b207bfabe58ccdfda75f84946a10cdf87d302d66c3b6d1746e2c56a800111.png new file mode 100644 index 0000000..cf34f5c Binary files /dev/null and b/_images/5a3b207bfabe58ccdfda75f84946a10cdf87d302d66c3b6d1746e2c56a800111.png differ diff --git a/_images/81ecec8704faf2c1f7ee87b3c690f8d8de124c1b0f37f2a7180b2dffce389c9e.png b/_images/81ecec8704faf2c1f7ee87b3c690f8d8de124c1b0f37f2a7180b2dffce389c9e.png deleted file mode 100644 index 144895b..0000000 Binary files a/_images/81ecec8704faf2c1f7ee87b3c690f8d8de124c1b0f37f2a7180b2dffce389c9e.png and /dev/null differ diff --git a/_images/8a4fc5eafbe1194d2af18ad1cce90114b7a63486611fb0e29814773b4d4eced0.png b/_images/8a4fc5eafbe1194d2af18ad1cce90114b7a63486611fb0e29814773b4d4eced0.png deleted file mode 100644 index ebbab64..0000000 Binary files a/_images/8a4fc5eafbe1194d2af18ad1cce90114b7a63486611fb0e29814773b4d4eced0.png and /dev/null differ diff --git a/_images/8c3a0d5ed06805763b5404ef2a3b932553e09a5d3a21332e387e2d8401ad344f.png b/_images/8c3a0d5ed06805763b5404ef2a3b932553e09a5d3a21332e387e2d8401ad344f.png new file mode 100644 index 0000000..fd444e9 Binary files /dev/null and b/_images/8c3a0d5ed06805763b5404ef2a3b932553e09a5d3a21332e387e2d8401ad344f.png differ diff --git a/_images/9239cf149dff59ff38d351ff926223010fb8551c6f5fa5166e60f27a8a9386e7.png b/_images/9239cf149dff59ff38d351ff926223010fb8551c6f5fa5166e60f27a8a9386e7.png deleted file mode 100644 index ad61b4b..0000000 Binary files a/_images/9239cf149dff59ff38d351ff926223010fb8551c6f5fa5166e60f27a8a9386e7.png and /dev/null differ diff --git a/_images/92ac3250e6513c3b8472e0b18e967da18927d77722af5d165c07f194e84d7801.png b/_images/92ac3250e6513c3b8472e0b18e967da18927d77722af5d165c07f194e84d7801.png deleted file mode 100644 index cca0a3b..0000000 Binary files a/_images/92ac3250e6513c3b8472e0b18e967da18927d77722af5d165c07f194e84d7801.png and /dev/null differ diff --git a/_images/95c79f53523d1b9783ae4165a7fd293f44bf5c1ec13b96e0683169676e70c07c.png b/_images/95c79f53523d1b9783ae4165a7fd293f44bf5c1ec13b96e0683169676e70c07c.png deleted file mode 100644 index 506e45e..0000000 Binary files a/_images/95c79f53523d1b9783ae4165a7fd293f44bf5c1ec13b96e0683169676e70c07c.png and /dev/null differ diff --git a/_images/973c05605e4407d03117eb8668d22802aba5e50872ff991cd2a522591d987fbf.png b/_images/973c05605e4407d03117eb8668d22802aba5e50872ff991cd2a522591d987fbf.png deleted file mode 100644 index aebbca1..0000000 Binary files a/_images/973c05605e4407d03117eb8668d22802aba5e50872ff991cd2a522591d987fbf.png and /dev/null differ diff --git a/_images/9bd1031423bef1a2f61f1d89256148d1b71e943953636677f033cd71d2a243d2.png b/_images/9bd1031423bef1a2f61f1d89256148d1b71e943953636677f033cd71d2a243d2.png new file mode 100644 index 0000000..ee4229c Binary files /dev/null and b/_images/9bd1031423bef1a2f61f1d89256148d1b71e943953636677f033cd71d2a243d2.png differ diff --git a/_images/a298648d33b481f372b4498a7f50d6080ac2ff6cb7286d57d3c8a7e488319dab.png b/_images/a298648d33b481f372b4498a7f50d6080ac2ff6cb7286d57d3c8a7e488319dab.png new file mode 100644 index 0000000..bb63d80 Binary files /dev/null and b/_images/a298648d33b481f372b4498a7f50d6080ac2ff6cb7286d57d3c8a7e488319dab.png differ diff --git a/_images/ac8ca84aa071dd742f96fd53ca0d5b1485f5b3b640b6d84c2fbd9c99fcab7c9f.png b/_images/ac8ca84aa071dd742f96fd53ca0d5b1485f5b3b640b6d84c2fbd9c99fcab7c9f.png deleted file mode 100644 index 7079024..0000000 Binary files a/_images/ac8ca84aa071dd742f96fd53ca0d5b1485f5b3b640b6d84c2fbd9c99fcab7c9f.png and /dev/null differ diff --git a/_images/b63ac6f1c346a37d4c9b5f6b2beb867291b424fff549f41528576a8ebe98007f.png b/_images/b63ac6f1c346a37d4c9b5f6b2beb867291b424fff549f41528576a8ebe98007f.png deleted file mode 100644 index 8780ec2..0000000 Binary files a/_images/b63ac6f1c346a37d4c9b5f6b2beb867291b424fff549f41528576a8ebe98007f.png and /dev/null differ diff --git a/_images/bb0d0c6c15e5ffac9ec2fbb8b1013187538a784f2b9216a086c4291db4962b35.png b/_images/bb0d0c6c15e5ffac9ec2fbb8b1013187538a784f2b9216a086c4291db4962b35.png new file mode 100644 index 0000000..6e28942 Binary files /dev/null and b/_images/bb0d0c6c15e5ffac9ec2fbb8b1013187538a784f2b9216a086c4291db4962b35.png differ diff --git a/_images/c78a8b5d5f1a20faf246b3282e3a95f3146ddc2009886cf542dbe0434f1a1346.png b/_images/c78a8b5d5f1a20faf246b3282e3a95f3146ddc2009886cf542dbe0434f1a1346.png deleted file mode 100644 index c41d07f..0000000 Binary files a/_images/c78a8b5d5f1a20faf246b3282e3a95f3146ddc2009886cf542dbe0434f1a1346.png and /dev/null differ diff --git a/_images/cf2893ef3bdd7bf0354019761a0360b80dbe08cc759e847d38b3cd7a4c87129a.png b/_images/cf2893ef3bdd7bf0354019761a0360b80dbe08cc759e847d38b3cd7a4c87129a.png new file mode 100644 index 0000000..baaaaa9 Binary files /dev/null and b/_images/cf2893ef3bdd7bf0354019761a0360b80dbe08cc759e847d38b3cd7a4c87129a.png differ diff --git a/_images/dec1a5268a9ed8954bf44f8e724342a06ccc2e679de0814a106db7960fd97390.png b/_images/dec1a5268a9ed8954bf44f8e724342a06ccc2e679de0814a106db7960fd97390.png deleted file mode 100644 index 488d2d7..0000000 Binary files a/_images/dec1a5268a9ed8954bf44f8e724342a06ccc2e679de0814a106db7960fd97390.png and /dev/null differ diff --git a/_images/efe2803e3c407dd4463ca9959dfcf6bfa2b0b72cc864062d127916b2c28a2c0e.png b/_images/efe2803e3c407dd4463ca9959dfcf6bfa2b0b72cc864062d127916b2c28a2c0e.png new file mode 100644 index 0000000..c86f470 Binary files /dev/null and b/_images/efe2803e3c407dd4463ca9959dfcf6bfa2b0b72cc864062d127916b2c28a2c0e.png differ diff --git a/_images/f471f48523b4b750801da5035d60e32b3d9fa7f967a86460fac3a817493a2910.png b/_images/f471f48523b4b750801da5035d60e32b3d9fa7f967a86460fac3a817493a2910.png deleted file mode 100644 index 0089d74..0000000 Binary files a/_images/f471f48523b4b750801da5035d60e32b3d9fa7f967a86460fac3a817493a2910.png and /dev/null differ diff --git a/_sources/Week_05/005_Overview_.md b/_sources/Week_05/005_Overview_.md deleted file mode 100644 index eb841cb..0000000 --- a/_sources/Week_05/005_Overview_.md +++ /dev/null @@ -1,27 +0,0 @@ - # Course Structure - - # Module 3: Supervised Learning - Regression and Classification - ## Weeks 5-6 -- Focus: Key concepts and algorithms in supervised learning. -- Topics include regression, classification algorithms, decision trees, SVM, and ensemble methods. - -### Week 5: Supervised Learning - Regression -- **Day 21:** Introduction to Regression Analysis in Python - - Basics of regression analysis and simple linear regression. - - Math Focus: Linear equation fundamentals and fitting models to data. - -- **Day 22:** Implementing Multiple Linear Regression in Python - - Understand and implement multiple linear regression. - - Math Focus: Multivariate calculus and regression coefficients interpretation. - -- **Day 23:** Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression - - Explore advanced regression techniques and their applications. - - Math Focus: Polynomial functions, Lasso and Ridge regularization techniques. - -- **Day 24:** Regression Model Evaluation Metrics in Python - - Key metrics for evaluating regression models. - - Math Focus: Mean Squared Error (MSE), Root Mean Squared Error (RMSE), and R-squared. - -- **Day 25:** Addressing Overfitting and Underfitting in Regression Models - - Strategies to combat overfitting and underfitting in regression. - - Math Focus: Bias-variance tradeoff and regularization methods. \ No newline at end of file diff --git a/_sources/Week_05/Lesson_22.ipynb b/_sources/Week_05/Lesson_22.ipynb index ac1a21f..fa12c56 100644 --- a/_sources/Week_05/Lesson_22.ipynb +++ b/_sources/Week_05/Lesson_22.ipynb @@ -76,7 +76,7 @@ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "\n", - "df = pd.read_csv(\"customer_data2.csv\")\n", + "df = pd.read_csv(\"customer_data.csv\")\n", "g = sns.pairplot(df, x_vars=['Age','Income'], y_vars='Spending_Score', height=7, aspect=0.7, kind='reg')\n", "g.fig.suptitle(\"Regression Lines: Age and Income versus Spending Score\", y=1.02)\n", "plt.show()" @@ -511,6 +511,9 @@ "source": [ "# Additional Resources\n", "\n", + "- **Resource 1:** [Multiple Linear Regression in Python](https://www.nickmccullum.com/multiple-linear-regression-python/) (Detailed guide on multiple linear regression, including data preparation and model building)\n", + "- **Resource 2:** [Multivariate Linear Regression Tutorial with Real Python](https://realpython.com/linear-regression-in-python/#multiple-linear-regression) (Explanation of multiple linear regression with an example using Python)\n", + "\n", "https://www.statology.org/multiple-linear-regression-assumptions/" ] }, diff --git a/_sources/Week_05/Lesson_23.ipynb b/_sources/Week_05/Lesson_23.ipynb index 0b93193..e2831ad 100644 --- a/_sources/Week_05/Lesson_23.ipynb +++ b/_sources/Week_05/Lesson_23.ipynb @@ -5,26 +5,1647 @@ "id": "210315fa-bf4a-4892-9e66-e42ee9b5d804", "metadata": {}, "source": [ - "# Outline Only - **Lesson 23:** Advanced Regression Techniques\n", - "Polynomial, Lasso, and Ridge Regression - Explore advanced regression techniques and their applications. - Math Focus: Polynomial functions, Lasso and Ridge regularization techniques.\n", - "- **Theoretical Concepts:**\n", - " - Overview of polynomial regression and its applications.\n", - " - Introduction to regularization techniques: Lasso and Ridge regression.\n", - "- **Mathematical Foundation:**\n", - " - Polynomial functions and their role in regression.\n", - " - Lasso (L1 regularization) and Ridge (L2 regularization) concepts.\n", - "- **Python Implementation:**\n", - " - Implementing polynomial regression with numpy and scikit-learn.\n", - " - Demonstrating Lasso and Ridge regression using scikit-learn.\n", - " - Comparing models using visualizations in matplotlib.\n", - "- **Example Dataset:**\n", - " - Dataset requiring a non-linear fit (e.g., environmental data)." + "# Day 23: Advanced Regression Techniques" + ] + }, + { + "cell_type": "markdown", + "id": "242f5383-181e-459b-895d-aebad6bf0aa6", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Astute readers may have noticed during the Day 22 lesson that some of the `customer_data.csv` plots were not great fits across the entire domain of the data. This is because there was a non-linear element (an $x^2$ term) in the function I used to build that dataset out of random numbers. Most data we'll encounter is not perfectly linear, but we can still use regression. A higher order function may describe the relationships between our independent variables and the dependent variable. We are not limited to $y = mx + c$, or even $y = \\beta_0 + \\beta_1x_1 + \\beta_2x_2 + ... + \\beta_nx_n + \\epsilon$ -- we can include $x_n^2, x_n^3, ...$ as if they were new independent variables, and give our regression line the freedom to match any polynomial function.\n", + "\n", + "We'll just need to steer clear of overfitting: with unlimited terms, it's arbitrarily simple to draw a polynomial function that passes through *every* data point perfectly. This is unlikely to translate into predictive power outside of training, though. Lasso and Ridge are specific forms of regularization designed to address overfitting by penalizing the size of the coefficients. Keep an eye out for the penalty term ($\\lambda$) which controls the complexity of the model.\n", + "\n", + "A general polynomial regression model can be represented as:\n", + "\n", + "$ y = \\beta_0 + \\beta_1x_1 + \\beta_2x_1^2 + \\ldots + \\beta_nx_1^n + \\epsilon $\n", + "\n", + "Where:\n", + "- $y$ is the dependent variable.\n", + "- $x_1, x_1^2, \\ldots, x_1^n$ are the predictor variables and their polynomial terms up to degree \\(n\\).\n", + "- $\\beta_0, \\beta_1, \\ldots, \\beta_n$ are the coefficients.\n", + "- $\\epsilon$ represents the model error.\n", + "\n", + "To get acquainted with the topic, let's take a peek at what adding additional degrees to the polynomial can do:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "19e3f075-176d-4dff-89a0-88b71613af31", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAPdCAYAAABba9tpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gUVRfH8d8SkpBQQkkglNAFkZeOShGkCSgWjCgCCihNBJUiTRAQRBRQQVERpFhQUYyKDUGkiwgqCgoovYZOQk1CMu8f12xYUkhCsrPZfD/PM092Z+7Onk3bu2fuPddhWZYlAAAAAAAAwI3y2B0AAAAAAAAAch+SUgAAAAAAAHA7klIAAAAAAABwO5JSAAAAAAAAcDuSUgAAAAAAAHA7klIAAAAAAABwO5JSAAAAAAAAcDuSUgAAAAAAAHA7klIAAAAAAABwO5JSAAAAAAAAcDuSUoCN5s2bJ4fD4dzy5cunUqVKqU2bNnrttdd05swZu0O01S+//KLHH39c9erVk6+vrxwOxzWfc+zYsS7fc19fX5UvX15PPvmkTp8+neZjY2Nj1aJFCzkcDt1zzz2Kj49Psd2JEyc0efJkNW3aVCEhISpcuLAaNGigBQsWXHP8mbVo0SLVrVtX+fLlU9myZTVmzBhdunTpqo87dOiQHnroIVWtWlUFCxZU4cKFddNNN+ndd9+VZVnJ2v/www9q3ry5goODnW3ff//97HhJAIBcjD5U6hISEjRv3jzdfffdCgsLU/78+fW///1Pzz//vC5evJjp89KHylgf6srv15Xb2rVrnW27d++eYpvrr78+O18a4BHy2h0AAGncuHGqUKGC4uLiFBkZqRUrVmjAgAF65ZVXtGjRItWsWdPuEG3x7bff6p133lHNmjVVsWJF/fPPP1l27rfeeksFChTQuXPntGzZMr3++uv67bfftGbNmhTbW5alRx55RMuXL1e7du20aNEiPfnkk3rjjTeStV23bp1GjhypO+64Q6NGjVLevHn12Wef6cEHH9Tff/+t5557LsteR3p89913at++vZo1a6bXX39dmzdv1vPPP6+jR4/qrbfeSvOxx48f14EDB9ShQweVLVtWcXFxWrp0qbp3767t27frhRdecLZdtGiR2rdvr4YNGzo7Yp988om6du2q48ePa+DAgdn9UgEAuQx9qOTOnz+vRx55RA0aNNBjjz2m4sWLa926dRozZoyWLVumH3/88Zou9NGHSl8fKjw8XJUrV062/5lnntHZs2d14403uuz39/fXO++847IvKCjo2l8E4OksALaZO3euJcnasGFDsmPLli2zAgICrHLlylnnz593a1wJCQluf86UREZGOuPo16+flRX/ssaMGWNJso4dO+ayv2PHjpYka/369Sk+btiwYZbD4bDeeOMNy7Isa/z48ZYk68UXX0zWdteuXdaePXtc9iUkJFgtWrSw/P39rbNnz17z68iIG264wapVq5YVFxfn3Ddy5EjL4XBYW7duzdQ577zzTit//vzWpUuXnPtuu+02q1SpUtbFixed++Li4qxKlSpZNWvWzPwLAADgCvShUhcTE2OtXbs22f7nnnvOkmQtXbo0U+elD2VcSx9q3759lsPhsHr16uWyv1u3blb+/PmvOV4gJ2L6HuChWrRooWeffVZ79+7VBx984HJs27Zt6tChg4oWLap8+fKpfv36WrRoUbJz/Pnnn7r11lsVEBCgMmXK6Pnnn9fcuXPlcDi0Z88eZ7vy5cvrzjvv1Pfff6/69esrICBAb7/9tiTp9OnTGjBggMLCwuTv76/KlSvrpZdeUkJCgstzJSQkaOrUqapevbry5cunEiVKqE+fPjp16pRLu6ioKG3btk1RUVFX/R6UKFFCAQEB6f2WXZMmTZpIknbu3Jns2JtvvqlJkybpzTff1OOPPy5JGjVqlJ5//nmNGDFCH330kUv7ChUqqFy5ci77HA6H2rdvr5iYGO3atSubXkVyf//9t/7++2/17t1befMmDY59/PHHZVmWFi5cmKnzli9fXufPn1dsbKxzX3R0tIoUKSJ/f3/nvrx58yo4ONhtP0cAAHJ7H8rPz0+NGjVKtv/ee++VJG3dujXNx2cUfaj0++ijj2RZlrp06ZLi8fj4eEVHR2c6ZiAnYvoe4MEefvhhPfPMM1qyZIl69eolSfrrr7/UuHFjlS5dWsOHD1f+/Pn1ySefqH379vrss8+cHY6DBw+qefPmcjgcGjFihPLnz6933nnHJWFwue3bt6tTp07q06ePevXqpapVq+r8+fO69dZbdfDgQfXp00dly5bVTz/9pBEjRujw4cOaOnWq8/F9+vTRvHnz9Mgjj+jJJ5/U7t27NX36dP3+++9au3atfH19JUmff/65HnnkEc2dO1fdu3fP1u9fRiR2MIsUKeKyf9GiRXrqqac0Y8YM9e7d2+XYyJEjlSdPHnXv3l2hoaFq3rx5ms8RGRkpSQoODr5qPMePH09X3AULFkz1ZypJv//+uySpfv36LvtLlSqlMmXKOI9fzYULF3Tu3DmdPXtWK1eu1Ny5c9WwYUOXZFOzZs300ksv6dlnn1W3bt3kcDj04YcfauPGjfrkk0/S9TwAAGQF+lDJZaQfkhH0odJv/vz5CgsLU9OmTZMdO3/+vAoVKqTz58+rSJEi6tSpk1566SUVKFAgw88D5Cg2j9QCcrW0hp4nCgoKsurUqeO837JlS6tGjRouU6QSEhKsRo0aWdddd51z3xNPPGE5HA7r999/d+47ceKEVbRoUUuStXv3buf+cuXKWZKsxYsXuzz3+PHjrfz581v//POPy/7hw4dbPj4+1r59+yzLsqzVq1dbkqz58+e7tFu8eHGy/Ymvee7cual/Y1KQ1dP3tm/fbh07dszas2ePNWfOHCsgIMAKCQmxzp07d83PkZITJ05YxYsXt5o0aZKu9pLStV3t+zh58mRLkvNndbkbb7zRatCgQbrimThxosvztmzZMtk5z549az3wwAOWw+FwtgsMDLS++OKLdD0HAADpRR8q41q1amUVKlTIOnXqVKYeTx8qSUb6UIm2bNliSbKGDh2a7Njw4cOtYcOGWQsWLLA++ugjq1u3bpYkq3Hjxi5TBwFvxEgpwMMVKFDAuYLMyZMn9eOPP2rcuHE6c+aMy8oybdq00ZgxY3Tw4EGVLl1aixcvVsOGDVW7dm1nm6JFi6pLly56/fXXkz1PhQoV1KZNG5d9n376qZo0aaIiRYq4XHVq1aqVXnzxRa1atUpdunTRp59+qqCgIN12220u7erVq6cCBQpo+fLl6ty5sySzuognjJCqWrWqy/0aNWpo7ty5CgwMzPLnSkhIUJcuXXT69OkUv/cpWbp0abraVa9ePc3jFy5ckKQUrwTmy5cv3UPEO3XqpPr16+vYsWP6+uuvdeTIEee5E/n7+6tKlSrq0KGDwsPDFR8fr5kzZ+qhhx7S0qVL1aBBg3Q9FwAAWYE+VJIXXnhBP/zwg958800VLlw4U+dIRB8qY32oRPPnz5ekFKfuTZw40eX+gw8+qCpVqmjkyJFauHChHnzwwQw9F5CTkJQCPNzZs2dVvHhxSdKOHTtkWZaeffZZPfvssym2P3r0qEqXLq29e/eqYcOGyY6ntAqIZDpUV/r333/1559/KiQkJNXnSmwXFRXljDO1dp7ks88+U6FChXTs2DG99tpr2r17d7bVPXriiSe0ePFivffee6pVq1a6HtOqVassee7E1xQTE5Ps2MWLF9P9msuVK+es8dCpUyf17t1brVq10vbt253n6N+/v37++Wf99ttvypPHlCx84IEHVL16dT311FNav359VrwkAADShT6UsWDBAo0aNUo9evRQ3759r/l89KEy1oeSzAqEH374of73v/+le0XIgQMH6tlnn9UPP/xAUgpejaQU4MEOHDigqKgoZycosTDm008/neyKXKLUOkxXk9Iba0JCgm677TYNHTo0xcdUqVLF2a548eLOK0BXSq1DZqemTZs66xLcddddqlGjhrp06aJff/3VmVDJCs8995zefPNNvfjii3r44YfT/bjE2glXExQUlGanqGTJkpKkw4cPKywszOXY4cOHddNNN6U7pst16NBBs2bN0qpVq9SmTRvFxsZq9uzZGjp0qMv3z9fXV7fffrumT5+u2NhY+fn5Zer5AADICPpQxtKlS9W1a1e1a9dOM2bMuKZzJaIPlfE+1Nq1a7V3795kI6LSEhAQoGLFiunkyZPpfgyQE5GUAjzY+++/L0nOzlPFihUlmQ/6V7sKVK5cOe3YsSPZ/pT2paZSpUo6e/bsVZ+rUqVK+uGHH9S4ceMcucpagQIFNGbMGD3yyCP65JNPsuxq1BtvvKGxY8dqwIABGjZsWIYem9gRupqrFTtNnHqwceNGl87ToUOHdODAgWSFR9MrcUh74gpAJ06c0KVLlxQfH5+sbVxcnBISElI8BgBAdqAPJa1fv1733nuv6tevr08++cRlBbmsQh8qfebPny+Hw+GcipkeZ86c0fHjxz3y4i6QlbIulQ0gS/34448aP368KlSo4Jx7Xrx4cTVr1kxvv/22Dh8+nOwxx44dc95u06aN1q1bp02bNjn3nTx5MtUrcSl54IEHtG7dOn3//ffJjp0+fVqXLl1ytouPj9f48eOTtbt06ZJOnz7tvJ/e5YzdrUuXLipTpoxeeumlLDnfggUL9OSTT6pLly565ZVXMvz4pUuXpmtL7WpvourVq+v666/XzJkzXZJCb731lhwOhzp06ODcl9LP5vLfqcvNnj1bDodDdevWlWR+NwsXLqzPP/9csbGxznZnz57VV199peuvvz5HJiwBADkPfShp69atateuncqXL6+vv/46W9+D6UOl/bOJi4vTp59+qltuuUVly5ZNdvzixYsuNc4SjR8/XpZlqW3bthl5+UCOw0gpwAN899132rZtmy5duqQjR47oxx9/1NKlS1WuXDktWrRI+fLlc7Z94403dMstt6hGjRrq1auXKlasqCNHjmjdunU6cOCA/vjjD0nS0KFD9cEHH+i2227TE0884VzOuGzZsjp58qQcDsdV4xoyZIgWLVqkO++8U927d1e9evV07tw5bd68WQsXLtSePXsUHBysW2+9VX369NHEiRO1adMmtW7dWr6+vvr333/16aefatq0ac437owsZ7x3717nlc6NGzdKkp5//nlJ5irm5UO5mzVrppUrV8qyrPR/4y/j6+urp556SkOGDNHixYuvqQPwyy+/qGvXripWrJhatmyZrBPbqFEj5xXb1GRVPQRJmjx5su6++261bt1aDz74oLZs2aLp06erZ8+eqlatmrNdSj+bCRMmaO3atWrbtq3zd+ezzz7Thg0b9MQTTzinOvj4+Ojpp5/WqFGj1KBBA3Xt2lXx8fGaPXu2Dhw4oA8++CDLXg8AAInoQyV35swZtWnTRqdOndKQIUP0zTffuByvVKmSS80s+lCpu5Y+VKLvv/9eJ06cSLHAuWSmG9apU0edOnXS9ddf73zMt99+q7Zt2+qee+7JstcDeCQ7l/4DcrvEpX0TNz8/Pys0NNS67bbbrGnTplnR0dEpPm7nzp1W165drdDQUMvX19cqXbq0deedd1oLFy50aff7779bTZo0sfz9/a0yZcpYEydOtF577TVLkhUZGelsV65cOatdu3YpPteZM2esESNGWJUrV7b8/Pys4OBgq1GjRtaUKVOs2NhYl7YzZ8606tWrZwUEBFgFCxa0atSoYQ0dOtQ6dOhQstecnuWMly9fnuoyvrfeeqtL23r16lmhoaFXPWficsbHjh1LdiwqKsoKCgpKdu6MuvLneuWW2aWcr8Xnn39u1a5d2/m7MGrUqGQ/v5R+NkuWLLHuvPNOq1SpUpavr69VsGBBq3HjxtbcuXOthISEZM8zf/5866abbrIKFy5sBQQEWDfffHOy30sAAK4VfajU7d69O81+SLdu3Vza04dKW2b7UIkefPBBy9fX1zpx4kSK5z916pT10EMPWZUrV7YCAwMtf39/q3r16tYLL7yQ7HkAb+SwrEymxAHkSAMGDNDbb7+ts2fPysfHx+5wssSZM2dUtGhRTZ06Vf369bM7HAAA4IXoQwFA1qOmFODFEotRJzpx4oTef/993XLLLV7TmZKkVatWqXTp0urVq5fdoQAAAC9AHwoA3IORUoAXq127tpo1a6Zq1arpyJEjmj17tg4dOqRly5apadOmdocHAADgkehDAYB7UOgc8GJ33HGHFi5cqJkzZzpXSps9ezadKQAAgDTQhwIA92CkFAAAAAAAANyOmlIAAAAAAABwuxw/fS8hIUGHDh1SwYIF5XA47A4HAAB4GcuydObMGZUqVUp58njH9Tz6TwAAIDult/+U45NShw4dUlhYmN1hAAAAL7d//36VKVPG7jCyBP0nAADgDlfrP+X4pFTBggUlmRdaqFAhm6MBAADeJjo6WmFhYc4+hzeg/wQAALJTevtPOT4plTjkvFChQnSqAABAtvGmaW70nwAAgDtcrf/kHYURAAAAAAAAkKOQlAIAAAAAAIDbkZQCAAAAAACA2+X4mlLpFR8fr7i4OLvDAOBmvr6+8vHxsTsMAAAAAMAVvD4pZVmWIiMjdfr0abtDAWCTwoULKzQ01KuKFAMAAABATuf1SanEhFTx4sUVGBjIh1IgF7EsS+fPn9fRo0clSSVLlrQ5IgAAAABAIq9OSsXHxzsTUsWKFbM7HAA2CAgIkCQdPXpUxYsXZyofAAAAAHgIry50nlhDKjAw0OZIANgp8X8AdeUAAAAAwHN4dVIqEVP2gNyN/wEAAAAA4HlyRVIKAAAAAAAAnoWkFAAAAAAAANyOpBQyzOFw6IsvvrA7DK9Vvnx5TZ061e4wAAAAAADIViSl0iE+XlqxQvroI/M1Pt49z7tu3Tr5+PioXbt2GX4siY2ca8OGDerdu7fdYQAAAAAAkK1ISl1FRIRUvrzUvLnUubP5Wr682Z/dZs+erSeeeEKrVq3SoUOHsv8Js0lsbKzdIeQoISEhrBgJAAAAAPB6JKXSEBEhdeggHTjguv/gQbM/OxNTZ8+e1YIFC9S3b1+1a9dO8+bNS9bmq6++0o033qh8+fIpODhY9957rySpWbNm2rt3rwYOHCiHw+FceWzs2LGqXbu2yzmmTp2q8uXLO+9v2LBBt912m4KDgxUUFKRbb71Vv/32W4Zib9asmfr3768BAwYoODhYbdq0kSRt2bJFt99+uwoUKKASJUro4Ycf1vHjx52PW7hwoWrUqKGAgAAVK1ZMrVq10rlz5yRJ3bt3V/v27fXcc88pJCREhQoV0mOPPeaS8IqJidGTTz6p4sWLK1++fLrlllu0YcMG5/EVK1bI4XBo2bJlql+/vgIDA9WoUSNt377d2eaPP/5Q8+bNVbBgQRUqVEj16tXTxo0bncfXrFmjJk2aKCAgQGFhYXryySedMaZHixYt1L9/f5d9x44dk5+fn5YtWyaJUW4AAAAAgNyBpFQq4uOlp56SLCv5scR9AwZk31S+Tz75RNdff72qVq2qhx56SHPmzJF1WTDffPON7r33Xt1xxx36/ffftWzZMt10002SpIiICJUpU0bjxo3T4cOHdfjw4XQ/75kzZ9StWzetWbNGP//8s6677jrdcccdOnPmTIbif/fdd+Xn56e1a9dqxowZOn36tFq0aKE6depo48aNWrx4sY4cOaIHHnhAknT48GF16tRJjz76qLZu3aoVK1YoPDzc5TUvW7bMeeyjjz5SRESEnnvuOefxoUOH6rPPPtO7776r3377TZUrV1abNm108uRJl9hGjhypl19+WRs3blTevHn16KOPOo916dJFZcqU0YYNG/Trr79q+PDh8vX1lSTt3LlTbdu21X333ac///xTCxYs0Jo1a5IlmdLSs2dPffjhh4qJiXHu++CDD1S6dGm1aNEiQ99jAIDMG3FCgt1RAAByk4QEKTpaioqSTp8226lTSdvJk2Y7ccJsx48nbceOme3oUbMdOZK0RUaa7fDhpO3s2ZQ/lAJeIq/dAXiq1auTj5C6nGVJ+/ebds2aZf3zz549Ww899JAkqW3btoqKitLKlSvV7L8nmzBhgh588EGXpEytWrUkSUWLFpWPj48KFiyo0NDQDD3vlYmRmTNnqnDhwlq5cqXuvPPOdJ/nuuuu06RJk5z3n3/+edWpU0cvvPCCc9+cOXMUFhamf/75R2fPntWlS5cUHh6ucuXKSZJq1Kjhck4/Pz/NmTNHgYGBql69usaNG6chQ4Zo/PjxunDhgt566y3NmzdPt99+uyRp1qxZWrp0qWbPnq0hQ4Y4zzNhwgTdeuutkqThw4erXbt2unjxovLly6d9+/ZpyJAhuv76652vI9HEiRPVpUsXDRgwwHnstdde06233qq33npL+fLlu+r3JTw8XP3799eXX37pTMjNmzdP3bt3d45oAwBchWVJU6dKgwaZ+9dfL23damtIAAAvEBtrPuRdnhy6/Gvi7aNH3VdoWJLy5ZOKF5dCQpK20FCpUqWkLSxMysvHe+Q82fpbu2rVKk2ePFm//vqrDh8+rM8//1zt27d3HrcsS2PGjNGsWbN0+vRpNW7cWG+99ZZLIsAu6R1clIFBSOm2fft2/fLLL/r8888lSXnz5lXHjh01e/ZsZ1Jq06ZN6tWrV5Y/95EjRzRq1CitWLFCR48eVXx8vM6fP699+/Zl6Dz16tVzuf/HH39o+fLlKlCgQLK2O3fuVOvWrdWyZUvVqFFDbdq0UevWrdWhQwcVKVLE2a5WrVoutZYaNmyos2fPav/+/YqKilJcXJwaN27sPO7r66ubbrpJW6/4oFKzZk3n7ZIlS0qSjh49qrJly2rQoEHq2bOn3n//fbVq1Ur333+/KlWq5HwNf/75p+bPn+98vGVZSkhI0O7du1WtWrWrfl/y5cunhx9+WHPmzNEDDzyg3377TVu2bNGiRYuu+lgAyPV+/VVq3dpcfb7cjh32xAMAyNkSEqRNm6Rly8y2erV0/rw9sSReoL78q2WZGC9elPbtM1tq8uY1xY8rV3ZNVlWqJFWsKAUEZPtLADIjW5NS586dU61atfToo48qPDw82fFJkybptdde07vvvqsKFSro2WefVZs2bfT333+na9RJdvovV5Fl7TJi9uzZunTpkkqVKuXcZ1mW/P39NX36dAUFBSkgE/9U8uTJ4zIdTpLi4uJc7nfr1k0nTpzQtGnTVK5cOfn7+6thw4YZLlaeP39+l/tnz57VXXfdpZdeeilZ25IlS8rHx0dLly7VTz/9pCVLluj111/XyJEjtX79elWoUCFDz301idPxJDlHJyX8N/Vj7Nix6ty5s7755ht99913GjNmjD7++GPde++9Onv2rPr06aMnn3wy2TnLli2b7ufv2bOnateurQMHDmju3Llq0aKFc3QYAOAKp05JvXpJn32W8vHRo80GAMDVWJb0779JSajly5Nf6AgIMB/yQkOTvl5+O/FrkSJSnv+q4aSUUErr65W304r33LmkKX+XbwcPSjt3mgszu3aZUV47dqR+oaZ06aQk1f/+JzVoINWta0ZhATbK1qTU7bff7pxKdSXLsjR16lSNGjVK99xzjyTpvffeU4kSJfTFF1/owQcfzM7QrqpJE6lMGfO3ntIUXofDHG/SJGuf99KlS3rvvff08ssvq3Xr1i7H2rdvr48++kiPPfaYatasqWXLlumRRx5J8Tx+fn6Kv2JIaUhIiCIjI2VZljMZs2nTJpc2a9eu1Ztvvqk77rhDkrR//36XYuSZVbduXX322WcqX7688qYyrNThcKhx48Zq3LixRo8erXLlyunzzz/XoP+mZ/zxxx+6cOGCMyH3888/q0CBAgoLC1NwcLCzhlVigicuLk4bNmxwTrdLrypVqqhKlSoaOHCgOnXqpLlz5+ree+9V3bp19ffff6ty5cqZ/0bITEusX7++Zs2apQ8//FDTp0+/pvMBgFdq1kxauTLlYw0aSJ9+at6IAQBIy6FDSUmoZcuS12gpUEC69VapZUuz/e9/SckmuzkcJr4CBaS0LtQnJJgPrjt2mERV4pZ4PzraHD94UFq1Kulxvr5SnTrmfbVhQ/O1XLn0JcyALGLbpNPdu3crMjJSrVq1cu4LCgrSzTffrHXr1qWalIqJiXEpEh0dHZ0t8fn4SNOmmVX2EkdOJkr8G5061bTLSl9//bVOnTqlHj16KCgoyOXYfffdp9mzZ+uxxx7TmDFj1LJlS1WqVEkPPvigLl26pG+//VbDhg2TZFZwW7VqlR588EH5+/srODhYzZo107FjxzRp0iR16NBBixcv1nfffadChQo5n+O6667T+++/r/r16ys6OlpDhgzJ1KisK/Xr10+zZs1Sp06dNHToUBUtWlQ7duzQxx9/rHfeeUcbN27UsmXL1Lp1axUvXlzr16/XsWPHXKbExcbGqkePHho1apT27NmjMWPGqH///sqTJ4/y58+vvn37asiQISpatKjKli2rSZMm6fz58+rRo0e6Yrxw4YKGDBmiDh06qEKFCjpw4IA2bNig++67T5I0bNgwNWjQQP3791fPnj2VP39+/f3331q6dGmGE0s9e/ZU//79lT9/fueqiQCQ633xhZTW/8RFi6S77nJbOACAHOjUKWnFiqQk1LZtrsf9/EwCJjEJdeONJjmTk+XJY2pKhYVJzZu7HrMsU2w9MUm1Y4f022/Szz+b2li//GK2114z7UNDTXIqcatfX7piFgyQlWxLSkVGRkqSSpQo4bK/RIkSzmMpmThxoktx7+wUHi4tXGhW4bs8oV6mjElIpTAj8ZrNnj1brVq1SpaQkkxSatKkSfrzzz/VrFkzffrppxo/frxefPFFFSpUSE2bNnW2HTdunPr06aNKlSopJiZGlmWpWrVqevPNN/XCCy9o/Pjxuu+++/T0009r5syZLs/fu3dv1a1bV2FhYXrhhRf09NNPX/PrKlWqlNauXathw4apdevWiomJUbly5dS2bVvlyZNHhQoV0qpVqzR16lRFR0erXLlyevnll11G2rVs2VLXXXedmjZtqpiYGHXq1Eljx451Hn/xxReVkJCghx9+WGfOnFH9+vX1/fffu9SlSouPj49OnDihrl276siRIwoODlZ4eLjz961mzZpauXKlRo4cqSZNmsiyLFWqVEkdO3Z0nmPs2LGaN2+e9uzZk+ZzderUSQMGDFCnTp1sn6oKALY6fdpMgUjLmTPmKjEAeJn4eFPG6PBhMyusSZOsv+jt9c6fl9auTUpC/fab66qsDodUr55JQLVoId1yi3RZnVqv53BIwcFmu/nmpP2WJe3ZI61bZxJU69aZ+lqRkeYi0RdfmHY+PlLNmkkjqRo0MHWrGE2FLOKwriwylF1P5HC4FDr/6aef1LhxYx06dMhZbFqSHnjgATkcDi1YsCDF86Q0UiosLExRUVEuI34k6eLFi9q9e7cqVKhwTR/8ebOwX/fu3XX69Gl9kfjP0UN169ZNDodD8+bNS7Pdnj17VKlSJW3YsEF169Z1T3C5WFb9LwCQhbp0kT78MPXjixdLbdq4L540REdHKygoKMW+Rk7lja8JyGkiIlK++D1tWvZc/PYacXHShg1JSah160w9pctdf33SSKhmza5+8QPGhQsmqXd5ourQoeTtgoOlzp2lUaPMSoBACtLb17BtpFRoaKgks9rb5UmpI0eOqHbt2qk+zt/fX/7+/tkdngsfH/O/DEiLZVlasWKF1qxZk2qbuLg4nThxQqNGjVKDBg1ISAHIXVatMnU7UtOunfT11+6LBwBsEhFhyoRcOTzg4EGzf+FCElNOCQnSli1JSahVq8wI2suVKZOUhGrRwhT1RsYFBEiNG5st0f79SQmqn382K+EeP26m+82dKw0ZIg0axBQ/ZJptSakKFSooNDRUy5YtcyahoqOjtX79evXt29eusIBMczgc2rt3b5pt1q5dq+bNm6tKlSpauHChmyIDABtduHD1aRLHjpmrrgCQC8THmxFSKc1XsSwzK2rAAOmee3Lx7Ixdu5KSUD/+aN4nLle0qKmdlJiIuu46ppNll8RaVfffb+7HxJhVC0eONKOqRo+W3nxTGjtWevTRnF+fC26XrUmps2fPasdlS1Lu3r1bmzZtchaiHjBggJ5//nldd911qlChgp599lmVKlXKOcUPSHS16XA5RbNmzeSmGbMAYK+nn5Zefjn14x9+KHXq5L54AMBDrF6dfAG4y1mWGZyyenUumq1x5IhJPiUmoq6szxoYaGqoJCahatf2nBXycht/f6ltW6l1a+mTT0xyatcu6bHHpFdekSZONIuWkCREOmVrUmrjxo1qfln1/0GDBkkydXfmzZunoUOH6ty5c+rdu7dOnz6tW265RYsXL6bmCwAAOdEff5gPCqmpU8cM+6ejCiAXO3w4a9vlSNHR0sqVSUmoLVtcj+fNawpqJyahbr7ZrJoHz5Enj/Tgg2ae6dtvS+PGSf/8I913n/nZTZpkEonAVWRrUupqo0IcDofGjRuncePGZWcYAAAgu1y6JAUFmdWPUrNnj1SunNtCAgBPdlk53SxplyNcvGhqEiUmoTZsMPMYL1e7dlISqkkTVl3NKfz8pCeekLp1kyZPNqOlfv5ZatpUuusu6cUXpRtusDtKeDDGPAIAgIybMsWMePL1TTkhNXWqmYNiWSSkAOAyTZqYutypDRp1OEwJnxw9yCQ+XvrlF5OQuO02s/pdixbShAkmYREfL1WuLPXpY6aAHTsm/f67eW+5/XYSUjlRoULS+PHSjh3m5+rjI331lVSjhtSjR9pzVpGr2VboHAAA5DC7dkmVKqV+PCTEzDfJtZV5AeDqfHykadPMKnsOh2vB88RE1dSpOexfqWVJW7cmjYRasUKKinJtU7Kk6wp5ZcvaEiqyWcmS0owZplr/M89In38uzZljakkOGCANGyYVLmxzkPAkJKUAAEDqLEuqVk3avj31Nlu2SNWruy8mAMjhwsOlhQvNKnyXDyApU8YkpMLDbQst/Q4ckJYuTVoh78oiWEFBrivkXX89NQVzk+uvlyIizLTNoUOlNWvMyLmZM01x9H79TNF05HokpQAAQHLvvWfqQ6RmxAjphRfcFw8AeJnwcOmee8wqe4cPmwEmTZp4+Agpy5KWLzeZs6+/dh3mlS+fdMstSUmounU9/MXALRo2lFatMlP5hg83I+oGD5Zee016/nmpc2dWUszl+OnnEvPmzVPhHDZMMifGfC0cDoe++OKLbH2OsWPHqvZlK2N1795d7du3z9bnTIllWerdu7eKFi0qh8OhTZs2SZJOnDih4sWLa8+VywCnIjY2VuXLl9fGjRuzL1ggNzlyxFzFdjhST0hdvGg+hJCQAoBr5uMjNWsmdepkvnpsDufiRTMFq1Ytk3D66ivzXtCggRn18uOP0qlTZuTU8OHSjTd68IvBtYiPN7MzP/rIfL2yXn2KHA7p7rulP/+U3nlHKlVK2rtXevhhk7z8/nvXBCdyFZJSHqh79+5yOBzJtrZt26br8eXLl9fUqVNd9nXs2FH//PNPNkTrKrclkrLS4cOHdfvtt7v1OadNm6Z58+a59TklafHixZo3b56+/vprHT58WP/73/8kSRMmTNA999yj8uXLp+s8fn5+evrppzVs2LBsjBbIBW67zXQYQ0NTPr52bVLRcobaA0DuceiQ9OyzpvJ6jx7S5s1SYKCZerVtm5ma9fzzZppevnx2R4tsFhEhlS9vftydO5uv5cub/emSN6/5Pfr3X2niRFMc/Y8/pLZtTV/k11+zMXp4KpJSHqpt27Y6fPiwy/bRRx9l+nwBAQEqXrx4FkbomeLi4rLlvJZl6dKlS9ly7kShoaHyd/OHvaCgIFuSiDt37lTJkiXVqFEjhYaGKm/evDp//rxmz56tHj16ZOhcXbp00Zo1a/TXX39lU7SAl/rmm6RRUT/8kPz4I48kJaIaNXJ/fAAA+2zcKD30kMk4PP+8dPy4KUw+ebKpJTV9ulS1qt1Rwo0iIkxx/isX0Tt40OxPd2JKMonN4cPNAioDB0p+fqY2Wf36Ztjgrl1ZGjs8W+5KSlmWdO6cPVsGhyP6+/srNDTUZStSpMh/L8PS2LFjVbZsWfn7+6tUqVJ68sknJUnNmjXT3r17NXDgQOcIKyn5CKbEaVxz5sxR2bJlVaBAAT3++OOKj4/XpEmTFBoaquLFi2vChAkucb3yyiuqUaOG8ufPr7CwMD3++OM6e/asJGnFihV65JFHFBUV5XzusWPHSpJiYmL09NNPq3Tp0sqfP79uvvlmrVixwuXc8+bNU9myZRUYGKh7771XJ06cSPN7tGfPHjkcDi1YsEC33nqr8uXLp/nz50uS3nnnHVWrVk358uXT9ddfrzfffNPlsT/99JNq166tfPnyqX79+vriiy9cppGtWLFCDodD3333nerVqyd/f3+tWbNGCQkJmjhxoipUqKCAgADVqlVLCxcudJ731KlT6tKli0JCQhQQEKDrrrtOc+fOlWSmmvXv318lS5ZUvnz5VK5cOU2cONH52Cun723evFktWrRQQECAihUrpt69ezu/11LS1LspU6aoZMmSKlasmPr165ehxNyV0/eaNWumJ598UkOHDlXRokUVGhrq/BkmOn36tHr27KmQkBAVKlRILVq00B9//JGh53ziiSe0b98+ORwO56iob7/9Vv7+/mrQoIGz7bhx41SqVCmX34V27dqpefPmSkhIkCQVKVJEjRs31scff5zuGIBcKzo6KRF1550pt4mKMu9Zc+a4NzYAgL0uXTLV12+5xUy/mz9fiosz9xculHbulJ5+WvrvMwlyj/h4U5Q/pY+0ifsGDEjnVL7LFSsmvfKKWUzloYdM/+Tjj02R9Keeko4du9bQkQPkrkLn589LBQrY89xnz0r582fJqT777DO9+uqr+vjjj1W9enVFRkY6kwIRERGqVauWevfurV69eqV5np07d+q7777T4sWLtXPnTnXo0EG7du1SlSpVtHLlSv3000969NFH1apVK918882SpDx58ui1115ThQoVtGvXLj3++OMaOnSo3nzzTTVq1EhTp07V6NGjtf2/VZoK/Pf97t+/v/7++299/PHHKlWqlD7//HO1bdtWmzdv1nXXXaf169erR48emjhxotq3b6/FixdrzJgx6fp+DB8+XC+//LLq1KnjTEyNHj1a06dPV506dfT777+rV69eyp8/v7p166bo6GjddddduuOOO/Thhx9q7969GjBgQKrnnjJliipWrKgiRYpo4sSJ+uCDDzRjxgxdd911WrVqlR566CGFhITo1ltv1bPPPqu///5b3333nYKDg7Vjxw5duHBBkvTaa69p0aJF+uSTT1S2bFnt379f+/fvT/F5z507pzZt2qhhw4basGGDjh49qp49e6p///4u0+2WL1+ukiVLavny5dqxY4c6duyo2rVrX/Vnn5Z3331XgwYN0vr167Vu3Tp1795djRs31m233SZJuv/++xUQEKDvvvtOQUFBevvtt9WyZUv9888/Klq06FXPP23aNFWqVEkzZ87Uhg0b5PNfvYHVq1erXr16Lm1HjhypxYsXq2fPnvr888/1xhtv6KefftIff/yhPJcVRLzpppu0evXqTL9mwOs98oiU1lTdr7+W2rVzWzgAvFN8fA4r2g0jKsqsiDZ9urRvn9nn6yt17GgSA/Xr2xtfLuVJf0+rVycfIXU5y5L27zftmjXLxBOULy+9/74pgD5smLRkiSmEPneuWblv4MAs+ywND2TlcFFRUZYkKyoqKtmxCxcuWH///bd14cIFs+Ps2cSJCO7fzp5N92vq1q2b5ePjY+XPn99lmzBhgmVZlvXyyy9bVapUsWJjY1N8fLly5axXX33VZd/cuXOtoKAg5/0xY8ZYgYGBVnR0tHNfmzZtrPLly1vx8fHOfVWrVrUmTpyYaqyffvqpVaxYsVSfx7Isa+/evZaPj4918OBBl/0tW7a0RowYYVmWZXXq1Mm64447XI537Ngx2bkut3v3bkuSNXXqVJf9lSpVsj788EOXfePHj7caNmxoWZZlvfXWW1axYsWSfi8sy5o1a5Ylyfr9998ty7Ks5cuXW5KsL774wtnm4sWLVmBgoPXTTz+5nLtHjx5Wp06dLMuyrLvuust65JFHUoz3iSeesFq0aGElJCSkeFyS9fnnn1uWZVkzZ860ihQpYp297Pfmm2++sfLkyWNFRkZalmV+T8qVK2ddunTJ2eb++++3OnbsmOL5Lcv83GvVquW8361bN+uee+5x3r/11lutW265xeUxN954ozVs2DDLsixr9erVVqFChayLFy+6tKlUqZL19ttvp/q8V3r11VetcuXKuey75557rEcffTRZ2507d1oFCxa0hg0bZgUEBFjz589P1mbatGlW+fLlU32+ZP8LgNxg7dq035datbI7whwjrb5GTuWNrwn2+uwzyypTxvXfTJkyZj88VGysZb3+umUFByf90IKDLevZZy3r0CG7o8vVPO3v6cMP0/eR94qPYJm3dKll1a2bdOLQUMuaMcOy4uKy6AngDunta+SukVKBgWbEkl3PnQHNmzfXW2+95bIvcRTK/fffr6lTp6pixYpq27at7rjjDt11113KmzdjP87y5curYMGCzvslSpSQj4+PywiUEiVK6OjRo877P/zwgyZOnKht27YpOjpaly5d0sWLF3X+/HkFpvIaN2/erPj4eFWpUsVlf0xMjIoVKyZJ2rp1q+69916X4w0bNtTixYuv+jrqX3b15ty5c9q5c6d69OjhMlro0qVLCgoKkiRt375dNWvWVL7LijHedNNNVz33jh07dP78eeeIoUSxsbGqU6eOJKlv376677779Ntvv6l169Zq3769Gv1Xi6V79+667bbbVLVqVbVt21Z33nmnWrduneLzbt26VbVq1VL+y64ING7cWAkJCdq+fbtKlCghSapevbpzpJEklSxZUps3b07ju3V1NWvWdLlfsmRJ5+/AH3/8obNnzzp/bokuXLignTt3XtPzXrhwweVnkqhixYqaMmWK+vTpo44dO6pz587J2gQEBOj8+fPX9PyAV4iJuXqh2SNHpFxQYxCA+yTWmrlyak9irZmFC6XwcHtiQwosS1q0yIxASVwIqWpVc79zZwqW28wT/55KlszadlfVqpW0YYO0YIFZ3XH3bumxx6RXXzUF0tu3N1P94BVyV1LK4cgxw/7y58+vypUrp3gsLCxM27dv1w8//KClS5fq8ccf1+TJk7Vy5Ur5+vqm+zmubOtwOFLcl1i7Z8+ePbrzzjvVt29fTZgwQUWLFtWaNWvUo0cPxcbGppqUOnv2rHx8fPTrr7+6JFCkpOl91+LyxE1izaVZs2Y5pxwmuvK5M3vub775RqVLl3Zpl1ig/Pbbb9fevXv17bffaunSpWrZsqX69eunKVOmqG7dutq9e7e+++47/fDDD3rggQfUqlUrl5pUGZXWzys7znn27FmVLFkyWT0wSddcMD04OFinTp1K8diqVavk4+OjPXv26NKlS8kSsCdPnlRISMg1PT+Qoz3zjOmkpebdd6WuXd0XD4Bc42q1ZhwOU2vmnnuYyucRNm40daFWrjT3Q0Kk556TevY0U/ZgK0/9e2rSRCpTxiTGUorN4TDHmzTJwifNk8cUPb/vPmnGDGn8eFN7KjxcathQmjTJ1DtDijxp+ufV5K5C514kICBAd911l1577TWtWLFC69atc46Q8fPzU3yGq8xd3a+//qqEhAS9/PLLatCggapUqaJDhw65tEnpuevUqaP4+HgdPXpUlStXdtlC/1t+vFq1alq/fr3L437++ecMx1iiRAmVKlVKu3btSvZcFSpUkCRVrVpVmzdvVkxMjPNxGzZsuOq5b7jhBvn7+2vfvn3Jzh0WFuZsFxISom7duumDDz7Q1KlTNXPmTOexQoUKqWPHjpo1a5YWLFigzz77TCdPnkz2XNWqVdMff/yhc+fOOfetXbtWefLkUVUbVzqpW7euIiMjlTdv3mTfg+Dg4Gs6d506dfT3338n279gwQJFRERoxYoV2rdvn8aPH5+szZYtW5yj1YBcY8uWpKLlKSWkqlWTEhJM75GEFIBskpFaM3AVH28WHHv2WbMtW5aJQtHptXevKSR9440mIZUvn7mgsWOH1LcvCSkPkd1/T/Hx0ooV0kcfma/p/X3z8ZGmTTO3rxyglHh/6tRsSnr4+UlPPmkK7Y8aZWYgrVtnsiz33COl8Pkht4uIMGW6mjc3gx+bNzf3M7RCohuRlPJQMTExioyMdNmOHz8uyaxSN3v2bG3ZskW7du3SBx98oICAAJUrV06SmZa3atUqHTx40PmYrFC5cmXFxcXp9ddf165du/T+++9rxowZLm3Kly+vs2fPatmyZTp+/LjOnz+vKlWqqEuXLuratasiIiK0e/du/fLLL5o4caK++eYbSdKTTz6pxYsXa8qUKfr33381ffr0dE3dS8lzzz2niRMn6rXXXtM///yjzZs3a+7cuXrllVckSZ07d1ZCQoJ69+6trVu36vvvv9eUKVMkyblaYUoKFiyop59+WgMHDtS7776rnTt36rffftPrr7+ud999V5I0evRoffnll9qxY4f++usvff3116pWrZoks3LhRx99pG3btumff/7Rp59+qtDQ0BRHGHXp0kX58uVTt27dtGXLFi1fvlxPPPGEHn74YefUPTu0atVKDRs2VPv27bVkyRLt2bNHP/30k0aOHKmNGzde07nbtGmjv/76y2W01IEDB9S3b1+99NJLuuWWWzR37ly98MILyRKWq1evTnUqJOBV4uOlokVND7BGjZTb7Nxpeq1//83QdgDZ7vDhrGmX2Q/LniKj8UdESCVKmFlKzz9vtlatzL4s/eAYFSWNGGGm5/23SrUeftiMOJkwQSpUKAufDNcqq/6eUnKtiYrwcDN18IoJIypTxk1TCgsVMqOlduyQevc2GbBFi0x/qGdPM4wLzumfVyY3E6d/emJiiqSUh1q8eLFKlizpst3y3/DEwoULa9asWWrcuLFq1qypH374QV999ZWzzs+4ceO0Z88eVapUKUunNNWqVUuvvPKKXnrpJf3vf//T/PnzNfGKq/ONGjXSY489po4dOyokJESTJk2SJM2dO1ddu3bV4MGDVbVqVbVv314bNmxQ2bJlJUkN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TI+2bdvqgQce8Jh36NAhhYSEaP78+ZJo5eavKEoBAAAAAHxm6lTp5pulPXs85+/da+d7szD1zTffqHr16qpWrZpuv/12ffzxxzLGJD0/Y8YM3XTTTeratatWrlyp+fPnq1GjRv/GPVVly5bViy++qP3792v//v3pft0TJ06of//++u233/THH3/oyiuvVNeuXXXixIkMxf/JJ58oJCREv//+u8aPH6/jx4+rbdu2qlevnlasWKHZs2frwIEDuuWWWyRJ+/fvV58+ffSf//xHGzdu1MKFC9WjRw+PfZ4/f37Sc1999ZWmTp2qESNGJD0/dOhQTZkyRZ988on++usvValSRZ06ddLRo0c9YnvmmWf03//+VytWrFDevHn1n//8J+m5vn37qmzZslq+fLn+/PNPDRs2TMHBwZKkrVu3qnPnzurZs6fWrFmjSZMm6bfffktRZLqUO++8U19++aXi4uKS5n3++ee64oor1LZt2wwdY/iYyeFiYmKMJBMTE+N0KAAAIAAFYq4RiPsEwHfOnDljNmzYYM6cOZPhdePjjSlb1hgp9ZvLZUxUlF3OG5o2bWrGjh1rjDHm/PnzplixYmbBggVJzzdp0sT07ds3zfXLly9v3njjDY95w4cPN3Xq1PGY98Ybb5jy5cunuZ2EhARTsGBB88MPPyTNk2SmTZuW5jqtWrUy9erV85g3cuRI07FjR495u3fvNpLM5s2bzZ9//mkkmR07dqS6zf79+5siRYqYU6dOJc177733TIECBUxCQoI5efKkCQ4ONl988UXS8+fOnTNlypQxo0ePNsYYs2DBAiPJzJs3L2mZGTNmGElJn5GCBQuaiRMnphrDoEGDzF133eUxb9GiRSZPnjzp/oydOXPGFC5c2EyaNClpXu3atc0LL7yQ9Di19w5Zc6nvgvTmGrSUAgAAAAD4xKJFKVtIXcgYafduu1x227x5s5YtW6Y+ffpIkvLmzavevXvro48+Slpm1apVateuXba/9oEDBzR48GBdeeWVioyMVEREhE6ePKldu3ZlaDsNGjTweLx69WotWLBABQoUSLpVr15dkm2BVKdOHbVr1061atVSr1699OGHH+rYsWMe26hTp47HWEtNmjTRyZMntXv3bm3dulXnz59Xs2bNkp4PDg5Wo0aNtHHjRo/t1K5dO2m6dOnSkqSDBw9Kkh599FHdeeedat++vV599VVt3brVYx8mTpzosQ+dOnVSYmKitm/fnq7jEhYWpn79+unjjz+WJP31119at26dBgwYkK714Zy8TgcAAAAAAMgd0tvjLQM949Lto48+Unx8vMqUKZM0zxij0NBQvf3224qMjFR4eHiGt5snTx6P7nCSdP78eY/H/fv315EjR/Tmm2+qfPnyCg0NVZMmTTI8WHn+/Pk9Hp88eVI33HCDXnvttRTLli5dWkFBQZo7d64WL16sn376SePGjdMzzzyjpUuXqmLFihl67ctxd8eTlDTeVmJioiQ77tZtt92mGTNmaNasWRo+fLi+/vpr3XTTTTp58qTuvvtuPfTQQym2Wa5cuXS//p133qm6detqz549mjBhgtq2bavy5ctnca/gbbSUAgAAAAD4xL8NaLJtufSKj4/Xp59+qv/+979atWpV0m316tUqU6aMvvrqK0m2tY97YOzUhISEKOGiywQWL15c0dHRHoWpVatWeSzz+++/66GHHlLXrl1Vs2ZNhYaGegxGnln169fX+vXrVaFCBVWpUsXj5i5guVwuNWvWTCNGjNDKlSsVEhKiadOmJW1j9erVOnPmTNLjP/74QwUKFFBUVJQqV66cNIaV2/nz57V8+XJdddVVGYq1atWqeuSRR/TTTz+pR48emjBhQtI+bNiwIUX8VapUUUhISLq3X6tWLTVs2FAffvihvvzyS48xreC/KEoBAAAAAHyiRQupbFnp34Y0KbhcUlSUXS47/fjjjzp27JgGDRqkq6++2uPWs2fPpC58w4cP11dffaXhw4dr48aNWrt2rUcrpAoVKujXX3/V3r17k4pKrVu31qFDhzR69Ght3bpV77zzjmbNmuXx+ldeeaU+++wzbdy4UUuXLlXfvn0z1SrrYvfff7+OHj2qPn36aPny5dq6davmzJmjgQMHKiEhQUuXLtUrr7yiFStWaNeuXZo6daoOHTqkGjVqJG3j3LlzGjRokDZs2KCZM2dq+PDheuCBB5QnTx7lz59f9957r5544gnNnj1bGzZs0ODBg3X69GkNGjQoXTGeOXNGDzzwgBYuXKidO3fq999/1/Lly5NiePLJJ7V48WI98MADWrVqlf755x999913GRro3O3OO+/Uq6++KmNM0lUT4d8oSgEAAAAAfCIoSHrzTTt9cWHK/XjsWLtcdvroo4/Uvn17RUZGpniuZ8+eWrFihdasWaPWrVvr22+/1ffff6+6deuqbdu2WrZsWdKyL774onbs2KHKlSurePHikqQaNWro3Xff1TvvvKM6depo2bJlevzxx1O8/rFjx1S/fn3169dPDz30kEqUKJHl/SpTpox+//13JSQkqGPHjqpVq5aGDBmiQoUKKU+ePIqIiNCvv/6qrl27qmrVqnr22Wf13//+V126dEnaRrt27XTllVeqZcuW6t27t2688Ua98MILSc+/+uqr6tmzp/r166f69etry5YtmjNnjgoXLpyuGIOCgnTkyBHdcccdqlq1qm655RZ16dIl6Qp/tWvX1i+//KK///5bLVq0UL169fT88897dLN84YUXVKFChcu+Vp8+fZQ3b1716dNHYWFh6TuIcJTLXNz5NYeJjY1VZGSkYmJiFBER4XQ4AAAgwARirhGI+wTAd86ePavt27erYsWKmf7Hf+pU6eGHPQc9j4qyBakePbInTlzegAEDdPz4cU2fPt3pUC6pf//+crlcmjhx4iWXcxcMly9frvr16/smuFzsUt8F6c01GOgcAAAAAOBTPXpI3brZq+zt32/HkGrRIvtbSCHnM8Zo4cKF+u2339Jc5vz58zpy5IieffZZXXvttRSkchCKUgAAAAAAnwsKklq3djoK+DuXy6WdO3decpnff/9dbdq0UdWqVTV58mQfRYbsQFEKAAAAAIBc6HLd4XKK1q1bK4ePTJRrMdA5AAAAAAAAfI6iFAAAAAAAAHyOohQAAAAAAAB8jqIUAAAAAAAAfI6iFAAAAAAAAHyOohQAAAAAAAB8jqIUAAAAAACZMHHiRBUqVMjpMDIkJ8acFS6XS9OnT/fqa7zwwguqW7du0uMBAwaoe/fuXn3N1BhjdNddd6lIkSJyuVxatWqVJOnIkSMqUaKEduzYka7tnDt3ThUqVNCKFSu8F+y/KEpdQkKCtHCh9NVX9j4hwemIAAAA/B85FAB/NGDAALlcrhS3zp07p2v9ChUqaOzYsR7zevfurb///tsL0XrKbYWk7LR//3516dLFp6/55ptvauLEiT59TUmaPXu2Jk6cqB9//FH79+/X1VdfLUl6+eWX1a1bN1WoUCFd2wkJCdHjjz+uJ5980ovRWnm9/go51NSp0sMPS3v2JM8rW1Z6802pRw/n4gIAAPBn5FAA/Fnnzp01YcIEj3mhoaGZ3l54eLjCw8OzGpbfO3/+vIKDg7N9u8YYJSQkKG9e75UmSpUq5bVtpyUyMtLnrylJW7duVenSpdW0adOkeadPn9ZHH32kOXPmZGhbffv21WOPPab169erZs2a2R1qElpKpWLqVOnmmz2TKUnau9fOnzrVmbgAAAD8GTkUkEsZI5065czNmAyFGhoaqlKlSnncChcu/O9uGL3wwgsqV66cQkNDVaZMGT300EOSpNatW2vnzp165JFHklpYSSlbMLm7cX388ccqV66cChQooPvuu08JCQkaPXq0SpUqpRIlSujll1/2iOt///ufatWqpfz58ysqKkr33XefTp48KUlauHChBg4cqJiYmKTXfuGFFyRJcXFxevzxx3XFFVcof/78aty4sRYuXOix7YkTJ6pcuXLKly+fbrrpJh05cuSSx2jHjh1yuVyaNGmSWrVqpbCwMH3xxReSpP/7v/9TjRo1FBYWpurVq+vdd9/1WHfx4sWqW7euwsLC1LBhQ02fPt2jG9nChQvlcrk0a9YsNWjQQKGhofrtt9+UmJioUaNGqWLFigoPD1edOnU0efLkpO0eO3ZMffv2VfHixRUeHq4rr7wyqbh47tw5PfDAAypdurTCwsJUvnx5jRo1Kmndi7vvrV27Vm3btlV4eLiKFi2qu+66K+lYS8ld78aMGaPSpUuraNGiuv/++3X+/PlLHrcLXdx9r3Xr1nrooYc0dOhQFSlSRKVKlUp6D92OHz+uO++8U8WLF1dERITatm2r1atXZ+g1H3zwQe3atUsulyupVdTMmTMVGhqqa6+9NmnZF198UWXKlPH4LFx33XVq06aNEhMTJUmFCxdWs2bN9PXXX6c7hsygpdRFEhLs2b3UvtuMkVwuacgQqVs3KSjI5+EBAAD4JXIoIBc7fVoqUMCZ1z55UsqfP1s2NWXKFL3xxhv6+uuvVbNmTUVHRycVBaZOnao6derorrvu0uDBgy+5na1bt2rWrFmaPXu2tm7dqptvvlnbtm1T1apV9csvv2jx4sX6z3/+o/bt26tx48aSpDx58uitt95SxYoVtW3bNt13330aOnSo3n33XTVt2lRjx47V888/r82bN0uSCvx7vB944AFt2LBBX3/9tcqUKaNp06apc+fOWrt2ra688kotXbpUgwYN0qhRo9S9e3fNnj1bw4cPT9fxGDZsmP773/+qXr16SYWp559/Xm+//bbq1aunlStXavDgwcqfP7/69++v2NhY3XDDDeratau+/PJL7dy5U0OGDElz22PGjFGlSpVUuHBhjRo1Sp9//rnGjx+vK6+8Ur/++qtuv/12FS9eXK1atdJzzz2nDRs2aNasWSpWrJi2bNmiM2fOSJLeeustff/99/rmm29Urlw57d69W7t37071dU+dOqVOnTqpSZMmWr58uQ4ePKg777xTDzzwgEd3uwULFqh06dJasGCBtmzZot69e6tu3bqXfe8v5ZNPPtGjjz6qpUuXasmSJRowYICaNWumDh06SJJ69eql8PBwzZo1S5GRkXr//ffVrl07/f333ypSpMhlt//mm2+qcuXK+uCDD7R8+XIF/ftju2jRIjVo0MBj2WeeeUazZ8/WnXfeqWnTpumdd97R4sWLtXr1auXJk9x2qVGjRlq0aFGm9zldTA4XExNjJJmYmJhs2d6CBcbY1OnStwULsuXlAACAn8vuXMMfeGOfyKGA3OPMmTNmw4YN5syZM3bGyZPp+wLwxu3kyXTH3b9/fxMUFGTy58/vcXv55ZeNMcb897//NVWrVjXnzp1Ldf3y5cubN954w2PehAkTTGRkZNLj4cOHm3z58pnY2NikeZ06dTIVKlQwCQkJSfOqVatmRo0alWas3377rSlatGiar2OMMTt37jRBQUFm7969HvPbtWtnnnrqKWOMMX369DFdu3b1eL53794ptnWh7du3G0lm7NixHvMrV65svvzyS495I0eONE2aNDHGGPPee++ZokWLJn8ujDEffvihkWRWrlxpjDFmwYIFRpKZPn160jJnz541+fLlM4sXL/bY9qBBg0yfPn2MMcbccMMNZuDAganG++CDD5q2bduaxMTEVJ+XZKZNm2aMMeaDDz4whQsXNicv+NzMmDHD5MmTx0RHRxtj7OekfPnyJj4+PmmZXr16md69e6e6fWPs+16nTp2kx/379zfdunVLetyqVSvTvHlzj3WuueYa8+STTxpjjFm0aJGJiIgwZ8+e9VimcuXK5v3330/zdS/2xhtvmPLly3vM69atm/nPf/6TYtmtW7eaggULmieffNKEh4ebL774IsUyb775pqlQoUKar5fiu+AC6c01aCl1kf37s3c5AACA3IAcCsjF8uWzLZaceu0MaNOmjd577z2Pee5WKL169dLYsWNVqVIlde7cWV27dtUNN9yQ4fGOKlSooIIFCyY9LlmypIKCgjxaoJQsWVIHDx5Mejxv3jyNGjVKmzZtUmxsrOLj43X27FmdPn1a+dLYx7Vr1yohIUFVq1b1mB8XF6eiRYtKkjZu3KibbrrJ4/kmTZpo9uzZl92Phg0bJk2fOnVKW7du1aBBgzxaC8XHxyeNn7R582bVrl1bYWFhSc83atTostvesmWLTp8+ndRiyO3cuXOqV6+eJOnee+9Vz5499ddff6ljx47q3r170rhJAwYMUIcOHVStWjV17txZ119/vTp27Jjq627cuFF16tRR/gta1zVr1kyJiYnavHmzSpYsKUmqWbNmUksjSSpdurTWrl17iaN1ebVr1/Z4XLp06aTPwOrVq3Xy5Mmk983tzJkz2rp1a5Ze98yZMx7viVulSpU0ZswY3X333erdu7duu+22FMuEh4fr9OnTWXr9y6EodZHSpbN3OQAAgNyAHArIxVyubOtC52358+dXlSpVUn0uKipKmzdv1rx58zR37lzdd999ev311/XLL79kaJDvi5d1uVypznOP3bNjxw5df/31uvfee/Xyyy+rSJEi+u233zRo0CCdO3cuzaLUyZMnFRQUpD///NOjgCIld+/LigsLN+4xlz788MOkLoduF792Zrc9Y8YMXXHFFR7LuQeh79Kli3bu3KmZM2dq7ty5ateune6//36NGTNG9evX1/bt2zVr1izNmzdPt9xyi9q3b+8xJlVGXer98sY2T548qdKlS6cYD0xSlq+6WKxYMR07dizV53799VcFBQVpx44dio+PT1GAPXr0qIoXL56l178cBjq/SIsW9gox/45bl4LLJUVF2eUAAABgkUMBCATh4eG64YYb9NZbb2nhwoVasmRJUguZkJAQJSQkZPtr/vnnn0pMTNR///tfXXvttapatar27dvnsUxqr12vXj0lJCTo4MGDqlKlisfNfcW5GjVqaOnSpR7r/fHHHxmOsWTJkipTpoy2bduW4rUqVqwoSapWrZrWrl2ruLi4pPWWL19+2W1fddVVCg0N1a5du1JsOyoqKmm54sWLq3///vr88881duxYffDBB0nPRUREqHfv3vrwww81adIkTZkyRUePHk3xWjVq1NDq1at16tSppHm///678uTJo2rVqmX4uGSX+vXrKzo6Wnnz5k1xDIoVK5albderV08bNmxIMX/SpEmaOnWqFi5cqF27dmnkyJEpllm3bl1SazVvoSh1kaAge8liKWVS5X48diwDdAIAAFyIHApAThAXF6fo6GiP2+HDhyXZq9R99NFHWrdunbZt26bPP/9c4eHhKl++vCTbLe/XX3/V3r17k9bJDlWqVNH58+c1btw4bdu2TZ999pnGjx/vsUyFChV08uRJzZ8/X4cPH9bp06dVtWpV9e3bV3fccYemTp2q7du3a9myZRo1apRmzJghSXrooYc0e/ZsjRkzRv/884/efvvtdHXdS82IESM0atQovfXWW/r777+1du1aTZgwQf/73/8kSbfddpsSExN11113aePGjZozZ47GjBkjSUlXK0xNwYIF9fjjj+uRRx7RJ598oq1bt+qvv/7SuHHj9Mknn0iSnn/+eX333XfasmWL1q9frx9//FE1atSQZK9c+NVXX2nTpk36+++/9e2336pUqVKptjDq27evwsLC1L9/f61bt04LFizQgw8+qH79+iV13XNC+/bt1aRJE3Xv3l0//fSTduzYocWLF+uZZ57RihUrsrTtTp06af369R6tpfbs2aN7771Xr732mpo3b64JEybolVdeSVGwXLRoUZpdIbMLRalU9OghTZ4sXdRyUGXL2vk9ejgTFwAAgD8jhwLg72bPnq3SpUt73Jo3by7JdpP68MMP1axZM9WuXVvz5s3TDz/8kDTOz4svvqgdO3aocuXK2dqlqU6dOvrf//6n1157TVdffbW++OILjRo1ymOZpk2b6p577lHv3r1VvHhxjR49WpI0YcIE3XHHHXrsscdUrVo1de/eXcuXL1e5cuUkSddee60+/PBDvfnmm6pTp45++uknPfvss5mK884779T//d//acKECapVq5ZatWqliRMnJrWUioiI0A8//KBVq1apbt26euaZZ/T8889LUqpjGl1o5MiReu655zRq1CjVqFFDnTt31owZM5K2HRISoqeeekq1a9dWy5YtFRQUpK+//lqSLWqNHj1aDRs21DXXXKMdO3Zo5syZHmN4ueXLl09z5szR0aNHdc011+jmm29Wu3bt9Pbbb2fqmGQXl8ulmTNnqmXLlho4cKCqVq2qW2+9VTt37kwqlu3YsUMulyvVLn6XUqtWLdWvX1/ffPONJMkYowEDBqhRo0Z64IEHJNnC1b333qvbb789qTvlkiVLFBMTo5tvvjn7djQVLmNSu3BvzhEbG6vIyEjFxMQoIiIiW7edkCAtWmQH5Cxd2jY35+weAAC5izdzDad4e5/IoYDAdvbsWW3fvl0VK1a8bLEBudsXX3yhgQMHKiYmRuHh4U6Hk6MtWLBAPXr00LZt21S4cOEMrTtjxgw98cQTWrduXarFutT07t1bderU0dNPP53mMpf6LkhvrsFA55cQFCS1bu10FAAAADkLORQA5E6ffvqpKlWqpCuuuEKrV6/Wk08+qVtuuYWCVDaYOXOmnn766QwXpCTpuuuu0z///KO9e/d6jNOVlnPnzqlWrVp65JFHMhNqhlCUAgAAAAAAWRYdHa3nn39e0dHRKl26tHr16qWXX37Z6bACwuuvv56l9YcMGZLuZUNCQjLdzTOjKEoBAAAAAIAsGzp0qIYOHep0GMhBGOgcAAAAAAAAPkdRCgAAAACQYTn8mlkAsig7vgMoSgEAAAAA0i04OFiSdPr0aYcjAeAk93eA+zshMxhTCgAAAACQbkFBQSpUqJAOHjwoScqXL59cLpfDUQHwFWOMTp8+rYMHD6pQoUIKCgrK9LYoSgEAAAAAMqRUqVKSlFSYApD7FCpUKOm7ILMoSgEAAAAAMsTlcql06dIqUaKEzp8/73Q4AHwsODg4Sy2k3ChKAQAAAAAyJSgoKFv+MQWQOzHQOQAAAAAAAHyOohQAAAAAAAB8jqIUAAAAAAAAfC7HjylljJEkxcbGOhwJAAAIRO4cw51zBALyJwAA4E3pzZ9yfFHqxIkTkqSoqCiHIwEAAIHsxIkTioyMdDqMbEH+BAAAfOFy+ZPL5PDTfomJidq3b58KFiwol8t12eVjY2MVFRWl3bt3KyIiwgcR5gwcl9RxXNLGsUkdxyV1HJfUcVxS52/HxRijEydOqEyZMsqTJzBGPsho/iT53/viLzguqeO4pI7jkjqOS+o4LqnjuKTO345LevOnHN9SKk+ePCpbtmyG14uIiPCLN8rfcFxSx3FJG8cmdRyX1HFcUsdxSZ0/HZdAaSHlltn8SfKv98WfcFxSx3FJHccldRyX1HFcUsdxSZ0/HZf05E+BcboPAAAAAAAAOQpFKQAAAAAAAPhcritKhYaGavjw4QoNDXU6FL/CcUkdxyVtHJvUcVxSx3FJHccldRwX/8T7kjqOS+o4LqnjuKSO45I6jkvqOC6py6nHJccPdA4AAAAAAICcJ9e1lAIAAAAAAIDzKEoBAAAAAADA5yhKAQAAAAAAwOcoSgEAAAAAAMDnAr4otWPHDg0aNEgVK1ZUeHi4KleurOHDh+vcuXOXXO/s2bO6//77VbRoURUoUEA9e/bUgQMHfBS1b7z88stq2rSp8uXLp0KFCqVrnQEDBsjlcnncOnfu7N1AfSwzx8UYo+eff16lS5dWeHi42rdvr3/++ce7gfrY0aNH1bdvX0VERKhQoUIaNGiQTp48ecl1WrduneLzcs899/goYu955513VKFCBYWFhalx48ZatmzZJZf/9ttvVb16dYWFhalWrVqaOXOmjyL1rYwcl4kTJ6b4bISFhfkwWu/79ddfdcMNN6hMmTJyuVyaPn36ZddZuHCh6tevr9DQUFWpUkUTJ070epy+ltHjsnDhwhSfFZfLpejoaN8EnIuRQ6WNHCp15FCpI4eyyJ9SR/6UEjlU6gI1hwr4otSmTZuUmJio999/X+vXr9cbb7yh8ePH6+mnn77keo888oh++OEHffvtt/rll1+0b98+9ejRw0dR+8a5c+fUq1cv3XvvvRlar3Pnztq/f3/S7auvvvJShM7IzHEZPXq03nrrLY0fP15Lly5V/vz51alTJ509e9aLkfpW3759tX79es2dO1c//vijfv31V911112XXW/w4MEen5fRo0f7IFrvmTRpkh599FENHz5cf/31l+rUqaNOnTrp4MGDqS6/ePFi9enTR4MGDdLKlSvVvXt3de/eXevWrfNx5N6V0eMiSRERER6fjZ07d/owYu87deqU6tSpo3feeSddy2/fvl3XXXed2rRpo1WrVmnIkCG68847NWfOHC9H6lsZPS5umzdv9vi8lChRwksRwo0cKm3kUKkjh0odORT5U1rIn1JHDpW6gM2hTC40evRoU7FixTSfP378uAkODjbffvtt0ryNGzcaSWbJkiW+CNGnJkyYYCIjI9O1bP/+/U23bt28Go+/SO9xSUxMNKVKlTKvv/560rzjx4+b0NBQ89VXX3kxQt/ZsGGDkWSWL1+eNG/WrFnG5XKZvXv3prleq1atzMMPP+yDCH2nUaNG5v777096nJCQYMqUKWNGjRqV6vK33HKLue666zzmNW7c2Nx9991ejdPXMnpcMvK9EwgkmWnTpl1ymaFDh5qaNWt6zOvdu7fp1KmTFyNzVnqOy4IFC4wkc+zYMZ/EhEsjh/JEDpU6cqhk5FAW+VPqyJ8ujxwqdYGUQwV8S6nUxMTEqEiRImk+/+eff+r8+fNq37590rzq1aurXLlyWrJkiS9C9GsLFy5UiRIlVK1aNd177706cuSI0yE5avv27YqOjvb4vERGRqpx48YB83lZsmSJChUqpIYNGybNa9++vfLkyaOlS5dect0vvvhCxYoV09VXX62nnnpKp0+f9na4XnPu3Dn9+eefHu91njx51L59+zTf6yVLlngsL0mdOnUKmM+GlLnjIkknT55U+fLlFRUVpW7dumn9+vW+CNdv5YbPSlbUrVtXpUuXVocOHfT77787HU6uRQ6VNeRQnsihckcORf6UOvKn7JMbPi9Z4e85VF6nA/C1LVu2aNy4cRozZkyay0RHRyskJCRFX/iSJUv6Xf9LX+vcubN69OihihUrauvWrXr66afVpUsXLVmyREFBQU6H5wj3Z6JkyZIe8wPp8xIdHZ2imWfevHlVpEiRS+7jbbfdpvLly6tMmTJas2aNnnzySW3evFlTp071dshecfjwYSUkJKT6Xm/atCnVdaKjowP6syFl7rhUq1ZNH3/8sWrXrq2YmBiNGTNGTZs21fr161W2bFlfhO130vqsxMbG6syZMwoPD3coMmeVLl1a48ePV8OGDRUXF6f/+7//U+vWrbV06VLVr1/f6fByFXKorCGHSokcKnfkUORPqSN/yj7kUKnLKTlUjm0pNWzYsFQH7brwdvEf8969e9W5c2f16tVLgwcPdihy78rMccmIW2+9VTfeeKNq1aql7t2768cff9Ty5cu1cOHC7NsJL/D2ccmpvH1c7rrrLnXq1Em1atVS37599emnn2ratGnaunVrNu4FcqImTZrojjvuUN26ddWqVStNnTpVxYsX1/vvv+90aPAz1apV0913360GDRqoadOm+vjjj9W0aVO98cYbToeWY5FDpY4cKnXkUKkjh4ITyJ+QETklh8qxLaUee+wxDRgw4JLLVKpUKWl63759atOmjZo2baoPPvjgkuuVKlVK586d0/Hjxz3O9B04cEClSpXKSthel9HjklWVKlVSsWLFtGXLFrVr1y7btpvdvHlc3J+JAwcOqHTp0knzDxw4oLp162Zqm76S3uNSqlSpFAMuxsfH6+jRoxn6m2jcuLEke7a9cuXKGY7XacWKFVNQUFCK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ZHrb7733ngoUKKBTp05p/vz5GjdunP766y/99ttvqS5vjNHAgQO1YMECXXfddfr+++/10EMP6Z133kmx7JIlS/TMM8+oa9euevbZZ5U3b15NmTJFt956qzZs2KARI0ZkOu7MmDVrlrp3767WrVtr3LhxWrt2rV566SUdPHhQ77333iXX3b17t5o0aaKgoCA98cQTyp8/vyZMmKCOHTtq/vz5atmyZdKy3ny/AABIDTlU2kJDQ/V///d/HvMiIyOzbZsxMTH67rvvNHLkSG3dulVffPFFquucO3dON910k/7++2916tRJ77zzjsqVK6ehQ4emWPa7777Ta6+9pu7du6t///6Kj4/Xp59+qg4dOujjjz/WwIEDsxR/Rr3//vu655571LNnTz366KNatGiRHnroIZ0+fVpPPvnkJdf966+/1Lx5c0VFRWn48OFKTEzUu+++q1atWmnZsmWqVq1a0rK33367vv32W/3nP/9Rw4YN9ccff+i5557Trl279MEHH3h7NwFnGQCOmTBhgpFkli9fnuK5+fPnm/DwcFO+fHlz+vRpn8aVmJjo89dMrxUrVhhJZtSoUZlaf/jw4UaSOXTokMf83r17G0lm6dKlqa735JNPGpfLZd555x1jjDEjR440ksyrr76aYtlt27aZHTt2eMxLTEw0bdu2NaGhoebkyZOZij2zrrrqKlOnTh1z/vz5pHnPPPOMcblcZuPGjZdc97777jN58+Y1mzZtSpp36tQpExUVZerXr3/Z187q+wUAQGrIoS6tf//+Jn/+/F7fZmJiorn22muNy+Uy0dHRKdZJTEw0ffr0MSEhIWb69OkmMTHRDB482LhcLvPVV1+lWH7dunUpcrSzZ8+a6tWrm7Jly2br/lzO6dOnTdGiRc11113nMb9v374mf/785ujRo5dcv2vXrqZw4cLm8OHDSfP27dtnChQoYHr06JE0b9myZUaSee655zzWf+yxx4zL5TKrV6/Ohr0B/Bfd9wA/1bZtWz333HPauXOnPv/8c4/nNm3apJtvvllFihRRWFiYGjZsqO+//z7FNtasWaNWrVopPDxcZcuW1UsvvaQJEybI5XJ5dKmqUKGCrr/+es2ZM0cNGzZUeHi43n//fUm2ufWQIUMUFRWl0NBQValSRa+99poSExM9XisxMVFjx45VzZo1FRYWppIlS+ruu+/WsWPHPJaLiYnRpk2bFBMTk6njUqFChaS4slOLFi0kSVu3bk3x3LvvvqvRo0fr3Xff1X333SdJevbZZ/XSSy/pqaee0ldffeWxfMWKFVW+fHmPeS6XS927d1dcXJy2bduWrbFfyoYNG7Rhwwbdddddyps3uXHsfffdJ2OMJk+efMn1Fy1apHr16nmczcuXL59uvPFG/fXXX/rnn38uub633i8AANJCDpUsISFBsbGx6V4+o1wul5o3by5jTKr5zZNPPqkpU6Zo8uTJ6tatm1wul95//30NHjxY/fv31y+//OKxfM2aNVWsWDGPeaGhoeratav27Nnj026ZCxYs0JEjR5JyP7f7779fp06d0owZMy65/qJFi9S+fXsVLVo0aV7p0qXVqlUr/fjjjzp58mTScpJ06623eqx/6623yhjj6PAPgC/QfQ/wY/369dPTTz+tn376SYMHD5YkrV+/Xs2aNdMVV1yhYcOGKX/+/Prmm2/UvXt3TZkyRTfddJMkae/evWrTpo1cLpeeeuop5c+fX//3f/+n0NDQVF9r8+bN6tOnj+6++24NHjxY1apV0+nTp9WqVSvt3btXd999t8qVK6fFixfrqaee0v79+zV27Nik9e+++25NnDhRAwcO1EMPPaTt27fr7bff1sqVK/X7778rODhYkjRt2jQNHDhQEyZM0IABA9J1HI4cOaKEhATt2rVLL774oiSpXbt2mTyqqXMnmIULF/aY//333+vhhx/W+PHjddddd3k898wzzyhPnjwaMGCASpUqpTZt2lzyNaKjoyUpRbKVmsOHD6cr7oIFC6b5nkq2S50kNWzY0GN+mTJlVLZs2aTn0xIXF5fimEi2MCXZsRKuvPJKj+d88X4BAHAp5FDS6dOnFRERodOnT6tw4cLq06ePXnvtNRUoUCBrB/ciaeVQ77zzjt58801NmTJF119/fdJ8l8ul8ePHK0+ePOrevbt+++031axZ85KvER0drXz58iXlH2lJTEzU0aNH0xV3ZGRk0rFNTVo5VIMGDZQnTx6tXLlSt99+e5rrx8XFKTw8PMX8fPny6dy5c1q3bp2uvfZaxcXFSVKKZS/MtYCA5nBLLSBXu1TTc7fIyEhTr169pMft2rUztWrVMmfPnk2al5iYaJo2bWquvPLKpHkPPvigcblcZuXKlUnzjhw5YooUKWIkme3btyfNL1++vJFkZs+e7fHaI0eONPnz5zd///23x/xhw4aZoKAgs2vXLmOMMYsWLTKSzBdffOGx3OzZs1PMd+/zhAkT0j4wFwkNDTWSjCRTtGhR89Zbb6V73Yu5u+9t3rzZHDp0yOzYscN8/PHHJjw83BQvXtycOnUq09u+lCNHjpgSJUqYFi1apGt59/5e7na54/j6668bSUnv1YWuueYac+21115y/RtuuMEUKlTIxMbGesxv0qSJkWTGjBmTYp3sfL8AAEgNOdSlDRs2zDz55JNm0qRJ5quvvjL9+/c3kkyzZs08uvNnhLv73qFDh8yhQ4fMli1bzJgxY4zL5TJXX321SUxMzNR2L+eff/4xYWFhpl+/fpdddvv27enOoRYsWHDJbd1///0mKCgo1eeKFy9ubr311kuuX6tWLVO1alUTHx+fNC8uLs6UK1fOSDKTJ082xhgzZcoUI8l89tlnHuuPHz/eSDJXX331ZfcbyMloKQX4uQIFCiQ1VT569Kh+/vlnvfjiizpx4oRHE+ZOnTpp+PDh2rt3r6644grNnj1bTZo0Ud26dZOWKVKkiPr27ZvqVUMqVqyoTp06ecz79ttv1aJFCxUuXNij5U779u316quv6tdff1Xfvn317bffKjIyUh06dPBYrkGDBipQoIAWLFig2267TZK9ckt6W0i5zZo1S2fPntXGjRv1+eef69SpUxlaPzUXdkeTpFq1amnChAmXPQOXGYmJierbt6+OHz+e7iu2zJ07N13LXe7M4pkzZyQp1bO7YWFhl23Sf++99+qHH35Q79699fLLLyt//vx69913tWLFCo/tX8gb7xcAABmVm3OoUaNGeTy+9dZbVbVqVT3zzDOaPHlyiq5i6XXq1CkVL17cY17z5s31ySefyOVyZWqbl3L69Gn16tVL4eHhevXVVy+7fKlSpdKdQ9WpU+eSz585c0YhISGpPhcWFpZqDnSh++67T/fee68GDRqkoUOHKjExUS+99JL279+ftH1J6tq1q8qXL6/HH39c+fLlU4MGDbR06VI988wzyps372VfB8jpKEoBfu7kyZMqUaKEJGnLli0yxui5557Tc889l+ryBw8e1BVXXKGdO3eqSZMmKZ6vUqVKqutVrFgxxbx//vlHa9asSZF8XPha7uViYmKS4kxrucxyd4vr0qWLunXrpquvvloFChS45CWFL2fKlCmKiIjQoUOH9NZbb2n79u2pNrHODg8++KBmz56tTz/99LIJkFv79u2z5bXd++RuGn6hs2fPXnafu3TponHjxmnYsGGqX7++JPsZevnllzV06NBUuwB44/0CACCjyKE8PfLII3ruuec0b968TBelwsLC9MMPP0iS9uzZo9GjR+vgwYNeyaESEhKSrlw8a9asdF3FNywsLFtzqHPnzqX6XHpyqHvuuUe7d+/W66+/rk8++USS7Qo4dOhQvfzyy0k5VFhYmGbMmKFbbrlFPXv2lGRPJo4ePdpjOSBQUZQC/NiePXsUExOTlAS5B8Z8/PHHU5yRc0srYbqc1H5YExMT1aFDh1Qv2StJVatWTVquRIkSaV4KOK2ELDMqV66sevXq6YsvvshSkaNly5ZJYzvdcMMNqlWrlvr27as///xTefJk3zUgRowYoXfffVevvvqq+vXrl+713ONPXU5kZOQlk6LSpUtLkvbv36+oqCiP5/bv369GjRpd9jUeeOABDRw4UGvWrFFISIjq1q2rjz76SFLyZyAt2fV+AQCQEeRQqcdZtGjRdI+5lJqgoCCPok+nTp1UvXp13X333akOGJ8VgwcP1o8//qgvvvhCbdu2Tdc6CQkJOnToULqWLVKkSJotoSSbQyUkJOjgwYMeRcNz587pyJEj6SqSvfzyy3r88ce1fv16RUZGqlatWnr66acleeZQNWvW1Lp167RhwwYdO3ZMV111lcLDw/XII4+oVatW6dofIKeiKAX4sc8++0ySkpKnSpUqSZKCg4MvexaofPny2rJlS4r5qc1LS+XKlXXy5MnLvlblypU1b948NWvWzGutjS505syZVFv+ZFaBAgU0fPhwDRw4UN98802mzx5e7J133tELL7ygIUOG6Mknn8zQuu5i0uVcbrBTd9eDFStWeBSg9u3bpz179qQYvD0t+fPn9zhrPG/ePIWHh6tZs2aXXTe73y8AAC6HHCqlEydO6PDhw9la6CpdurQeeeQRjRgxQn/88YeuvfbabNnuE088oQkTJmjs2LHq06dPutfbvXt3qi3XUrNgwQK1bt06zecvzKG6du2aNH/FihVKTEz06N55KYULF1bz5s2THs+bN09ly5ZV9erVPZZzuVwewzLMnDlTiYmJ2dbyC/BX2dccAEC2+vnnnzVy5EhVrFhRffv2lSSVKFFCrVu31vvvv5/UH/1CF54Z6tSpk5YsWaJVq1YlzTt69GiaZ+JSc8stt2jJkiWaM2dOiueOHz+u+Pj4pOUSEhI0cuTIFMvFx8fr+PHjSY/Teznj+Pj4FJdClqRly5Zp7dq1Ka6EklV9+/ZV2bJl9dprr2XL9iZNmqSHHnpIffv21f/+978Mrz937tx03dI62+tWs2ZNVa9eXR988IESEhKS5r/33ntyuVy6+eabk+al971ZvHixpk6dqkGDBikyMlKS798vAADSkttzqLNnz3qMmeU2cuRIGWPUuXPndO9Hejz44IPKly9fusZ8So/XX39dY8aM0dNPP62HH344Q+u6x5RKz+1yQyq0bdtWRYoU0Xvvvecx/7333lO+fPl03XXXJc07fPiwNm3apNOnT19ym5MmTdLy5cs1ZMiQS7bMP3PmjJ577jmVLl06Q0U5ICeipRTgB2bNmqVNmzYpPj5eBw4c0M8//6y5c+eqfPny+v777xUWFpa07DvvvKPmzZurVq1aGjx4sCpVqqQDBw5oyZIl2rNnj1avXi1JGjp0qD7//HN16NBBDz74YNLljMuVK6ejR4+mazDKJ554Qt9//72uv/56DRgwQA0aNNCpU6e0du1aTZ48WTt27FCxYsXUqlUr3X333Ro1apRWrVqljh07Kjg4WP/884++/fZbvfnmm0nFj/RezvjkyZOKiopS7969VbNmTeXPn19r167VhAkTFBkZmWI8iNatW+uXX36RMSYT74A9c/rwww/riSee0OzZs7OUsC1btkx33HGHihYtqnbt2qVIYps2bZp0xjYt2XlW7PXXX9eNN96ojh076tZbb9W6dev09ttv684771SNGjWSlkvtvdm5c6duueUW3XjjjSpVqpTWr1+v8ePHq3bt2nrllVeS1s3o+wUAQHYgh0opOjpa9erVU58+fZJa48yZM0czZ85U586d1a1bN4/lK1SoIEnasWNHBo58sqJFi2rgwIF69913tXHjRo/cIqOmTZumoUOH6sorr1SNGjX0+eefezzfoUMHlSxZMs31s3tMqZEjR+r+++9Xr1691KlTJy1atEiff/65Xn75ZRUpUiRp2bffflsjRozwaH3166+/6sUXX1THjh1VtGhR/fHHH5owYYI6d+6coth2yy23qEyZMrrqqqsUGxurjz/+WNu2bdOMGTNUsGDBbNkfwG85e/E/IHdzX9rXfQsJCTGl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IxR17NhRP/zwgyZMmKD09HS99957WrhwodP+69evr7///e/atWuX1q1bp379+hXpW8WrDR8+XCdPnlTfvn2Vlpam9PR0LV68WI888ojy8vK0bt06/fGPf9T69et16NAhzZ07Vz/88IMaNWrk2EZubq4GDRqknTt3asGCBRo9erRGjBihoKAglS1bVsOGDdOzzz6rRYsWaefOnRoyZIjOnTunQYMGFarG8+fPa8SIEUpNTdXBgwe1Zs0apaWlOWoYNWqUvv76a40YMUKbN2/Wd999p88//9ytiToLDB48WK+99pqMMY5f/QH8UkFT6orTOgAELvIT+Yn8hCvRlAKAYujVS/rkE+mmm5yX16hhX96rl+f3+eGHH6pr166Kjo6+5rHevXtr/fr12rp1qzp27Kg5c+bo3//+t1q0aKHOnTvr22+/daw7btw4HThwQHXr1lVMTIwkqVGjRvrTn/6k9957T82bN9e3336rZ5555pr9nzp1Sq1atVL//v0dPxFcXNWrV9eaNWuUl5enbt26qWnTpnryySdVoUIFBQUFKSoqSitXrlSPHj3UoEED/f73v9ebb76p7t27O7bRpUsX1a9fX3feeaf69OmjX/7ylxozZozj8ddee029e/dW//791apVK+3bt0+LFy9WxYoVC1VjcHCwTpw4oYcfflgNGjTQgw8+qO7duzt+oaZZs2b6z3/+o7179+qOO+5Qy5Yt9fLLLzudJjBmzBinn4i+nr59+6pMmTLq27evwsPDCzeIQEnEkVIArkJ+Ij+Rn1DAZq4++dXPnDlzRtHR0crOzlZUVJTV5QDwIxcuXFBGRoZq165d7H+08vKkVavsk3LGxdkPOff0N3y4sYEDB+r06dOaN2+e1aXc0IABA2Sz2TRjxowbrlcQeNPS0tSqVSvfFBfAbvR5UBqzhs9eU36+VL68dO6ctHu3lJjovX0B8BlPZSjyk/XITygOT+QnJjoHAA8IDpY6drS6CpR0xhilpqZq9erV113n0qVLOnHihH7/+9/r1ltvJVDBv+3fb29IhYdL9epZXQ2AEob8hMIgP5VuNKUAAPARm82mgwcP3nCdNWvWqFOnTmrQoIE++eQTH1UGeEnBqXs338zhDwCAIiE/lW40pQAApcLPHc7tLzp27HjNz0oDfov5pACgRCM/wWpMdA4AAADvoCkFAABugKYUAAAA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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# overview plot\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.metrics import r2_score\n", + "\n", + "# Generating demo data\n", + "np.random.seed(42)\n", + "x = np.random.normal(0, 1, 20)\n", + "\n", + "# This is the actual equation, so we could check exactly what coefficients our regression found.\n", + "y= -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)\n", + "\n", + "# Reshape x for sklearn\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "\n", + "# Simple linear regression\n", + "linear_regressor = LinearRegression()\n", + "linear_regressor.fit(x, y)\n", + "y_pred_linear = linear_regressor.predict(x)\n", + "\n", + "# Polynomial regression (underfit)\n", + "poly_features2 = PolynomialFeatures(degree=2)\n", + "x_poly2 = poly_features2.fit_transform(x)\n", + "poly_regressor2 = LinearRegression()\n", + "poly_regressor2.fit(x_poly2, y)\n", + "y_pred_poly2 = poly_regressor2.predict(x_poly2)\n", + "\n", + "# Polynomial regression (well-fit)\n", + "poly_features3 = PolynomialFeatures(degree=3)\n", + "x_poly3 = poly_features3.fit_transform(x)\n", + "poly_regressor3 = LinearRegression()\n", + "poly_regressor3.fit(x_poly3, y)\n", + "y_pred_poly3 = poly_regressor3.predict(x_poly3)\n", + "\n", + "# Polynomial regression (overfit)\n", + "poly_features5 = PolynomialFeatures(degree=5)\n", + "x_poly5 = poly_features5.fit_transform(x)\n", + "poly_regressor5 = LinearRegression()\n", + "poly_regressor5.fit(x_poly5, y)\n", + "y_pred_poly5 = poly_regressor5.predict(x_poly5)\n", + "\n", + "# R^2 Scores\n", + "r2_linear = r2_score(y, y_pred_linear)\n", + "r2_poly2 = r2_score(y, y_pred_poly2)\n", + "r2_poly3 = r2_score(y, y_pred_poly3)\n", + "r2_poly5 = r2_score(y, y_pred_poly5)\n", + "\n", + "# Plotting\n", + "plt.figure(figsize=(12, 10))\n", + "\n", + "# Plot simple linear regression\n", + "plt.subplot(2, 2, 1)\n", + "plt.scatter(x, y, color='blue', label='Actual response, yi')\n", + "plt.plot(x, y_pred_linear, color='red', label='Estimated regression line, f(x)')\n", + "plt.title(f'Degree: 1, R^2 = {r2_linear:.2f}')\n", + "plt.legend()\n", + "\n", + "# Plot underfit polynomial regression\n", + "plt.subplot(2, 2, 2)\n", + "plt.scatter(x, y, color='blue', label='Actual response, yi')\n", + "sorted_axis = np.argsort(x[:, 0])\n", + "plt.plot(x[sorted_axis], y_pred_poly2[sorted_axis], color='red', label='Estimated regression line, f(x)')\n", + "plt.title(f'Degree: 2, R^2 = {r2_poly2:.2f}')\n", + "plt.legend()\n", + "\n", + "# Plot well-fit polynomial regression\n", + "plt.subplot(2, 2, 3)\n", + "plt.scatter(x, y, color='blue', label='Actual response, yi')\n", + "sorted_axis = np.argsort(x[:, 0])\n", + "plt.plot(x[sorted_axis], y_pred_poly3[sorted_axis], color='red', label='Estimated regression line, f(x)')\n", + "plt.title(f'Degree: 3, R^2 = {r2_poly3:.2f}')\n", + "plt.legend()\n", + "\n", + "# Plot overfit polynomial regression\n", + "plt.subplot(2, 2, 4)\n", + "plt.scatter(x, y, color='blue', label='Actual response, yi')\n", + "sorted_axis = np.argsort(x[:, 0])\n", + "plt.plot(x[sorted_axis], y_pred_poly5[sorted_axis], color='red', label='Estimated regression line, f(x)')\n", + "plt.title(f'Degree: 5, R^2 = {r2_poly5:.2f}')\n", + "plt.legend()\n", + "\n", + "# Show the plots\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "51bb7f38-423d-468b-bac5-052d1aa0d6b1", + "metadata": {}, + "source": [ + "## Polynomial Regression\n", + "\n", + "In terms of execution, we can use `sklearn`'s `sklearn.preprocessing.PolynomialFeatures` functionality to perform linear regression with a higher degree. This is exactly what was used in the overview plot above, but I wanted to isolate the code for easier comparison to Lasso and Ridge regression below.\n", + "\n", + "Some additional things to keep in mind:\n", + "\n", + "1. **Choice of Polynomial Degree**: Determining the appropriate degree of the polynomial is critical. A higher-degree polynomial can fit the training data very well but might perform poorly on unseen data due to overfitting. Various model selection techniques, such as cross-validation, can be used to choose a polynomial degree that balances bias and variance.\n", + "\n", + "2. **Feature Scaling**: Polynomial terms can have very different scales, especially for higher degrees, which can make the regression model sensitive to the scale of the input features. Normalizing or standardizing the features before applying polynomial regression can help with model convergence and interpretation.\n", + "\n", + "3. **Multivariate Polynomial Regression**: While your introduction focuses on polynomial regression with a single independent variable ($x_1$), it's important to note that polynomial regression can be extended to multiple independent variables, allowing for interaction terms between different variables (e.g., $x_1x_2$, $x_1^2x_2$, etc.). This introduces complexity in model interpretation but can capture interactions between predictors that are not apparent in single-variable analyses.\n", + "\n", + "4. **Computational Complexity**: As the degree of the polynomial and the number of independent variables increase, the computational complexity of fitting the regression model also increases. This is due to the larger number of terms and interactions that need to be calculated and optimized. It's important to balance the model's complexity with computational constraints.\n", + "\n", + "5. **Analyzing Residuals**: When using polynomial regression, it becomes even more important to analyze residuals to ensure that the assumptions of linear regression are still met. This includes checking for homoscedasticity, normality of residuals, and absence of autocorrelation. If these assumptions are violated, the results of the regression, including any inference drawn from the coefficients, may not be valid.\n", + "\n", + "### On `make_pipeline`\n", + "\n", + "`make_pipeline` from `sklearn.pipeline` is a utility function that simplifies the process of creating a pipeline of transformations with a final estimator. In machine learning workflows, it's often necessary to chain together multiple steps such as preprocessing (like scaling features or applying polynomial expansions) and then applying a model (like LinearRegression, Lasso, or Ridge). A pipeline bundles these steps into a single object that behaves like a compound estimator. \n", + "\n", + "When you use `make_pipeline`, you can pass it a series of transformations followed by an estimator, and it automatically names each step based on its class. The steps are executed in sequence: each step's `fit_transform()` method is called on the input data (except for the last step, where only `fit()` is called), transforming the data along the way, until it finally fits the model on the transformed data. This streamlines the code, making it cleaner and easier to read, and reduces the risk of mistakes (like applying transformations to the training data but forgetting to do so on the test data).\n", + "\n", + "The intro plot above does not use a pipeline, but Lasso and Ridge specifically benefit from it. In this next example, we will pipeline from [PolynomialFeatures](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html) (a preprocessor) to [LinearRegression](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html) (a model).\n", + "\n", + "This allows us to convert this block of code:\n", + "\n", + "```python\n", + "# Polynomial regression (well-fit)\n", + "poly_features3 = PolynomialFeatures(degree=3)\n", + "x_poly3 = poly_features3.fit_transform(x)\n", + "poly_regressor3 = LinearRegression()\n", + "poly_regressor3.fit(x_poly3, y)\n", + "y_pred_poly3 = poly_regressor3.predict(x_poly3)\n", + "```\n", + "\n", + "into this:\n", + "\n", + "```python\n", + "poly = make_pipeline(PolynomialFeatures(degree), LinearRegression())\n", + "poly.fit(X, y)\n", + "```\n", + "\n", + "You can imagine that as you add additional steps to transform your data, the first style of code will grow from 6 lines, to 9, to 12... while the second example simply adds more \"machinery\" to the sequence described in `make_pipeline(...)`.\n", + "\n", + "For instance, when used with `LinearRegression`, `Lasso`, or `Ridge` in the context of polynomial regression, you would typically create a pipeline that first expands your features into a polynomial feature space (using `PolynomialFeatures`) and then scales them (using `StandardScaler`, although not in these basic examples, it's a common practice), before finally applying the regression model. This ensures that the feature expansion and scaling are part of the model fitting process, which is particularly important for cross-validation and deploying the model for predictions on new data.\n", + "\n", + "To get the coefficients and intercept out of a pipeline that ends in linear regression, you'll have to reach inside the pipeline via the name it generates for its different steps. `poly_regressor3.coef_` becomes `poly['linearregression'].coef`, where the string `'linearregression'` is generated from the `LinearRegression` object that was passed into the pipeline." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0ff250a3-56ab-49aa-a03b-2e13b64922b0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import Lasso\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.pipeline import make_pipeline\n", + "# Generating demo data\n", + "np.random.seed(42)\n", + "x = np.random.normal(0, 1, 20)\n", + "X = x[:, np.newaxis]\n", + "\n", + "# This is the actual equation, so we could check exactly what coefficients our regression found.\n", + "y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)\n", + "\n", + "# Reshape x for sklearn\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "\n", + "degree = 4 # choosing the same degree as the true model\n", + "poly = make_pipeline(PolynomialFeatures(degree), LinearRegression())\n", + "poly.fit(X, y)\n", + "\n", + "# Generating points for plotting the regression line\n", + "x_plot = np.linspace(min(X), max(X), 100)\n", + "y_plot = poly.predict(x_plot)\n", + "\n", + "plt.scatter(x, y, label='Data points')\n", + "sorted_axis = np.argsort(x[:, 0])\n", + "plt.plot(x_plot, y_plot, label='Polynomial regression line', color='red')\n", + "plt.legend()\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Polynomial (degree = 4) regression')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "75134492-a181-4364-bca2-f25babb8fb71", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=4)),\n",
    +       "                ('linearregression', LinearRegression())])
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " + ], + "text/plain": [ + "Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=4)),\n", + " ('linearregression', LinearRegression())])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poly" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "82785ac3-c1ab-4411-84eb-7ac688452ece", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0. , -2.00193104, 7.3848762 , 3.00349368, -4.16571691]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poly['linearregression'].coef_" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3cee9f6f-2317-43f4-9e32-99d9433266bc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.32345315])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poly['linearregression'].intercept_" + ] + }, + { + "cell_type": "markdown", + "id": "f413714d-8027-48cc-8abc-1abb98e4a4bd", + "metadata": {}, + "source": [ + "## Lasso Regression\n", + "\n", + "Lasso regression adds a penalty equal to the absolute value of the magnitude of coefficients. This can lead not only to small coefficients but can actually shrink some of them to zero, effectively performing variable selection. Using that feature of Lasso regression, you don't have to interpret the usefulness of a variable - if it's not important to the model, then its coefficients will drop to zero. However, to achieve this result, you'll have to tune your lambda ($\\lambda$) value. If $\\lambda$ is too small, the penalty effect might be negligible, leading to little improvement over ordinary least squares regression. If $\\lambda$ is too large, too many variables might be eliminated, resulting in underfitting. Techniques such as cross-validation can be used to select an optimal $\\lambda$.\n", + "\n", + "The objective function for Lasso regression is:\n", + "\n", + "$ \\text{Minimize: } \\frac{1}{2N} \\sum_{i=1}^{N} (y_i - \\sum_{j=1}^{n} \\beta_j x_{ij})^2 + \\lambda \\sum_{j=1}^{n} |\\beta_j| $\n", + "\n", + "Where:\n", + "- $N$ is the number of observations.\n", + "- $\\lambda$ is the regularization parameter controlling the strength of the penalty.\n", + "- The first term is the Mean Squared Error, and the second term is the L1 penalty.\n", + "\n", + "\n", + "\n", + "Other things to keep in mind:\n", + "\n", + "- Lasso regression is sensitive to the scale of the input variables, so standardizing the data (to have 0 mean and unit variance) before applying Lasso regression is a common practice.\n", + "- While Lasso can lead to sparse solutions, Ridge regression is preferred when multicollinearity is present among the features.\n", + "\n", + "The introduction plot used `sklearn.linear_model.LinearRegression` to perform regression with different degrees of polynomials. Although Lasso might not perfectly capture the relationship in polynomial terms without specifically including polynomial features, this code will illustrate the process:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c57477e2-507e-438e-82ee-28ffbc7eac3d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import Lasso\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "# Generating demo data\n", + "np.random.seed(42)\n", + "x = np.random.normal(0, 1, 20)\n", + "y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)\n", + "X = x[:, np.newaxis]\n", + "\n", + "degree = 4 # choosing the same degree as the true model\n", + "lasso_poly = make_pipeline(PolynomialFeatures(degree), Lasso(alpha=0.1, max_iter=10000))\n", + "lasso_poly.fit(X, y)\n", + "\n", + "# Generating points for plotting the regression line\n", + "x_plot = np.linspace(min(x), max(x), 100)\n", + "X_plot = x_plot[:, np.newaxis]\n", + "y_plot = lasso_poly.predict(X_plot)\n", + "\n", + "# Plotting the data points and the regression line\n", + "plt.scatter(x, y, label='Data points')\n", + "plt.plot(x_plot, y_plot, label='Lasso Regression Line', color='red')\n", + "plt.legend()\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Lasso Regression with Polynomial Features')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e7fa142d-4ff9-42e6-9858-8e8156852e49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , -1.55260439, 5.72240286, 2.90811749, -3.66350745])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lasso_poly['lasso'].coef_" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "80726256-28a9-4326-8d9d-520162c999a1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.19943027115730638" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lasso_poly['lasso'].intercept_" + ] + }, + { + "cell_type": "markdown", + "id": "afcf86f0-ac8c-42f8-9842-ee4e9471c888", + "metadata": {}, + "source": [ + "- **Choosing Degree and $\\lambda$**: The choice of `degree=4` for the polynomial features and `alpha=0.1` for the Lasso regression penalty (`$\\lambda$`) is somewhat arbitrary here and might need adjustment based on cross-validation to find the optimal model complexity and regularization strength.\n", + "- **Max Iterations**: Increasing `max_iter` in `Lasso()` might be necessary for the algorithm to converge, especially for higher degrees of polynomials or smaller values of $\\alpha$ (`lambda`)." + ] + }, + { + "cell_type": "markdown", + "id": "ddf35035-e970-4a46-969a-74eebeda569e", + "metadata": {}, + "source": [ + "## Ridge Regression\n", + "\n", + "Ridge regression adds a penalty equal to the square of the magnitude of coefficients. All coefficients are shrunk by the same factor (none are eliminated).\n", + "\n", + "The objective function for Ridge regression is:\n", + "\n", + "$ \\text{Minimize: } \\frac{1}{2N} \\sum_{i=1}^{N} (y_i - \\sum_{j=1}^{n} \\beta_j x_{ij})^2 + \\lambda \\sum_{j=1}^{n} \\beta_j^2 $\n", + "\n", + "- Similarly, $N$ and $\\lambda$ have the same definitions as in Lasso.\n", + "- The first term again represents the Mean Squared Error, and the second term is the L2 penalty.\n", + "\n", + "1. **Effect of the Penalty**: Ridge regression is particularly useful when dealing with multicollinearity or when you have more predictors than observations.\n", + "\n", + "2. **Scaling Importance**: standardizing the features in Ridge regression is important due to the square of the coefficients being included in the penalty term. Features on larger scales can have disproportionately large effects on the formulation.\n", + "\n", + "3. **Choosing $\\lambda$ for the bias-variance trade-off**: A higher $\\lambda$ increases bias but reduces variance, whereas a lower $\\lambda$ does the opposite. The optimal $\\lambda$ minimizes the mean squared error of predictions.\n", + "\n", + "4. **Computational Aspects**: Ridge regression tends to be computationally more efficient than Lasso for a large number of features, mainly because the solution is obtained through matrix operations that have computationally efficient implementations.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5c103fb1-7d95-4441-b00a-51035ea53e27", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OTk5Qojn22vlypWa5fr37y+qVaumWUYIIc6cOZNrueDgYAFA/Pzzz5p5mZmZwtnZWfTq1Uszr6jvnYODg3j06JFm2SlTpggAwtfXV+v7179/f2Fqaqr1mXz5c/Ps2TORmZmptf0ePnwonJycxDvvvKM1P7/360XqGvOa1L8Xhf2uZGRkaG1j9fMrlUqtz8bJkydzbXu1WrVqibCwsFzzX94O+/btEwCEh4eHSE9P16qrTp06IiQkRPPbIoQQ6enpwt3dXXTs2FEzz9bWVowePbrA7UPFw6YuKrIOHTrAwcEBrq6u6N27NywtLfHnn39q7YnJy/bt2+Hi4oLevXtr5llYWGDEiBFay506dQoPHjzA8OHDUanS852SAwcOzLVXacOGDahfvz7q1auH+/fva6Z27doBQKF2sT958gQODg5wcHBA7dq1MXHiRLRs2RJbtmyBQqEAAOzatQuPHj1C//79tV7H2NgYzZo107xOfHw8Ll68iMGDB2sdQh0cHIyGDRvm+fq9evXS6qiZnJyMvXv3om/fvkhLS9O81oMHDxASEoIbN25omj/s7Oxw+fJl3LhxI8/nNjc3h6mpKfbv34+HDx++cluobd++Hc7Ozujfv79mnomJCT788EM8fvwY//77r9by/fr103pv1P8pv9xU+LJWrVohKSkJ165dAyDt2WndujVatWqFgwcPApD2Agkh8t3jU1gjR47M9dqvqk/t6tWrms9I/fr1sWjRInTp0kWz92P79u0IDAzEa6+9pnmMlZUVRowYgZiYGE3zZV4GDx6M+Ph4rc/qunXrYG5ujl69emkta2VlpdXXxdTUFIGBgVrrUdT3rk+fPrC1tdXcbtasGQDg7bff1vr+NWvWDFlZWQUewWlsbKzp96NSqZCcnIxnz54hICCgRE00I0aMwK5du7QmX1/fIn1XlEqlpn9NTk4OHjx4ACsrK3h5eZVZ81FYWBjMzc01t8+dO4cbN25gwIABePDggabeJ0+eoH379jhw4ICm076dnR2OHz+O+Pj4MqnNkLGpi4psyZIlqFu3LlJSUrBixQocOHAASqXylY+7desWateurQkTal5eXrmWA4DatWtrza9UqVKuppkbN27gypUr+R7hcffu3VfWZWZmhq1btwKQ+iDNmTMHd+/e1frBUgcLdaB6mY2NTYG1q+fl9QPr7u6udTsyMhJCCHz22Wf47LPP8ny9u3fvonr16pgxYwa6d++OunXrwsfHB6GhoRg0aJCmmUepVOKrr77ChAkT4OTkhObNm6Nr164YPHiwVp+Zl926dQt16tTJ1RGzfv36WuupVrNmTa3b6hD0qrClDjMHDx5EjRo1cPbsWXz++edwcHDA3LlzNffZ2NjA19e3wOcqiJmZWa7PSOXKlQsdBt3c3LB8+XIoFAqYmZmhTp06cHR01Nx/69YtTWB40Yvby8fHJ8/n7tixI1xcXLBu3Tq0b98eKpUKv/zyC7p37w5ra2utZWvUqJHr+1O5cmVcuHBBq5aSvHfqEOTq6prn/Fdts9WrV+Obb77B1atXkZ2drZn/8ue8KOrUqYMOHTrkmn/ixIlCf1dUKhW+/fZbfPfdd4iOjtbq31WlSpVi11aQl9dZ/TsSFhaW72NSUlJQuXJlzJkzB2FhYXB1dYW/vz86d+6MwYMHw8PDo0xqNSQMPlRkgYGBmqO6evTogddeew0DBgzAtWvXyn2gOJVKhYYNG2LevHl53v/yj3dejI2NtX5UQ0JCUK9ePbz33nuaDpLq/8LWrFmTZ2B48T/jonoxYL34WhMnTkRISEiej1EHq9atWyMqKgpbtmzBP//8gx9//BHz58/HsmXL8O677wIAxo0bh27dumHz5s34+++/8dlnn2H27NnYu3dvrn4lxWVsbJznfPFCB+W8VKtWDe7u7jhw4ADc3NwghEBQUBAcHBwwduxY3Lp1CwcPHkSLFi1KdDRMfvUVlqWlZZ5/eEuDsbExBgwYgOXLl+O7777D4cOHER8fn+dRTMXdzq96/aLML+i11q5diyFDhqBHjx6YNGkSHB0dYWxsjNmzZ+c6+KE0FOW7MmvWLHz22Wd45513MHPmTNjb28PIyAjjxo0r9HhML4dOtZycnDy3V37f7a+//jrf/k7q39C+ffuiVatW+OOPP/DPP//g66+/xldffYVNmzZp+nNR8TD4UImof9Tatm2LxYsXY/LkyfkuW6tWLVy6dAlCCK0fEHUzx4vLAdKej7Zt22rmP3v2DDExMVqdVj09PXH+/Hm0b98+3x+lonJxccH48eMRHh6OY8eOoXnz5vD09AQAODo6FvgH8MXaX5bXvLyo/6MzMTEp1B9be3t7DB06FEOHDsXjx4/RunVrTJ8+XRN8AGk7TZgwARMmTMCNGzfg5+eHb775BmvXrs13PS5cuACVSqUVOK5evaq1nqWhVatWOHDgANzd3eHn5wdra2v4+vrC1tYWO3fuxJkzZzRj9OSntN774qpVq1auzzFQ+O01ePBgfPPNN9i6dSt27NgBBweHfP+QF6aW8nrvXrZx40Z4eHhg06ZNWu/JtGnTyuT1ivJd2bhxI9q2bYuffvpJa/6jR49QtWpVze2CPkuVK1fGo0ePcs2/detWofbEqH9HbGxsCvXddnFxwfvvv4/3338fd+/eRZMmTfDFF18w+JQQ+/hQibVp0waBgYFYsGBBgaMdd+7cGfHx8di4caNmXnp6On744Qet5QICAlClShUsX74cz54908xft25drt3sffv2RVxcHJYvX57r9Z4+fYonT54Ua53GjBkDCwsLzeB0ISEhsLGxwaxZs7R236upD2muVq0afHx88PPPP+Px48ea+//9919cvHixUK/t6OiINm3a4Pvvv0dCQkK+rwUADx480LrPysoKtWvX1hzKn56enus98fT0hLW1dYGH+3fu3BmJiYlYv369Zt6zZ8+waNEiWFlZITg4uFDrUhitWrVCTEwM1q9fr2n6MjIyQosWLTBv3jxkZ2e/sn+PhYUFAOT5R6k8dO7cGSdOnMDRo0c18548eYIffvgBbm5u8Pb2LvDxjRo1QqNGjfDjjz/i999/x1tvvVXsvYjl+d69TL3X48W9QsePH9faLqWpKN8VY2PjXHurNmzYkKvPkqWlJYC8P0uenp44duwYsrKyNPO2bduG2NjYQtXr7+8PT09PzJ07V+v34eV6c3JykJKSonWfo6MjqlWrVuxhOug57vGhUjFp0iT06dMHq1atytWJVG348OFYvHgxBg8ejNOnT8PFxQVr1qzR/NFSMzU1xfTp0zFmzBi0a9cOffv2RUxMDFatWgVPT0+t/8gGDRqE3377DSNHjsS+ffvQsmVL5OTk4OrVq/jtt9/w999/a5rliqJKlSoYOnQovvvuO1y5cgX169fH0qVLMWjQIDRp0gRvvfUWHBwccPv2bfz1119o2bIlFi9eDEDapd69e3e0bNkSQ4cOxcOHD7F48WL4+Pjk+WOXlyVLluC1115Dw4YNMXz4cHh4eCApKQlHjx7FnTt3NGOPeHt7o02bNvD394e9vT1OnTqlOQQWAK5fv4727dujb9++8Pb2RqVKlfDHH38gKSkJb731Vr6vP2LECHz//fcYMmQITp8+DTc3N2zcuBGHDx/GggULcvU9KQl1qLl27RpmzZqlmd+6dWvs2LFDMy5QQczNzeHt7Y3169ejbt26sLe3h4+PT779akrb5MmT8csvv6BTp0748MMPYW9vj9WrVyM6Ohq///57oZrpBg8ejIkTJwJAiQbrK8/37mVdu3bFpk2b8Oabb6JLly6Ijo7GsmXL4O3tXejPflEV9rvStWtXzJgxA0OHDkWLFi1w8eJFrFu3LteeGk9PT9jZ2WHZsmWwtraGpaUlmjVrBnd3d7z77rvYuHEjQkND0bdvX0RFRWHt2rWaPTmvYmRkhB9//BGdOnVCgwYNMHToUFSvXh1xcXHYt28fbGxssHXrVqSlpaFGjRro3bs3fH19YWVlhd27d+PkyZP45ptvSn0bGhy5Dicj/aM+nP3kyZO57svJyRGenp7C09NTPHv2TAiR+xBPIYS4deuWeOONN4SFhYWoWrWqGDt2rNi5c6fW4alqCxcuFLVq1RJKpVIEBgaKw4cPC39/fxEaGqq1XFZWlvjqq69EgwYNhFKpFJUrVxb+/v4iPDxcpKSkFLhO6sPZ8xIVFSWMjY21Dl/dt2+fCAkJEba2tsLMzEx4enqKIUOGiFOnTmk99tdffxX16tUTSqVS+Pj4iD///FP06tVL1KtXT7OM+lDd/A41j4qKEoMHDxbOzs7CxMREVK9eXXTt2lVs3LhRs8znn38uAgMDhZ2dnTA3Nxf16tUTX3zxhcjKyhJCCHH//n0xevRoUa9ePWFpaSlsbW1Fs2bNtIYUECLv9yopKUkMHTpUVK1aVZiamoqGDRvmOsS3oHVAIQ5XVnN0dBQARFJSkmbeoUOHBADRqlWrXMu/fDi7EEIcOXJE+Pv7C1NTU63Xzu89njZtmijMT2BwcLBo0KDBK5eLiooSvXv3FnZ2dsLMzEwEBgaKbdu2aS2T1+HsagkJCcLY2FjUrVu3SHXktS1K8t6pD8XesGGD1vy8vv8vf25UKpWYNWuW5nvbuHFjsW3btjxrLMzn41XfEbXCfFcyMjLEhAkThIuLizA3NxctW7YUR48ezfOzv2XLFuHt7S0qVaqU6/365ptvRPXq1YVSqRQtW7YUp06dyvdw9pe3odrZs2dFz549RZUqVYRSqRS1atUSffv2FXv27BFCSMMUTJo0Sfj6+gpra2thaWkpfH19xXfffVfgdqDCUQhRgl5xROVIpVLBwcEBPXv2zLNpS9f5+fnBwcFBa1RlIrX79+/DxcUFU6dOzfcIJSIqOfbxIZ2UkZGRqz3+559/RnJycpmchLI0ZWdna/VNAqQh7M+fP6/ztZN8Vq1ahZycHAwaNEjuUogqNO7xIZ20f/9+jB8/Hn369EGVKlVw5swZ/PTTT6hfvz5Onz6t0yfVjImJQYcOHfD222+jWrVquHr1KpYtWwZbW1tcunSpzMYMIf20d+9eRERE4LPPPkPbtm2xadMmuUsiqtAYfEgnxcTE4MMPP8SJEyeQnJwMe3t7dO7cGV9++aXWwHG6KCUlBSNGjMDhw4dx7949WFpaon379vjyyy8L3QmSDEebNm1w5MgRtGzZEmvXrs33nG5EVDoYfIiIiMhgsI8PERERGQwGHyIiIjIYHMDwJSqVCvHx8bC2tpZ9GHwiIiIqHCEE0tLSUK1atQIHDWXweUl8fHyhTmxJREREuic2NhY1atTI934Gn5eoh3OPjY2FjY2NzNUQERFRYaSmpsLV1fWVp2Vh8HmJunnLxsaGwYeIiEjPvKqbCjs3ExERkcFg8CEiIiKDweBDREREBoPBh4iIiAwGgw8REREZDAYfIiIiMhgMPkRERGQwGHyIiIjIYDD4EBERkcFg8CEiIiKDweBDREREBoPn6iKiUpOjEjgRnYy7aRlwtDZDoLs9jI0KPm8OEVF5YvAholKx81ICwrdGICElQzPPxdYM07p5I9THRcbKiPSUEEBWFpCeDjx5It2uVAkwMZEuTU0Bc3PgFSflJG0MPkRUYjsvJWDU2jMQL81PTMnAqLVnsPTtJgw/RC969AiIigIiI6UpPh5ITJSmpCTg3j0p7OTkFPw8ZmaAgwNQtap0Wb064OUF1K0rXXp6AkpluaySvmDwIaISyVEJhG+NyBV6AEAAUAAI3xqBjt7ObPYiw/P4MXDpEnDhwvMpIgJ48KBoz2NsLE3PngEq1fP5GRlAbKw05fe4Ro2AFi2kqWVLoGZNg95LxOBDRCVyIjpZq3nrZQJAQkoGTkQnI8izSvkVRlTecnKkUHPsGHD8uHQZESE1UeXF2RmoXVvaK+PqKt12cpIuHRwAKyvA0hKwsJCatdRUKikAZWRIAer+fWkP0b17wK1bwPXrwLVr0pSWBpw9K01LlkiPr1kTeOMNoHt3IDhYajozIAw+RFQid9PyDz3FWY5Ib2RnA2fOAP/+K02HDgGpqbmXc3GR9ro0agT4+gINGkiBx8qqeK9rZCQFIVNTwMYGcHfPezkhgLg44OhR4MgRaTpzBrh9G1i8WJrs7IDOnYGBA4GQEGkPUQXH4ENEJeJobVaqyxHpLCGAq1eBXbuAf/6Rws7jx9rLWFsDTZsCzZo9n5yd5alXoQBq1AD69JEmQOoovXcvsHkzsHUrcPcu8L//SVOtWsC77wLDhklhrYJSCJHfPjjDlJqaCltbW6SkpMDGxkbucoh0Xo5K4LWv9iIxJSPPfj4KAM62Zjj0STv28SH9k5YmBZ3t24G//wbu3NG+394eaNVKajIKDpb26OjLXpOcHKk5bsMG4OefgYcPpfnGxkCPHsB//gM0aSJriUVR2L/fDD4vYfAhKjr1UV0AtMKPOubwqC7SK5GRwJ9/SmHnwAGpSUtNqQRatwY6dpSmRo2kpid99/QpsHEj8P33wOHDz+e/8QYwbZpeBCAGn2Ji8CEqHo7jQ3Iq0eCZKhVw8iSwZYs0RURo31+nDtClC9Cpk7R3x9y89FdAl1y6BHz5JfDLL8+PIHvjDWDmTCno6SgGn2Ji8CEqPo7cTHIoVujOzpb25mzaBPzxB5CQ8Py+SpWkZquuXaXAU6dOGa+Bjrp2Dfj8c6n/j0ol7dkaMwYIDwdsbeWuLhcGn2Ji8CGdJoQ0qVTPLwHp6A4DHpeDDFd+g2fm2cyamSl1Sv79d6ljb3Ly8wdYW0tHN73xhnRpZ1cO1euJ69eBTz+V+gIBUmftuXOBAQN06neHwaeYGHzoVcpkr4ZKBdy8KU0xMdJYHLduSf+FPnr0fEpJyXskVyOj5+N9WFpKP9qOjtJYII6O0lSzpnTURq1a0g9XReiXQLKSew+fumN9fuNIKQDUslBgj08mjDf9LvXbSUt7voCDg9SJt2dPoG1bjnD8Krt3A6NHS0EIANq0AX76CfDwkLUstcL+/ebh7ERFUCr9WFQqqQ392DHg3DlpunBBGp6+uFQq6Qf9xR/1gpiaSmN/eHkB9eo9v2zQQCd3YZPu0YU+XfkNnqnMzkSb6NPofPUw2kedgHHW0+d3VqsmBZ3evYHXXtOfI7B0QYcO0m/VvHlSf5/9+wE/P+C774C335a7ukLjHp+XcI8P5adIu9RfdvOm9N/Snj3Avn3SCKsvMzeXRnBV75WpVUsag6NyZWkPjq2tNJmZSbuXjYykSYjnJzFUXz58KI3PoZ4SE6VBy27dkg7HfXHI+5e5uT0faM3PDwgIkEaV1aFd2iSvEn0XStGWc3EY++s5ALnDjtULYSfduRos+veTwk7z5tzbWRpiYoDBg4GDB6XbAwZIAUjGf5zY1FVMDD6Ul8LsUs81Vs3Nm8D69dJ0/rz2AywspPPmNGkihQs/P+mkguXx32d2tjSaa2Sk1Hnx6lXp8sqV3GOUqDk4SIOyBQRIA7I1by6NX0IGp1jfhTJyLCIOKz5dii5XD+UKO3dsHLDDqyW2e72Gj6cORlAdhzKtxSDl5ACzZwPTp0vX3dyQs3YdTjh7ydL8yeBTTAw+lJejUQ/Qf/mxVy7321veCPz3T2DtWuDUqed3VKoEBAUB7dsD7dpJ4eHFc+/oiuTk5ydSPH9eGt7+0iXpvEAv8/KS1qlFC+C115BT1wvHbibj6M37ABQI8qyC5h5VeFRXBVPY78Ivw5sX+dxsheoz9PQpsHMnsHEjxNatULzQvBtn7YDt9Vrir3qtcM6lLhQKBQfPLA9Hj0p7fGJikG1cCVNCPsDGhh0AlG/zJ/v4EJWiV51nyvN+LMLObEOThfuAp+nSTCMjKeT06we8+SZyKts//1GPTdPNQ73t7aUOi23aaP4I3b/3EG5xN9Eg/hqMTp6U+ibduPH8JIirVgEAUi1s8KS6NzJqeONkjQZY6lwb1lZm+LJnQ47jU4GU1bnZCuwz5GErhZ0NG4Bt2zSniVAAeOpcDetcA/GX12s4W81L0ySr/mZN6+ate9+ziiYoCLv/txPZQ95Bp+tHMHf7AtR+EIuvgsOQmJKBUWvP6NQgpgw+RIWQ33mmmt++gPePbkDrmLPPZ3p7A6NGSefGcXIC8P8/6j/s1ZvB/fL+I+SNaR/3lup98EAKQEeP4sE/+2Bx9jQqp6fi9RvH8PoNaW/AY1NznK5eH8f3+MBueG807xdqcGeBrojK4txsefUZsspMR9Oj/0KsmopnsWdR6ekLHZRr1pT66/TpA/PAQNSISELi1gjghc+rsw5/vyqaHJXAZ/vvILHHZIw79D+MPfIrRh7/HR7JcRjXdQKempojfGsE2tVzwulbD2Uf54tNXS9hUxfl5eXzUfnGX8PEA2vQ6tY5AIAKChysH4TXFs6Acft2Wh2BdaUjaGEVpd4clUDLL/fgwcPH8EmMQtM7l9H0zmUExl6Gbab2UWrC0hKK116TDhtu0wbw95eaAEuB3IdVG5LSPjfbi32G7NNT0OHGcYTcOIrXYs5BmfP8VBHC3R2KXr2kfyiaNs3V2Z6fAfm83Pz5RsR+fL39WyhzshHh6I6hvachyboq7C1NkfwkS7Ncaf/zxz4+xcTgQ/nZeSkBC+ZvwoQDa9Ax8jgAIMuoEtb7huCHwDfx3w865/oC61JH0MIoar359fcwUuWg3r1baBZ7Ec1iL6HZ7UuonPHSofbW1tLw/23bSk2CxTy5oy4cVm1oSvPcbGf2n8HWz5ch5PpRNL0TAWPx/IjDKPvq2OHVEjvqtsCnnw5EUO2qpbQGVJpePLpOrXHcVfzwx+dwePIIt+ycMeCtWYizddRaprT/+WPwKSYGH8pTWhowdSrEwoVQqFTIURhhU4N2+Pa1/sipWSvfP7Jl2RG0LBS13rx+8PKiECqs8DdD24QIaeyPf/99fiZoNTs76TQB6j1CDRu+8rBjfdubVpEUO3CqVFLH/z//lKaLF7XuvuTkib/rNMffdYNwvWotzZ6db9/yQ3e/6mWyLlQy+f1uVE+5i3W//hdujxIQZ+2AAf2/wK3K1bSWKc1//ti5mai0bN4snZ/mzh0oAIg3e+LiexNh6lQTX79il3pZdQQtK0Wtt7D9OITCCGb+TQDPjsDYsdKhrxcuSGMa7dsnnTPp0aPnJ4kEgCpVpCD0/52t0aCBVhDKUQmEb43Is7lFQPpBDd8agY7ezjqxN62iCfVxQUdv5zybl3I1O9kbw3j3LuCvv4AdO6Sxpf6fMDbGsere2FW7Of6p2xx3bJ3yfL2i9Bmi8hXobg8XW7NczZ9xto7oN2A21v36KWon38Fv/5uMAf2+QFRVV80yAkBCSgZORCeX2z9/DD5E+blzRxqe/c8/pdvu7sB330ERGgo/AH6FeIqy6Ahalopab6C7PZxtlEhMzSxweRdb6Y+ihrEx0LixNH30kXS4/Nmzz4PQwYNSB+pNm6QJkI44Cw6WplatcMKqRr5NcoA8P6iGxthIkWvb7ryUgBlbLsH+RgRaR5+BU/QZiLgrgOqFU61YWwOhoUD37lCFhOKj5ede2WdI6/NDOsXYSIFp3bwxau0Z6Z/DF+5Lsq6KtwbMxpr1n6H+vRis/2Uy3u73Oa46ums9R3n+88emrpewqYsASHsd3nlHGtemUiVg0iTpJH0WFkV6mtLuCFrWilPvzksJGPn//T3ys6yoTU7Z2VJzyP790nT4cK5TemRbWeOQY12crNEAJ2t444JzHWSa5D7XUl5NJOwIWwZiYnBxzSbc/OVPvBZzFlWepmrdHWlfA8Zdu8A9rK90qogXxrEqzT5DJJ+8mj/tLU2Q/CQbdk9TsWb9Z2iYFIWHZtboO+BL3HCopVmuNJr72cenmBh8DFxGBjBxIrBkiXTb3x9YvVpqZikmfftRL069Oy8lYPKmi3iUnq01v7KFCWaXxjg+2dnA6dNSCDp4EDh0CEjV/sOaZVQJl5w9caq6N05Xr4+z1bxw17pKrh9UdoYuJbdvS+/Fvn3A3r1AdLTW3Y9NzXG0ZiP8694EB9ybILayS4Ehn+9LxfDyPxX+tSoj+Ot9SEzJgHXGY6zaMA3ZRpUwpE84npqaydLHp0IGnyVLluDrr79GYmIifH19sWjRIgQGBhbqsQw+BuzKFeCtt6S+J4AUgL74olRGWNa3H/Xi1JujEjgW9aB8Rm7OyUH2mXOYPeV7+N+JQEDcFTg9Ts61WLyNA5xeD4Zx8+ZAQAB2mVXDiD+uszN0UeXkABERwJEjUtg5eFAKPi8QxsY441QHR2r54qB7Y5ypVg/PjHP3pijoP3vuiauYXvxnyiJTGuD1idKCR3WVlvXr12Pw4MFYtmwZmjVrhgULFmDDhg24du0aHB0dX/l4Bh8DtXkzMHCgdJJPR0dpL09oaKm+hL79qOt6vVpHkggB15QkBNyJQEBcBPzir6PevRitQ6MBQKVQ4Gbl6rjgUgeXnTwR4eiOK47ueGRuo3PNjq9SZu+PEFKoOXMGOH5cmk6d0oyWrKHupxUcDLRvj79sPDB6a+Qrn55HZxmm8vjnz2CDT7NmzdC0aVMsXrwYAKBSqeDq6ooxY8Zg8uTJr3w8g4+BEQL4+mtg8mTpevv20nm2nJ3lroxe4VWH0ltkPUXDxEhMdUhFg9iryDx+Esr4vE/CGm9dFVcc3XGjak20790OddoEAvXrA5aWZVR9yZTaH5H0dGlP5+XL0p7Os2el6eWhBgDAygoIDJT657RqJZ2o1spKc7e+Dd1A5a+s/5kyyMPZs7KycPr0aUyZMkUzz8jICB06dMDRo0fzfExmZiYyM58fkZL6Ur8BqsCysoCRI4GVK6XbH3wAzJ9faqMJU9l61RFo6abmOF6zIVKHNwc8q2DnuTjM+Gk/GiZGomHiDXjfjYb33Zuo9SgR1dLuo1rafbSPOgkc//35k9SsCdSpoz25uQG1agEy/WOU39hF+Z4TKSdHOkLxxg0gMlK6vHFDCjvR0VLgf5mJidSvrWlT6YS6zZpJQbCAASbzO6RZjUdnUV5HAcqhQv3C379/Hzk5OXBy0h4HwsnJCVevXs3zMbNnz0Z4eHh5lEe65MEDoFcvaSA9IyPg22+l4EN6o6h/aB2tzfDA0g77PQOw3zNAs5xVZjrq3YtGvbsxqPPgNnqYPILtzevAvXtSk8/t28CePblfoHJlKQC5ugIuLkC1atKliwtQtao0DpG9vbRcMUakzsuLYxeZPsuGTeZjVE5PRdX0R3B48ghV0h/h7tE1UFU3htGdWKn2uDhpuID8VK0qhZyGDZ8PMdCgQZH7thV0SDNPGEq6pEIFn+KYMmUKPvroI83t1NRUuLq6FvAI0nsJCUCHDlJnTWtr4LffSr0/D5W9ov6hzS8oPVZa4FSNBjhdowGcbc3w9iftACOFFHyuX3++h0S9x+TWLWmYg4cPpencuYILVSikvUNWVtJkbS01oSmVUrgwMZGmSpWkUY1VKmkvjEoFZGYCT59qpqyUNGxJegCbzCcwe5ZV8Ou+yMQE8PQEateWpjp1pD04DRpIfdpKSaiPC5a+3SRXMxxPGEq6pEIFn6pVq8LY2BhJSUla85OSkuCcT58NpVIJpTL32B9UQcXGSv14btwAqlcHdu4EfHzkroqKqSh/aIu8R8LBQZpatsz9wmlpUgC6dUtqRkpIkKb4eOnywQMpHKWmSiEmJUWaSsj8/6cXPTSzxn1LO2mykC6btvaFTzMfqalOvUeqlPY6vUpBIzoT6YIK2bk5MDAQixYtAiB1bq5ZsyY++OADdm42dNHR0skwY2KkJoq9ewEPD7mrolJQlE6T5Tq0QHb28z1DT55IR0alpUmXWVnSlJ0tTTk5UrOrQvH8UqkEzM2lycwMlx9mY+LuW0hTWiJVaYnHpuZQGeUONOxATIbIIDs3A8BHH32EsLAwBAQEIDAwEAsWLMCTJ08wdOhQuUsjOd24Ie3piY2VdvXv2SP9N0wVQlE6TZbrHgkTE6kpqZSak+qpBB7devXI2uxATJS/Chd8+vXrh3v37mHq1KlITEyEn58fdu7cmavDMxmQyEhprJGEBKBePSn0VKv26sdRhaUrR5cUFTsQE5VchWvqKik2dVUwiYlAixZSM1fDhsDu3aXamZNIDvo2EjhReTDYpi4ijZQU6Wit6GjpiJZduxh6qEJgB2Ki4mPwoYopIwPo0QM4fx5wcgL+/lu6JKog9LW5jkhuDD5U8eTkAG+/LZ3J29oa2LFD2uNDZIB0/ZxrROWNwYcqnrFjgd9/lwaH27JFGomWyACxLxBRbkZyF0BUqr7/HliyRBoDZd06oG1buSsikoX6nF4vhh7g+Tm9dl5KkKkyInkx+FDFcfgwMGaMdP2LL4DeveWth0gmL57T62XqeeFbI5Cj4kG9ZHgYfKhiiIuTTjqanQ306QMUYpRuoorqRHRyrj09LxIAElIycCI6ufyKItIRDD6k/zIygDffBJKSpLF6Vq6UmrqIDNTdtPxDT3GWI6pIGHxIvwkBjBwJnDwJ2NsDmzdLZ74mMmCO1maluhxRRcLgQ/rthx+A1aulkzquX8+TjhIBCHS3h4utGfLb76mAdHQXz+lFhojBh/RXRAQwfrx0ffZsoEMHeesh0hHqc3oByBV+eE4vMnQMPqSfMjKAAQOAp0+B118HJk6UuyIinRLq44KlbzeBs612c5azrRmWvt2E4/iQweIAhqSfpkyRTkfh4PC8qYuItPCcXkS5MfiQ/tmxA1iwQLq+ciXg7CxrOUS6jOf0ItLGf5NJvyQlAUOGSNfHjAG6dJG1HCIi0i8MPqQ/hADeeQe4exfw8QHmzJG7IiIi0jMMPqQ/fv4Z2L4dUCqBX34BzDgGCRERFQ2DD+mHpKTnh66Hh0t7fIiIiIqIwYf0w5gxwMOHQOPGwIQJcldDRER6isGHdN+WLcCGDYCxMfDTT0AlHoxIRETFw+BDuu3RI+D996XrEydKe3yIiIiKicGHdNvHHwPx8UCdOsC0aXJXQ0REeo7Bh3TX/v3A8uXS9eXLAXNzWcshIiL9x+BDuunZM+CDD6TrI0YAwcHy1kNERBUCgw/ppqVLgcuXgSpVpDOvExERlQIGH9I99+8DU6dK12fOBOzt5a2HiIgqDAYf0j2ffSYdzeXrKzVzERERlRIGH9It584B338vXV+4UBq7h4iIqJQw+JDuEAL48EPpsm9foHVruSsiIqIKhsGHdMdvvwEHD0qHrX/9tdzVEBFRBcTgQ7rh6VNg0iTp+iefADVrylsPERFVSAw+pBsWLwZiYwFX1+cBiIiIqJQx+JD8UlKAL7+UroeHAxYW8tZDREQVFoMPyW/uXCA5GahfHxg0SO5qiIioAmPwIXklJQHz50vXP/8cqFRJ3nqIiKhCY/AheX3xBfDkCdC0KfDmm3JXQ0REFRyDD8knJgZYtky6PmsWoFDIWg4REVV8DD4kn2nTgOxsoH17oEMHuashIiIDwOBD8rh8GVizRro+a5a8tRARkcFg8CF5TJ8unZrizTeBwEC5qyEiIgPBQ2ioXOSoBE5EJ+NuWgZqJd6C7++/QwEAM2bIXRoRERkQBh8qczsvJSB8awQSUjIAAPO2fQM/IZDULhROPj4yV0dERIaETV1UpnZeSsCotWc0ocf1USLeiPgXADC8Rgh2XkqQszwiIjIwDD5UZnJUAuFbIyBemDfq2EZUEioccGuMiy51EL41Ajkqke9zEBERlSYGHyozJ6KTNXt6AMAp7T56XdoNAFjUoh8EgISUDJyITpapQiIiMjQMPlRm7qZlaN0eceIPKHOe4XiNBjjp6pPvckRERGWFwYfKjKO1meZ6lSePMODcTgDAkqC++S5HRERUlhh8qMwEutvDxdYMCgDvnNoC82eZOO9cBwfcmwAAFABcbM0Q6G4va51ERGQ4GHyozBgbKTCtmzesMx5j0Jm/APz/3h6FAuqzck3r5g1jI56ji4iIygfH8aEyFerjArdKl2GTlY7rVWpiV51mAABnWzNM6+aNUB8XmSskIiJDwuBDZevZM9TbsBoAYDzhIyzo1ASO1lLzFvf0EBFReWPwobL1xx/A7dtA1arwHP8ePM3YkZmIiOTDPj5UtubPly5HjQIYeoiISGYMPlR2jh8Hjh4FTE2B99+XuxoiIiIGHypDCxZIl/37A87OspZCREQE6FHw+eKLL9CiRQtYWFjAzs4uz2Vu376NLl26wMLCAo6Ojpg0aRKePXtWvoWSJDYW2LBBuj5unKylEBERqelN5+asrCz06dMHQUFB+Omnn3Ldn5OTgy5dusDZ2RlHjhxBQkICBg8eDBMTE8yaNUuGig3ckiVATg7Qpg3g5yd3NURERAAAhRBCr06NvWrVKowbNw6PHj3Smr9jxw507doV8fHxcHJyAgAsW7YMn3zyCe7duwdTU9NCPX9qaipsbW2RkpICGxub0i7fMDx5Ari6Ag8fAlu2AG+8IXdFRERUwRX277feNHW9ytGjR9GwYUNN6AGAkJAQpKam4vLly/k+LjMzE6mpqVoTldDq1VLo8fQEunaVuxoiIiKNChN8EhMTtUIPAM3txMTEfB83e/Zs2NraaiZXV9cyrbPCEwJYvFi6PnYsYFRhPmJERFQByPpXafLkyVAoFAVOV69eLdMapkyZgpSUFM0UGxtbpq9X4R08CFy5AlhaAmFhcldDRESkRdbOzRMmTMCQIUMKXMbDw6NQz+Xs7IwTJ05ozUtKStLclx+lUgmlUlmo16BC+P576XLAAIB9pIiISMfIGnwcHBzg4OBQKs8VFBSEL774Anfv3oWjoyMAYNeuXbCxsYG3t3epvAa9wv37wMaN0vX33pO3FiIiojzozeHst2/fRnJyMm7fvo2cnBycO3cOAFC7dm1YWVnh9ddfh7e3NwYNGoQ5c+YgMTERn376KUaPHs09OuVl1SogKwsICAD8/eWuhoiIKBe9CT5Tp07F6tWrNbcbN24MANi3bx/atGkDY2NjbNu2DaNGjUJQUBAsLS0RFhaGGTNmyFWyYVGpgB9+kK5zbw8REekovRvHp6xxHJ9i2rMH6NABsLYG4uMBKyu5KyIiIgNicOP4kMzUnZoHDWLoISIincXgQyWXlAT88Yd0nc1cRESkwxh8qORWrACePQOaNwcaNZK7GiIionwx+FDJqFTA8uXS9ZEj5a2FiIjoFRh8qGR27waiowE7O6BvX7mrISIiKhCDD5XMqlXS5cCBgLm5rKUQERG9CoMPFV9KyvNOza849QgREZEuYPCh4tuwAcjIALy9OVIzERHpBQYfKj71SNphYYBCIW8tREREhcDgQ8UTGQkcOgQYGQFvvy13NURERIXC4EPF8/PP0mXHjkC1avLWQkREVEgMPlR0KtXz4BMWJm8tRERERcDgQ0V34ABw6xZgYwP06CF3NURERIXG4ENFp+7U3Lcvx+4hIiK9wuBDRfPkCbBxo3SdzVxERKRnGHyoaDZtAh4/Bjw9gZYt5a6GiIioSBh8qGjUzVyDB3PsHiIi0jsMPlR4CQnA3r3S9UGD5K2FiIioGBh8qPA2bgSEAJo3B9zd5a6GiIioyBh8qPB+/VW67NdP3jqIiIiKicGHCuf2beDIEalfT58+cldDRERULAw+VDi//SZdtm4NVK8uby1ERETFxOBDhaNu5nrrLXnrICIiKgEGH3q1GzeA06cBY2OgVy+5qyEiIio2Bh96tfXrpcv27QEHB3lrISIiKgEGH3o1dfBhMxcREek5Bh8q2KVL0mRiArz5ptzVEBERlQiDDxVMvbcnNBSws5O1FCIiopJi8KH8CcGjuYiIqEJh8KH8nT0LREYC5ubAG2/IXQ0REVGJMfhQ/jZskC67dAGsrOSthYiIqBQw+FDehAA2bZKuc+weIiKqIBh8KG9XrgDXrwOmpkDnznJXQ0REVCoYfChvf/whXbZvD9jYyFsLERFRKWHwobypgw/H7iEiogqEwYdyu31bOjeXQsGjuYiIqEJh8KHcNm+WLlu2BJycZC2FiIioNDH4UG7qZq6ePeWtg4iIqJQx+JC2+/eBAwek6+zfQ0REFQyDD2nbuhVQqQA/P8DNTe5qiIiIShWDD2lTD1rIvT1ERFQBMfjQc2lpwK5d0nUGHyIiqoAYfOi5nTuBzEygdm3Ax0fuaoiIiEodgw899+KghQqFvLUQERGVAQYfkmRlAX/9JV1nMxcREVVQDD4kOXQISE0FHB2BZs3kroaIiKhMMPiQRL23p3NnwIgfCyIiqpj4F44k27ZJl126yFsHERFRGWLwISAyErh+HahUCejYUe5qiIiIygyDDz1v5mrdGrC1lbcWIiKiMsTgQ2zmIiIig8HgY+jS0oB//5WuM/gQEVEFx+Bj6HbvBrKzpdGa69aVuxoiIqIyxeBj6F5s5uJozUREVMEx+BgylQrYvl26zmYuIiIyAHoRfGJiYjBs2DC4u7vD3Nwcnp6emDZtGrKysrSWu3DhAlq1agUzMzO4urpizpw5MlWsJ86eBRITASsr6YguIiKiCq6S3AUUxtWrV6FSqfD999+jdu3auHTpEoYPH44nT55g7ty5AIDU1FS8/vrr6NChA5YtW4aLFy/inXfegZ2dHUaMGCHzGugodTNXx46AUilvLUREROVAL4JPaGgoQkNDNbc9PDxw7do1LF26VBN81q1bh6ysLKxYsQKmpqZo0KABzp07h3nz5jH45Ec9fg+buYiIyEDoRVNXXlJSUmBvb6+5ffToUbRu3RqmpqaaeSEhIbh27RoePnyY7/NkZmYiNTVVazIISUnAyZPS9c6d5a2FiIionOhl8ImMjMSiRYvw3nvvaeYlJibCyclJazn17cTExHyfa/bs2bC1tdVMrq6uZVO0rlF3avb3B1xc5K2FiIionMgafCZPngyFQlHgdPXqVa3HxMXFITQ0FH369MHw4cNLXMOUKVOQkpKimWJjY0v8nHph507pknt7iIjIgMjax2fChAkYMmRIgct4eHhorsfHx6Nt27Zo0aIFfvjhB63lnJ2dkZSUpDVPfdvZ2Tnf51cqlVAaWsfenBxp4EIAeKHvFBERUUUna/BxcHCAg4NDoZaNi4tD27Zt4e/vj5UrV8LISHtnVVBQEP773/8iOzsbJiYmAIBdu3bBy8sLlStXLvXa9dqZM0ByMmBjAwQGyl0NERFRudGLPj5xcXFo06YNatasiblz5+LevXtITEzU6rszYMAAmJqaYtiwYbh8+TLWr1+Pb7/9Fh999JGMleuof/6RLtu3ByrpxYF9REREpUIv/urt2rULkZGRiIyMRI0aNbTuE0IAAGxtbfHPP/9g9OjR8Pf3R9WqVTF16lQeyp4XdfB5/XV56yAiIipnCqFODoUUFhaGYcOGoXUFHek3NTUVtra2SElJgY2NjdzllL60NMDeHnj2DIiKAl7oQ0VERKSvCvv3u8hNXSkpKejQoQPq1KmDWbNmIS4urkSFUjn7918p9Hh6MvQQEZHBKXLw2bx5M+Li4jBq1CisX78ebm5u6NSpEzZu3Ijs7OyyqJFKE5u5iIjIgBWrc7ODgwM++ugjnD9/HsePH0ft2rUxaNAgVKtWDePHj8eNGzdKu04qLQw+RERkwEp0VFdCQgJ27dqFXbt2wdjYGJ07d8bFixfh7e2N+fPnl1aNVFpu3QKuXQOMjYG2beWuhoiIqNwVOfhkZ2fj999/R9euXVGrVi1s2LAB48aNQ3x8PFavXo3du3fjt99+w4wZM8qiXiqJXbuky+bNAVtbeWshIiKSQZEPZ3dxcYFKpUL//v1x4sQJ+Pn55Vqmbdu2sLOzK4XyqFSxmYuIiAxckYPP/Pnz0adPH5iZmeW7jJ2dHaKjo0tUGJWyF09TweBDREQGqsjBZ9CgQWVRB5W106eBhw8BOzsgIEDuaoiIiGShF6esoFLA01QQEREx+BgM9u8hIiJi8DEIaWnA0aPS9Y4d5a2FiIhIRgw+huDgweenqXB3l7saIiIi2TD4GIJ9+6RLDlpIREQGjsHHEOzdK10y+BARkYFj8KnoHj4Ezp6VrjP4EBGRgWPwqegOHACEAOrVA1xc5K6GiIhIVgw+FR379xAREWkw+FR07N9DRESkweBTkd27B1y8KF1v00bWUoiIiHQBg09F9u+/0qWPD+DgIG8tREREOoDBpyJj/x4iIiItDD4VmTr4tGsnbx1EREQ6gsGnokpIAK5cARQKIDhY7mqIiIh0AoNPRbV/v3Tp5wdUrixnJURERDqDwaeiYv8eIiKiXBh8KioGHyIiolwYfCqi2FggMhIwMgJatZK7GiIiIp3B4FMRqff2BAQAtrby1kJERKRDGHwqInXHZjZzERERaWHwqYgOHJAueRg7ERGRlkpyF0All6MSOBGdjLtpGaj+9BECoqKk8XtatJC7NCIiIp3C4KPndl5KQPjWCCSkZAAAulw5iAAAqXXrw4b9e4iIiLSwqUuP7byUgFFrz2hCDwAExEUAAP6w9MDOSwlylUZERKSTGHz0VI5KIHxrBMRL8wNjLwMATtZogPCtEchRvbwEERGR4WLw0VMnopO19vQAgHXmE9S/Gw0AOO7aAAkpGTgRnSxHeURERDqJwUdP3U3LyDXP/84VGEEgxs4F96zs812OiIjIUDH46ClHa7Nc85reed7MVdByREREhorBR08FutvDxdYMihfmqYPPCVdvKAC42Joh0N1elvqIiIh0EYOPnjI2UmBaN28AgAKA8lkWfBOuAwBO/f8en2ndvGFspMjvKYiIiAwOg48eC/VxwdK3m8DZ1gyNEq5DmfMM9yzskOHmgaVvN0Goj4vcJRIREekUDmCo50J9XNDR2xlxk6QTkxq1aoVDk9tzTw8REVEeGHwqAGMjBWpeOQMAqNKpPcDQQ0RElCc2dVUEOTnA4cPS9Vat5K2FiIhIhzH4VAQXLwKpqYC1NeDrK3c1REREOovBpyI4eFC6bNECMDaWtxYiIiIdxuBTEaiDD5u5iIiICsTgo++EYPAhIiIqJAYffXfzJpCYCJiYAE2byl0NERGRTmPw0XdHjkiXAQGAubm8tRAREek4Bh99d/SodBkUJG8dREREeoDBR98x+BARERUag48+e/wYuHBBus7gQ0RE9EoMPvrs5ElApQJcXYHq1eWuhoiISOcx+OgzNnMREREVCYOPPmPwISIiKhK9CT5vvPEGatasCTMzM7i4uGDQoEGIj4/XWubChQto1aoVzMzM4Orqijlz5shUbTkQAjh2TLrO4ENERFQoehN82rZti99++w3Xrl3D77//jqioKPTu3Vtzf2pqKl5//XXUqlULp0+fxtdff43p06fjhx9+kLHqMhQZCdy/DyiVQOPGcldDRESkFyrJXUBhjR8/XnO9Vq1amDx5Mnr06IHs7GyYmJhg3bp1yMrKwooVK2BqaooGDRrg3LlzmDdvHkaMGCFj5WVE3czVpAlgaipvLURERHpCb/b4vCg5ORnr1q1DixYtYGJiAgA4evQoWrduDdMXQkBISAiuXbuGhw8f5vtcmZmZSE1N1Zr0Avv3EBERFZleBZ9PPvkElpaWqFKlCm7fvo0tW7Zo7ktMTISTk5PW8urbiYmJ+T7n7NmzYWtrq5lcXV3LpvjSxuBDRERUZLIGn8mTJ0OhUBQ4Xb16VbP8pEmTcPbsWfzzzz8wNjbG4MGDIYQoUQ1TpkxBSkqKZoqNjS3papW9tDTg4kXpOoMPERFRocnax2fChAkYMmRIgct4eHhorletWhVVq1ZF3bp1Ub9+fbi6uuLYsWMICgqCs7MzkpKStB6rvu3s7Jzv8yuVSiiVyuKvhBw4cCEREVGxyBp8HBwc4ODgUKzHqlQqAFIfHQAICgrCf//7X01nZwDYtWsXvLy8ULly5dIpWFewmYuIiKhY9KKPz/Hjx7F48WKcO3cOt27dwt69e9G/f394enoi6P//+A8YMACmpqYYNmwYLl++jPXr1+Pbb7/FRx99JHP1ZYDBh4iIqFj0IvhYWFhg06ZNaN++Pby8vDBs2DA0atQI//77r6aZytbWFv/88w+io6Ph7++PCRMmYOrUqRXvUHYOXEhERFRsClHS3sEVTGpqKmxtbZGSkgIbGxu5y8ntxg2gbl1p4MLUVI7hQ0REhML//daLPT70AnUzl78/Qw8REVERMfjoG/bvISIiKjYGH33D/j1ERETFxuCjT54+fT5wYWCgvLUQERHpIQYffXL2LJCTAzg5ATVqyF0NERGR3mHw0ScnT0qXgYGAQiFvLURERHqIwUefqINP06by1kFERKSnGHz0yYkT0iWDDxERUbEw+OiLR4+kwQsBBh8iIqJiYvDRF6dOSZceHkCVKvLWQkREpKcYfPQFm7mIiIhKjMFHX7x4RBcREREVC4OPvuARXURERCXG4KMP4uOBuDjAyAho0kTuaoiIiPQWg48+UO/tadAAsLSUtxYiIiI9xuCjD9jMRUREVCoYfPQBj+giIiIqFQw+uk6I52P48IguIiKiEmHw0XVRUcDDh4BSCTRsKHc1REREeo3BR9epm7n8/AATE1lLISIi0ncMPrqOAxcSERGVGgYfXccjuoiIiEoNg48ue/YMOHNGus7gQ0REVGIMPrrs8mXg6VPAxgaoW1fuaoiIiPQeg48uUx/G7u8vna6CiIiISoR/TXWZupnL31/eOoiIiCoIBh9dpg4+PDEpERFRqWDw0VXPngHnz0vXGXyIiIhKBYOPrrp2TerYbGUF1KkjdzVEREQVAoOPrlI3c/n5sWMzERFRKeFfVF3F/j1ERESljsFHVzH4EBERlToGH12kUgFnz0rXGXyIiIhKDYOPLoqKAtLSADMzoH59uashIiKqMBh8dJG6matRI6BSJXlrISIiqkAYfHQR+/cQERGVCQYfXcTgQ0REVCYYfHSNEAw+REREZYTBR9fcvg0kJwMmJoCPj9zVEBERVSgMPrpGvbfHxwdQKuWthYiIqIJh8NE1bOYiIiIqMww+uobBh4iIqMww+OgaBh8iIqIyw+CjSxISgMRE6WzsjRrJXQ0REVGFw+CjS9R7e+rXByws5K2FiIioAmLw0SVs5iIiIipTDD66hMGHiIioTDH46BJ18GncWN46iIiIKigGH13x8KE0ajMA+PrKWwsREVEFxeCjKy5ckC5r1QLs7GQthYiIqKJi8NEV589Ll9zbQ0REVGYYfHQFgw8REVGZY/DRFefOSZcMPkRERGWGwUcXPHsGXL4sXWfwISIiKjMMPrrg2jUgMxOwsgI8POSuhoiIqMLSu+CTmZkJPz8/KBQKnFM3D/2/CxcuoFWrVjAzM4OrqyvmzJkjT5FFpe7f06iRdJ4uIiIiKhN691f2448/RrVq1XLNT01Nxeuvv45atWrh9OnT+PrrrzF9+nT88MMPMlRZROzYTEREVC4qyV1AUezYsQP//PMPfv/9d+zYsUPrvnXr1iErKwsrVqyAqakpGjRogHPnzmHevHkYMWKETBUXEoMPERFRudCbPT5JSUkYPnw41qxZA4s8zlx+9OhRtG7dGqamppp5ISEhuHbtGh4+fJjv82ZmZiI1NVVrKncMPkREROVCL4KPEAJDhgzByJEjERAQkOcyiYmJcHJy0pqnvp2YmJjvc8+ePRu2traaydXVtfQKL4y7d4HEREChABo2LN/XJiIiMjCyBp/JkydDoVAUOF29ehWLFi1CWloapkyZUuo1TJkyBSkpKZopNja21F+jQOq9PbVrA5aW5fvaREREBkbWPj4TJkzAkCFDClzGw8MDe/fuxdGjR6FUKrXuCwgIwMCBA7F69Wo4OzsjKSlJ6371bWdn53yfX6lU5nrecsVmLiIionIja/BxcHCAg4PDK5dbuHAhPv/8c83t+Ph4hISEYP369WjWrBkAICgoCP/973+RnZ0NExMTAMCuXbvg5eWFypUrl80KlAYGHyIionKjF0d11axZU+u2lZUVAMDT0xM1atQAAAwYMADh4eEYNmwYPvnkE1y6dAnffvst5s+fX+71FgmDDxERUbnRi+BTGLa2tvjnn38wevRo+Pv7o2rVqpg6dapuH8qemQlcuSJdZ/AhIiIqc3oZfNzc3CCEyDW/UaNGOHjwoAwVFdOVK9J5uuzsgPI+moyIiMgA6cXh7BXWi81cCoW8tRARERkAvdzjU2GozzXGZi4iApCTk4Ps7Gy5yyDSSSYmJjA2Ni7x8zD4yIkdm4kI0iCtiYmJePTokdylEOk0Ozs7ODs7Q1GCVhIGH7kIweBDRACgCT2Ojo6wsLAo0Y86UUUkhEB6ejru3r0LAHBxcSn2czH4yCUuDkhOBoyNgQYN5K6GiGSSk5OjCT1VqlSRuxwinWVubg4AuHv3LhwdHYvd7MXOzXJR7+2pVw8wM5O3FiKSjbpPT14nXyYibervSUn6wjH4yOXiRemyUSN56yAincDmLaJXK43vCYOPXNTBh2dkJyLSOdOnT4efn5/cZVAZYPCRy6VL0qWPj7x1EBEV05AhQ6BQKKBQKGBiYgInJyd07NgRK1asgEqlKtJzrVq1CnZ2dmVTaDFMnDgRe/bsKdJj3NzcsGDBgrIpiEoNg48csrOBq1el69zjQ0R6LDQ0FAkJCYiJicGOHTvQtm1bjB07Fl27dsWzZ8/kLq/YrKys2Nm8gmLwkUNkJJCVBVhZAS+dgJWIqLhyVAJHox5gy7k4HI16gBxV7lP7lDalUglnZ2dUr14dTZo0wX/+8x9s2bIFO3bswKpVqzTLzZs3Dw0bNoSlpSVcXV3x/vvv4/HjxwCA/fv3Y+jQoUhJSdHsQZo+fToAYM2aNQgICIC1tTWcnZ0xYMAAzSHN+XFzc8PMmTPRv39/WFpaonr16liyZInWMrdv30b37t1hZWUFGxsb9O3bF0lJSZr7X27qGjJkCHr06IG5c+fCxcUFVapUwejRozWdbNu0aYNbt25h/PjxmnUAgFu3bqFbt26oXLkyLC0t0aBBA2zfvr24m5tKAYOPHNT9exo0AIz4FhBRye28lIDXvtqL/suPYeyv59B/+TG89tVe7LyUUO61tGvXDr6+vti0aZNmnpGRERYuXIjLly9j9erV2Lt3Lz7++GMAQIsWLbBgwQLY2NggISEBCQkJmDhxIgDp6J2ZM2fi/Pnz2Lx5M2JiYjBkyJBX1vD111/D19cXZ8+exeTJkzF27Fjs2rULAKBSqdC9e3ckJyfj33//xa5du3Dz5k3069evwOfct28foqKisG/fPqxevRqrVq3ShLtNmzahRo0amDFjhmYdAGD06NHIzMzEgQMHcPHiRXz11VewsrIq6ialUsRxfOSg7t/DZi4iKgU7LyVg1NozeHn/TmJKBkatPYOlbzdBqE/xB3wrjnr16uHChQua2+PGjdNcd3Nzw+eff46RI0fiu+++g6mpKWxtbaFQKODs7Kz1PO+8847muoeHBxYuXIimTZvi8ePHBQaIli1bYvLkyQCAunXr4vDhw5g/fz46duyIPXv24OLFi4iOjobr/58g+ueff0aDBg1w8uRJNG3aNM/nrFy5MhYvXgxjY2PUq1cPXbp0wZ49ezB8+HDY29vD2NhYs2dK7fbt2+jVqxca/v/vvYeHRyG3IJUV7m6QAzs2E1EpyVEJhG+NyBV6AGjmhW+NKJdmL63XFkLr0OPdu3ejffv2qF69OqytrTFo0CA8ePAA6enpBT7P6dOn0a1bN9SsWRPW1tYIDg4GIAWKggQFBeW6feXKFQDAlStX4Orqqgk9AODt7Q07OzvNMnlp0KCB1qB5Li4ur2x2+/DDD/H555+jZcuWmDZtmlYYJHkw+MiBwYeISsmJ6GQkpGTke78AkJCSgRPRyeVXFKRw4e7uDgCIiYlB165d0ahRI/z+++84ffq0ps9NVlZWvs/x5MkThISEwMbGBuvWrcPJkyfxxx9/vPJxZcXExETrtkKheOXRa++++y5u3ryJQYMG4eLFiwgICMCiRYvKskx6BQaf8paeLnVuBhh8iKjE7qblH3qKs1xp2Lt3Ly5evIhevXoBkPbaqFQqfPPNN2jevDnq1q2L+Ph4rceYmpoiJydHa97Vq1fx4MEDfPnll2jVqhXq1av3yj0saseOHct1u379+gCA+vXrIzY2FrGxsZr7IyIi8OjRI3h7exd5fQtaBwBwdXXFyJEjsWnTJkyYMAHLly8v9mtQyTH4lLcrV6QTlDo4AE5OcldDRHrO0bpwp7wp7HJFlZmZicTERMTFxeHMmTOYNWsWunfvjq5du2Lw4MEAgNq1ayM7OxuLFi3CzZs3sWbNGixbtkzredzc3PD48WPs2bMH9+/fR3p6OmrWrAlTU1PN4/7880/MnDmzUHUdPnwYc+bMwfXr17FkyRJs2LABY8eOBQB06NABDRs2xMCBA3HmzBmcOHECgwcPRnBwMAICAoq9Ldzc3HDgwAHExcXh/v37AKS+TX///Teio6Nx5swZ7Nu3TxPASB4MPuWNzVxEVIoC3e3hYmuG/AbyVwBwsTVDoLt9mbz+zp074eLiAjc3N4SGhmLfvn1YuHAhtmzZoukP4+vri3nz5uGrr76Cj48P1q1bh9mzZ2s9T4sWLTBy5Ej069cPDg4OmDNnDhwcHLBq1Sps2LAB3t7e+PLLLzF37txC1TVhwgScOnUKjRs3xueff4558+YhJCQEgNREtWXLFlSuXBmtW7dGhw4d4OHhgfXr15doW8yYMQMxMTHw9PSEg4MDAOkktKNHj0b9+vURGhqKunXr4rvvvivR61DJKIQQ5dvjTcelpqbC1tYWKSkpsLGxKf0XmDgR+OYbYMwYYOHC0n9+ItIrGRkZiI6Ohru7O8yKecJi9VFdALQ6OavDkBxHdcnJzc0N48aN0zqSjCqGgr4vhf37zT0+5Y17fIiolIX6uGDp203gbKv9h8DZ1szgQg/Rq3Acn/LGMXyIqAyE+rigo7czTkQn425aBhytpeYtYyOe9Z3oRQw+5enhQyAuTrreoIG8tRBRhWNspECQJ88vFRMTI3cJpMPY1FWe1Ht7atYEyqL/EBERERWIwac8sZmLiIhIVgw+5Ykdm4mIiGTF4FOeGHyIiIhkxeBTXoQALl6UrjP4EBERyYLBp7wkJEhHdRkbA/XqyV0NERGRQWLwKS/qZq46dYBijs5KRKRvYmJioFAocO7cuXyX2b9/PxQKBR49elRudVU0CoUCmzdvlrWGNm3a6MVo2Qw+5YX9e4ioghkyZAgUCgUUCgVMTEzg7u6Ojz/+GBkZz88E7+rqioSEBPjowG/f9OnTNfUaGxvD1dUVI0aMQHJystyllVhCQgI6depUpq+xatUq2NnZ5Xv/pk2bCn0SWTlxAMPyou7fw0PZiagCCQ0NxcqVK5GdnY3Tp08jLCwMCoUCX331FQDA2NgYzs7OMlf5XIMGDbB7927k5OTgypUreOedd5CSklLiE5QWRAiBnJwcVKpUdn9ydWEb29uXzYlwSxv3+JQX7vEhogpIqVTC2dkZrq6u6NGjBzp06IBdu3Zp7s+rqWv79u2oW7cuzM3N0bZt2zxHWl6+fDlcXV1hYWGBN998E/Pmzcu1t2HLli1o0qQJzMzM4OHhgfDwcDx79qzAeitVqgRnZ2dUr14dHTp0QJ8+fbTqBYAff/wR9evXh5mZGerVq5frbOpHjhyBn58fzMzMEBAQgM2bN2uto7rpbseOHfD394dSqcShQ4egUqkwe/ZsuLu7w9zcHL6+vti4caPmeR8+fIiBAwfCwcEB5ubmqFOnDlauXAkAyMrKwgcffAAXFxeYmZmhVq1aWme4f7mp6+LFi2jXrh3Mzc1RpUoVjBgxAo8fP9bcP2TIEPTo0QNz586Fi4sLqlSpgtGjRyM7O7vA7VeQl5u63NzcMGvWLLzzzjuwtrZGzZo18cMPP2g9JjY2Fn379oWdnR3s7e3RvXv3Mh95m3t8yoNKBVy+LF1n8CGiVxECSE+X57UtLABF8c7vdenSJRw5cgS1atXKd5nY2Fj07NkTo0ePxogRI3Dq1ClMmDBBa5nDhw9j5MiR+Oqrr/DGG29g9+7d+Oyzz7SWOXjwIAYPHoyFCxeiVatWiIqKwogRIwAA06ZNK1S9MTEx+Pvvv2FqaqqZt27dOkydOhWLFy9G48aNcfbsWQwfPhyWlpYICwtDamoqunXrhs6dO+N///sfbt26lW+/lsmTJ2Pu3Lnw8PBA5cqVMXv2bKxduxbLli1DnTp1cODAAbz99ttwcHBAcHAwPvvsM0RERGDHjh2oWrUqIiMj8fTpUwDAwoUL8eeff+K3335DzZo1ERsbi9jY2Dxf98mTJwgJCUFQUBBOnjyJu3fv4t1338UHH3yAVatWaZbbt28fXFxcsG/fPkRGRqJfv37w8/PD8OHDC7X9CuObb77BzJkz8Z///AcbN27EqFGjEBwcDC8vL2RnZ2vqPHjwICpVqoTPP/8coaGhuHDhgtb7UqoEaUlJSREAREpKSqk957PUNBE/eLhIat5aHLmWJJ7lqErtuYlIvz19+lRERESIp0+fPp/5+LEQUvwp/+nx40LXHhYWJoyNjYWlpaVQKpUCgDAyMhIbN27ULBMdHS0AiLNnzwohhJgyZYrw9vbWep5PPvlEABAPHz4UQgjRr18/0aVLF61lBg4cKGxtbTW327dvL2bNmqW1zJo1a4SLi0u+9U6bNk0YGRkJS0tLYWZmJgAIAGLevHmaZTw9PcX//vc/rcfNnDlTBAUFCSGEWLp0qahSpYrW+7V8+XKtddy3b58AIDZv3qxZJiMjQ1hYWIgjR45oPfewYcNE//79hRBCdOvWTQwdOjTP2seMGSPatWsnVKq8/34AEH/88YcQQogffvhBVK5cWTx+4b3866+/hJGRkUhMTBRCSO9drVq1xLNnzzTL9OnTR/Tr1y/P5xdCiJUrV2q9By8LDg4WY8eO1dyuVauWePvttzW3VSqVcHR0FEuXLhVCSO+Xl5eX1jplZmYKc3Nz8ffff+f5Gnl+X/5fYf9+c49PGdt5KQHhWyOQ4NIdcAGw4iRcbM0wrZs3Qn1c5C6PiKhE2rZti6VLl+LJkyeYP38+KlWqhF69euW7/JUrV9CsWTOteUFBQVq3r127hjfffFNrXmBgILZt26a5ff78eRw+fBhffPGFZl5OTg4yMjKQnp4OCwuLPF/fy8sLf/75JzIyMrB27VqcO3cOY8aMASDtKYmKisKwYcO09no8e/YMtra2mtoaNWoEsxeOzg0MDMzztQICAjTXIyMjkZ6ejo4dO2otk5WVhcaNGwMARo0ahV69euHMmTN4/fXX0aNHD7Ro0QKA1DTVsWNHeHl5ITQ0FF27dsXrr7+e5+teuXIFvr6+sLS01Mxr2bIlVCoVrl27BicnJwBSfydjY2PNMi4uLrio7o9aSho1aqS5rlAo4OzsjLt37wKQ3sPIyEhYW1trPSYjIwNRUVGlWseLGHzK0M5LCRi19gzES/MTUzIwau0ZLH27CcMPEeVmYQG80B+j3F+7CCwtLVG7dm0AwIoVK+Dr64uffvoJw4YNK4vqNB4/fozw8HD07Nkz131mBQwZYmpqqqn3yy+/RJcuXRAeHo6ZM2dq+sAsX748Vzh7MSAU1ovBQ/3cf/31F6pXr661nFKpBAB06tQJt27dwvbt27Fr1y60b98eo0ePxty5c9GkSRNER0djx44d2L17N/r27YsOHTpo9REqKhMTE63bCoUCKpWq2M9X1Nd4/Pgx/P39sW7dulyPc3BwKNU6XsTgU0ZyVALhWyNyhR5A2reqABC+NQIdvZ1hbFS89nQiqqAUCuCFP5r6wsjICP/5z3/w0UcfYcCAATA3N8+1TP369fHnn39qzTt27JjWbS8vL5w8eVJr3su3mzRpgmvXrmlCTHF9+umnaNeuHUaNGoVq1aqhWrVquHnzJgYOHJjn8l5eXli7di0yMzM1geXl2vLi7e0NpVKJ27dvIzg4ON/lHBwcEBYWhrCwMLRq1QqTJk3C3LlzAQA2Njbo168f+vXrh969eyM0NBTJycm5jqaqX78+Vq1ahSdPnmjC1+HDh2FkZAQvL69CbZfy0KRJE6xfvx6Ojo6wsbEpt9flUV1l5ER0MhJSMvK9XwBISMnAiWj9Hz+CiEitT58+MDY2xpIlS/K8f+TIkbhx4wYmTZqEa9eu4X//+59Wh1sAGDNmDLZv34558+bhxo0b+P7777Fjxw4oXuh0PXXqVPz8888IDw/H5cuXceXKFfz666/49NNPi1RvUFAQGjVqhFmzZgEAwsPDMXv2bCxcuBDXr1/HxYsXsXLlSsybNw8AMGDAAKhUKowYMQJXrlzB33//rQkmigI6hVtbW2PixIkYP348Vq9ejaioKJw5cwaLFi3C6tWrNeu0ZcsWREZG4vLly9i2bRvq168PAJg3bx5++eUXXL16FdevX8eGDRvg7Oyc57g6AwcOhJmZGcLCwnDp0iXs27cPY8aMwaBBgzTNXMWVk5ODc+fOaU1Xrlwp1nMNHDgQVatWRffu3XHw4EFER0dj//79+PDDD3Hnzp0S1VkQBp8ycjct/9BTnOWIiPRBpUqV8MEHH2DOnDl48uRJrvtr1qyJ33//HZs3b4avry+WLVumCR1qLVu2xLJlyzBv3jz4+vpi586dGD9+vFYTVkhICLZt24Z//vkHTZs2RfPmzTF//vwCjyjLz/jx4/Hjjz8iNjYW7777Ln788UesXLkSDRs2RHBwMFatWgV3d3cA0l6XrVu34ty5c/Dz88N///tfTJ06FUDBTWwAMHPmTHz22WeYPXs26tevj9DQUPz111+a5zY1NcWUKVPQqFEjtG7dGsbGxvj1118BSMFpzpw5CAgIQNOmTRETE4Pt27fDyCj3n3ELCwv8/fffSE5ORtOmTdG7d2+0b98eixcvLvK2ednjx4/RuHFjralbt27Fei4LCwscOHAANWvWRM+ePVG/fn0MGzYMGRkZZboHSCGEyKs1xmClpqbC1tYWKSkpJdrwR6MeoP/yY69c7pfhzRHkWaXYr0NE+i0jIwPR0dFwd3d/5R9OQzZ8+HBcvXoVBw8elLuUXNatW4ehQ4ciJSUlz+Y9Kj0FfV8K+/ebfXzKSKC7PVxszZCYkpFnPx8FAGdbMwS668dIl0RE5Wnu3Lno2LEjLC0tsWPHDqxevTrXQIJy+fnnn+Hh4YHq1avj/Pnz+OSTT9C3b1+GHj3B4FNGjI0UmNbNG6PWnoEC0Ao/6lbgad282bGZiCgPJ06cwJw5c5CWlgYPDw8sXLgQ7777rtxlAQASExMxdepUJCYmwsXFBX369NE6rJ50G5u6XlJaTV1qmnF8XujozHF8iEiNTV1EhcemLj0Q6uOCjt7OOBGdjLtpGXC0lpq3uKeHiIio/DH4lANjIwU7MBMREekAHs5ORKQD2OuA6NVK43vC4ENEJCP1kP7pcp2NnUiPqL8nL58KoyjY1EVEJCNjY2PY2dlpTtxoYWFR4AjARIZICIH09HTcvXsXdnZ2xTp3mhqDDxGRzJydnQFAE36IKG92dnaa70txMfgQEclMoVDAxcUFjo6OyM7OlrscIp1kYmJSoj09agw+REQ6wtjYuFR+2Ikof+zcTERERAaDwYeIiIgMBoMPERERGQz28XmJenCk1NRUmSshIiKiwlL/3X7VIIcMPi9JS0sDALi6uspcCRERERVVWloabG1t872fZ2d/iUqlQnx8PKytrV85iFhqaipcXV0RGxtbKmdy1zeGvv4AtwHAbWDo6w9wGxj6+gO6sQ2EEEhLS0O1atVgZJR/Tx7u8XmJkZERatSoUaTH2NjYGOyHHeD6A9wGALeBoa8/wG1g6OsPyL8NCtrTo8bOzURERGQwGHyIiIjIYDD4lIBSqcS0adOgVCrlLkUWhr7+ALcBwG1g6OsPcBsY+voD+rUN2LmZiIiIDAb3+BAREZHBYPAhIiIig8HgQ0RERAaDwYeIiIgMBoNPEcTExGDYsGFwd3eHubk5PD09MW3aNGRlZRX4uIyMDIwePRpVqlSBlZUVevXqhaSkpHKqunR98cUXaNGiBSwsLGBnZ1eoxwwZMgQKhUJrCg0NLdtCy1BxtoEQAlOnToWLiwvMzc3RoUMH3Lhxo2wLLSPJyckYOHAgbGxsYGdnh2HDhuHx48cFPqZNmza5PgMjR44sp4pLbsmSJXBzc4OZmRmaNWuGEydOFLj8hg0bUK9ePZiZmaFhw4bYvn17OVVadoqyDVatWpXr/TYzMyvHakvXgQMH0K1bN1SrVg0KhQKbN29+5WP279+PJk2aQKlUonbt2li1alWZ11lWirr++/fvz/X+KxQKJCYmlk/Br8DgUwRXr16FSqXC999/j8uXL2P+/PlYtmwZ/vOf/xT4uPHjx2Pr1q3YsGED/v33X8THx6Nnz57lVHXpysrKQp8+fTBq1KgiPS40NBQJCQma6ZdffimjCstecbbBnDlzsHDhQixbtgzHjx+HpaUlQkJCkJGRUYaVlo2BAwfi8uXL2LVrF7Zt24YDBw5gxIgRr3zc8OHDtT4Dc+bMKYdqS279+vX46KOPMG3aNJw5cwa+vr4ICQnB3bt381z+yJEj6N+/P4YNG4azZ8+iR48e6NGjBy5dulTOlZeeom4DQBrB98X3+9atW+VYcel68uQJfH19sWTJkkItHx0djS5duqBt27Y4d+4cxo0bh3fffRd///13GVdaNoq6/mrXrl3T+gw4OjqWUYVFJKhE5syZI9zd3fO9/9GjR8LExERs2LBBM+/KlSsCgDh69Gh5lFgmVq5cKWxtbQu1bFhYmOjevXuZ1iOHwm4DlUolnJ2dxddff62Z9+jRI6FUKsUvv/xShhWWvoiICAFAnDx5UjNvx44dQqFQiLi4uHwfFxwcLMaOHVsOFZa+wMBAMXr0aM3tnJwcUa1aNTF79uw8l+/bt6/o0qWL1rxmzZqJ9957r0zrLEtF3QZF+X3QNwDEH3/8UeAyH3/8sWjQoIHWvH79+omQkJAyrKx8FGb99+3bJwCIhw8flktNRcU9PiWUkpICe3v7fO8/ffo0srOz0aFDB828evXqoWbNmjh69Gh5lKgT9u/fD0dHR3h5eWHUqFF48OCB3CWVm+joaCQmJmp9BmxtbdGsWTO9+wwcPXoUdnZ2CAgI0Mzr0KEDjIyMcPz48QIfu27dOlStWhU+Pj6YMmUK0tPTy7rcEsvKysLp06e13jsjIyN06NAh3/fu6NGjWssDQEhIiN6912rF2QYA8PjxY9SqVQuurq7o3r07Ll++XB7l6oSK9hkoLj8/P7i4uKBjx444fPiw3OVo8CSlJRAZGYlFixZh7ty5+S6TmJgIU1PTXH1BnJycdKa9s6yFhoaiZ8+ecHd3R1RUFP7zn/+gU6dOOHr0KIyNjeUur8yp32cnJyet+fr4GUhMTMy1u7pSpUqwt7cvcF0GDBiAWrVqoVq1arhw4QI++eQTXLt2DZs2bSrrkkvk/v37yMnJyfO9u3r1ap6PSUxMrBDvtVpxtoGXlxdWrFiBRo0aISUlBXPnzkWLFi1w+fLlIp8EWh/l9xlITU3F06dPYW5uLlNl5cPFxQXLli1DQEAAMjMz8eOPP6JNmzY4fvw4mjRpInd57OMDAJMnT86zI9aL08tf8Li4OISGhqJPnz4YPny4TJWXjuKsf1G89dZbeOONN9CwYUP06NED27Ztw8mTJ7F///7SW4kSKuttoOvKev1HjBiBkJAQNGzYEAMHDsTPP/+MP/74A1FRUaW4FqQrgoKCMHjwYPj5+SE4OBibNm2Cg4MDvv/+e7lLo3Lg5eWF9957D/7+/mjRogVWrFiBFi1aYP78+XKXBoB7fAAAEyZMwJAhQwpcxsPDQ3M9Pj4ebdu2RYsWLfDDDz8U+DhnZ2dkZWXh0aNHWnt9kpKS4OzsXJKyS01R17+kPDw8ULVqVURGRqJ9+/al9rwlUZbbQP0+JyUlwcXFRTM/KSkJfn5+xXrO0lbY9Xd2ds7VofXZs2dITk4u0ue5WbNmAKS9pp6enkWut7xUrVoVxsbGuY7CLOj76+zsXKTldV1xtsHLTExM0LhxY0RGRpZFiTonv8+AjY1Nhd/bk5/AwEAcOnRI7jIAMPgAABwcHODg4FCoZePi4tC2bVv4+/tj5cqVMDIqeKeZv78/TExMsGfPHvTq1QuA1NP99u3bCAoKKnHtpaEo618a7ty5gwcPHmiFALmV5TZwd3eHs7Mz9uzZowk6qampOH78eJGPjisrhV3/oKAgPHr0CKdPn4a/vz8AYO/evVCpVJowUxjnzp0DAJ36DOTF1NQU/v7+2LNnD3r06AEAUKlU2LNnDz744IM8HxMUFIQ9e/Zg3Lhxmnm7du3Sme97URVnG7wsJycHFy9eROfOncuwUt0RFBSUawgDff4MlIZz587pzvdd7t7V+uTOnTuidu3aon379uLOnTsiISFBM724jJeXlzh+/Lhm3siRI0XNmjXF3r17xalTp0RQUJAICgqSYxVK7NatW+Ls2bMiPDxcWFlZibNnz4qzZ8+KtLQ0zTJeXl5i06ZNQggh0tLSxMSJE8XRo0dFdHS02L17t2jSpImoU6eOyMjIkGs1SqSo20AIIb788kthZ2cntmzZIi5cuCC6d+8u3N3dxdOnT+VYhRIJDQ0VjRs3FsePHxeHDh0SderUEf3799fc//J3IDIyUsyYMUOcOnVKREdHiy1btggPDw/RunVruVahSH799VehVCrFqlWrREREhBgxYoSws7MTiYmJQgghBg0aJCZPnqxZ/vDhw6JSpUpi7ty54sqVK2LatGnCxMREXLx4Ua5VKLGiboPw8HDx999/i6ioKHH69Gnx1ltvCTMzM3H58mW5VqFE0tLSNN9zAGLevHni7Nmz4tatW0IIISZPniwGDRqkWf7mzZvCwsJCTJo0SVy5ckUsWbJEGBsbi507d8q1CiVS1PWfP3++2Lx5s7hx44a4ePGiGDt2rDAyMhK7d++WaxW0MPgUwcqVKwWAPCe16OhoAUDs27dPM+/p06fi/fffF5UrVxYWFhbizTff1ApL+iQsLCzP9X9xfQGIlStXCiGESE9PF6+//rpwcHAQJiYmolatWmL48OGaH0x9VNRtIIR0SPtnn30mnJychFKpFO3btxfXrl0r/+JLwYMHD0T//v2FlZWVsLGxEUOHDtUKfS9/B27fvi1at24t7O3thVKpFLVr1xaTJk0SKSkpMq1B0S1atEjUrFlTmJqaisDAQHHs2DHNfcHBwSIsLExr+d9++03UrVtXmJqaigYNGoi//vqrnCsufUXZBuPGjdMs6+TkJDp37izOnDkjQ9WlQ3149suTep3DwsJEcHBwrsf4+fkJU1NT4eHhofV7oG+Kuv5fffWV8PT0FGZmZsLe3l60adNG7N27V57i86AQQoiy369EREREJD8e1UVEREQGg8GHiIiIDAaDDxERERkMBh8iIiIyGAw+REREZDAYfIiIiMhgMPgQERGRwWDwISIiIoPB4ENEREQGg8GHiIiIDAaDDxFVaPfu3YOzszNmzZqlmXfkyBGYmppiz549MlZGRHLgubqIqMLbvn07evTogSNHjsDLywt+fn7o3r075s2bJ3dpRFTOGHyIyCCMHj0au3fvRkBAAC5evIiTJ09CqVTKXRYRlTMGHyIyCE+fPoWPjw9iY2Nx+vRpNGzYUO6SiEgG7ONDRAYhKioK8fHxUKlUiImJkbscIpIJ9/gQUYWXlZWFwMBA+Pn5wcvLCwsWLMDFixfh6Ogod2lEVM4YfIiowps0aRI2btyI8+fPw8rKCsHBwbC1tcW2bdvkLo2IyhmbuoioQtu/fz8WLFiANWvWwMbGBkZGRlizZg0OHjyIpUuXyl0eEZUz7vEhIiIig8E9PkRERGQwGHyIiIjIYDD4EBERkcFg8CEiIiKDweBDREREBoPBh4iIiAwGgw8REREZDAYfIiIiMhgMPkRERGQwGHyIiIjIYDD4EBERkcFg8CEiIiKD8X8qJ/t9VTtuGAAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "# Generating demo data using the same snippet\n", + "np.random.seed(42)\n", + "x = np.random.normal(0, 1, 20)\n", + "y = -3.8 * x**4 + 3.4 * x**3 + 6.6 * x**2 - 2.5 * x + np.random.normal(0, 1, 20)\n", + "X = x[:, np.newaxis]\n", + "\n", + "# Using polynomial features again since our relationship is non-linear\n", + "degree = 4\n", + "ridge_poly = make_pipeline(PolynomialFeatures(degree), Ridge(alpha=0.1))\n", + "ridge_poly.fit(X, y)\n", + "\n", + "# Generating points for plotting\n", + "x_plot = np.linspace(min(x), max(x), 100)\n", + "X_plot = x_plot[:, np.newaxis]\n", + "y_plot = ridge_poly.predict(X_plot)\n", + "\n", + "# Plotting\n", + "plt.scatter(x, y, label='Data points')\n", + "plt.plot(x_plot, y_plot, color='red', label='Ridge Regression Line')\n", + "plt.legend()\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Ridge Regression with Polynomial Features')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "ec10b1ed-2cd4-4e2f-856b-dc95c093b7eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , -2.05626925, 6.75667935, 3.06069885, -3.96459941])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridge_poly['ridge'].coef_" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "950a5b0b-afeb-4899-8c0a-74bc989e464a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.14654769263455236" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridge_poly['ridge'].intercept_" + ] + }, + { + "cell_type": "markdown", + "id": "6605fd80-9410-46d4-b054-b06fcd85f4d3", + "metadata": {}, + "source": [ + "## Exercise For The Reader\n", + "\n", + "Lasso and Ridge regression could be applied to sklearn's included [California housing data set](https://scikit-learn.org/stable/datasets/real_world.html#california-housing-dataset).\n", + "\n", + "\n", + "\n", + "* Don't forget to do a test train split.\n", + "* It's probably best to use a scaler.\n", + "* selecting variables is important, but can be thought of as part science and part art. Try a few and see what helps." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "0a63bf90-e251-4807-9ca6-0952a43d26c4", + "metadata": {}, + "outputs": [], + "source": [ + "# starter code\n", + "from sklearn.datasets import fetch_california_housing\n", + "from sklearn.model_selection import train_test_split\n", + "fetched = fetch_california_housing(as_frame=True)\n", + "X = fetched['data']\n", + "Y = fetched['target']\n", + "\n", + "# Splitting dataset\n", + "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "0fd6514b-3031-41a2-b2da-9aef3cb508ea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    MedIncHouseAgeAveRoomsAveBedrmsPopulationAveOccupLatitudeLongitude
    08.325241.06.9841271.023810322.02.55555637.88-122.23
    18.301421.06.2381370.9718802401.02.10984237.86-122.22
    27.257452.08.2881361.073446496.02.80226037.85-122.24
    35.643152.05.8173521.073059558.02.54794537.85-122.25
    43.846252.06.2818531.081081565.02.18146737.85-122.25
    \n", + "
    " + ], + "text/plain": [ + " MedInc HouseAge AveRooms AveBedrms Population AveOccup Latitude \\\n", + "0 8.3252 41.0 6.984127 1.023810 322.0 2.555556 37.88 \n", + "1 8.3014 21.0 6.238137 0.971880 2401.0 2.109842 37.86 \n", + "2 7.2574 52.0 8.288136 1.073446 496.0 2.802260 37.85 \n", + "3 5.6431 52.0 5.817352 1.073059 558.0 2.547945 37.85 \n", + "4 3.8462 52.0 6.281853 1.081081 565.0 2.181467 37.85 \n", + "\n", + " Longitude \n", + "0 -122.23 \n", + "1 -122.22 \n", + "2 -122.24 \n", + "3 -122.25 \n", + "4 -122.25 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "52b11cb7-455a-4a6d-935b-33d801df9ad0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=8)),\n",
    +       "                ('standardscaler', StandardScaler()),\n",
    +       "                ('ridge', Ridge(alpha=0.1))])
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " + ], + "text/plain": [ + "Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=8)),\n", + " ('standardscaler', StandardScaler()),\n", + " ('ridge', Ridge(alpha=0.1))])" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# model configuration\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "degrees = 8\n", + "ridge_poly = make_pipeline(PolynomialFeatures(degrees), StandardScaler(), Ridge(alpha=0.1))\n", + "ridge_poly.fit(X_train, Y_train)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "4d97f8a1-f718-40f6-90b8-c1ab3a477662", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE: 620.2980353830641\n", + "R-squared: -472.3621683634644\n" + ] + } + ], + "source": [ + "from sklearn.metrics import mean_squared_error, r2_score\n", + "\n", + "# Making predictions\n", + "predictions = ridge_poly.predict(X_test)\n", + "\n", + "# Evaluation\n", + "mse = mean_squared_error(Y_test, predictions)\n", + "r2 = r2_score(Y_test, predictions)\n", + "\n", + "print(f'MSE: {mse}')\n", + "print(f'R-squared: {r2}')" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "e4df6f54-b6a6-40ff-8849-f5a9ca2ff290", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input data:\n", + " MedInc HouseAge AveRooms AveBedrms Population AveOccup Latitude \\\n", + "20046 1.6812 25.0 4.192201 1.022284 1392.0 3.877437 36.06 \n", + "\n", + " Longitude \n", + "20046 -119.01 \n", + "\n", + "Median house value: $47.70k\n", + "Predicted value: $70.53k\n" + ] + } + ], + "source": [ + "# examine the concrete results of the model - prediction vs test data's label\n", + "# the dataset provides home values in fractions of $100,000, so we convert the prediction to real dollars.\n", + "print(f\"\"\"Input data:\n", + "{X_test[:1]}\n", + "\n", + "Median house value: ${Y_test.iloc[0] * 100:.2f}k\n", + "Predicted value: ${predictions[0] * 100:.2f}k\"\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "65e80f87-06a3-4416-83e0-cd06078c6703", + "metadata": {}, + "source": [ + "Can you improve it with data preprocessing or altering the model parameters?\n", + "\n", + "Have fun!" + ] + }, + { + "cell_type": "markdown", + "id": "27de40d2-56fd-482f-bc79-6c31ab056d3c", + "metadata": {}, + "source": [ + "## Additional Resources\n", + "\n", + "- **Resource 1:** [Advanced Linear Regression With Python](https://realpython.com/linear-regression-in-python/#polynomial-regression) (Guide on polynomial regression, Lasso, and Ridge regression in Python)\n", + "- **Resource 2:** [Machine Learning: Polynomial Regression with Python](https://towardsdatascience.com/machine-learning-polynomial-regression-with-python-5328e4e8a386) (Tutorial on polynomial regression and its application in Python)" ] }, { "cell_type": "code", "execution_count": null, - "id": "780f47fd-0028-4f64-8cd3-cef867bcb2b2", + "id": "6328b773-d5f0-4c16-88e5-201cdf8068e4", "metadata": {}, "outputs": [], "source": [] diff --git a/_sources/Week_05/Lesson_24.ipynb b/_sources/Week_05/Lesson_24.ipynb deleted file mode 100644 index 56cf18e..0000000 --- a/_sources/Week_05/Lesson_24.ipynb +++ /dev/null @@ -1,53 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d042b09f-5dbb-4492-b635-efaf72f2430a", - "metadata": {}, - "source": [ - "# Outline Only - **Lesson 24:** Regression Model Evaluation Metrics in Python - Key metrics for evaluating regression models.\n", - "Math Focus: Mean Squared Error (MSE), Root Mean Squared Error (RMSE), and R-squared.\n", - "- **Theoretical Concepts:**\n", - " - Importance of model evaluation in regression analysis.\n", - " - Overview of key metrics: MSE, RMSE, and R-squared.\n", - "- **Mathematical Foundation:**\n", - " - Formulas and interpretation of MSE, RMSE, and R-squared.\n", - " - Understanding the significance of these metrics in model performance.\n", - "- **Python Implementation:**\n", - " - Calculating MSE, RMSE, and R-squared using scikit-learn.\n", - " - Visualizing residuals to understand model performance.\n", - "- **Example Dataset:**\n", - " - Use datasets from previous lessons for consistency in evaluation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b1004f48-41e2-48b4-9803-6b5d575d639b", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/_sources/Week_05/Lesson_25.ipynb b/_sources/Week_05/Lesson_25.ipynb deleted file mode 100644 index 8d4973d..0000000 --- a/_sources/Week_05/Lesson_25.ipynb +++ /dev/null @@ -1,54 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "3f3fb1e7-ba4e-4da8-b4ec-d8a9688f1ae3", - "metadata": {}, - "source": [ - "# Outline Only - **Lesson 25:** Addressing Overfitting and Underfitting in Regression Models \n", - "Strategies to combat overfitting and underfitting in regression. - Math Focus: Bias-variance tradeoff and regularization methods.\n", - "- **Theoretical Concepts:**\n", - " - Identifying symptoms of overfitting and underfitting in regression models.\n", - " - Strategies to combat overfitting and underfitting.\n", - "- **Mathematical Foundation:**\n", - " - Bias-variance tradeoff.\n", - " - Regularization methods and their mathematical basis.\n", - "- **Python Implementation:**\n", - " - Demonstrating overfitting and underfitting using matplotlib.\n", - " - Implementing regularization techniques in Python.\n", - " - Using validation curves and learning curves for model diagnostics.\n", - "- **Example Dataset:**\n", - " - A dataset with a clear overfitting/underfitting tendency (e.g., high-dimensional data)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fd7b23be-578e-456b-a1ad-0cd8f56cceef", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/genindex.html b/genindex.html index a26bae6..db4e119 100644 --- a/genindex.html +++ b/genindex.html @@ -256,6 +256,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/index.html b/index.html index b8e7e1e..bedc41d 100644 --- a/index.html +++ b/index.html @@ -258,6 +258,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/objects.inv b/objects.inv index f79226f..71c03a9 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/search.html b/search.html index 9e1e5c4..1b6aedb 100644 --- a/search.html +++ b/search.html @@ -258,6 +258,7 @@
  • Day 21 - Introduction to Regression Analysis in Python
  • Day 22: Implementing Multiple Linear Regression in Python
  • +
  • Day 23 - Advanced Regression Techniques - Polynomial, Lasso, and Ridge Regression
  • diff --git a/searchindex.js b/searchindex.js index a8bba31..e976b77 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["Week_00/00_Overview", "Week_00/00a_DailyChallenge", "Week_00/00b_DailyResources", "Week_00/01_Errata", "Week_01/001_Overview", "Week_01/Lesson_01", "Week_01/Lesson_02", "Week_01/Lesson_03", "Week_01/Lesson_04", "Week_01/Lesson_05", "Week_02/002_Overview", "Week_02/Lesson_06", "Week_02/Lesson_07", "Week_02/Lesson_08", "Week_02/Lesson_09", "Week_02/Lesson_10", "Week_03/003_Overview", "Week_03/Lesson_11", "Week_03/Lesson_12", "Week_03/Lesson_12solution", "Week_03/Lesson_13", "Week_03/Lesson_14", "Week_03/Lesson_15", "Week_04/004_Overview", "Week_04/Lesson_16", "Week_04/Lesson_17", "Week_04/Lesson_18", "Week_04/Lesson_19", "Week_04/Lesson_20", "Week_05/005_Overview", "Week_05/Lesson_21", "Week_05/Lesson_22", "index"], "filenames": ["Week_00/00_Overview.md", "Week_00/00a_DailyChallenge.md", "Week_00/00b_DailyResources.md", "Week_00/01_Errata.md", "Week_01/001_Overview.md", "Week_01/Lesson_01.ipynb", "Week_01/Lesson_02.ipynb", "Week_01/Lesson_03.ipynb", "Week_01/Lesson_04.ipynb", "Week_01/Lesson_05.ipynb", "Week_02/002_Overview.md", "Week_02/Lesson_06.ipynb", "Week_02/Lesson_07.ipynb", "Week_02/Lesson_08.ipynb", "Week_02/Lesson_09.ipynb", "Week_02/Lesson_10.ipynb", "Week_03/003_Overview.md", "Week_03/Lesson_11.ipynb", "Week_03/Lesson_12.ipynb", "Week_03/Lesson_12solution.ipynb", "Week_03/Lesson_13.ipynb", "Week_03/Lesson_14.ipynb", "Week_03/Lesson_15.ipynb", "Week_04/004_Overview.md", "Week_04/Lesson_16.ipynb", "Week_04/Lesson_17.ipynb", "Week_04/Lesson_18.ipynb", "Week_04/Lesson_19.ipynb", "Week_04/Lesson_20.ipynb", "Week_05/005_Overview.md", "Week_05/Lesson_21.ipynb", "Week_05/Lesson_22.ipynb", "index.rst"], "titles": ["100 Days of Machine Learning Challenge", "Daily Challenge Curriculum", "Daily Curriculum Resources", "Errata", "Course Structure", "Day 1: Python Basics - Syntax, Variables", "Day 2: Python Data Types", "Day 3: Control Structures - Loops", "Day 4: Control Structures - Conditionals", "Day 5: Functions and Modules", "Course Structure", "Day 6: Linear Algebra - Vector Operations in Python", "Day 7: Linear Algebra - Matrices and Matrix Operations", "Day 8: Calculus - Derivatives, Concept and Applications", "Day 9: Calculus - Integrals, Fundamental Theorems, and Applications in Machine Learning", "Day 10: Probability and Statistics - Basic Concepts, Relevant Distributions - Expanded", "Course Structure", "Day 11: Introduction to Data Preprocessing in Python", "Day 12: In-Depth Exploration of Data Splitting Techniques in Python with Cross-Validation", "Day 12: In-Depth Exploration of Data Splitting Techniques - Solution", "Day 13: Advanced Techniques for Handling Missing Data in Python", "Day 14: Data Normalization and Scaling using Python", "Day 15: Encoding Categorical Data in Python - Expanded with Mathematical Implications", "Course Structure", "Day 16: Comprehensive EDA and Data Visualization in Python", "Day 17: In-Depth EDA and Central Tendency in Python", "Day 18: In-Depth Analysis of Histograms and Box Plots in Python", "Day 19: Correlation Analysis using Python", "Day 20: Advanced Feature Selection and Importance in Python - With Iris Dataset", "Course Structure", "Day 21 - Introduction to Regression Analysis in Python", "Day 22: Implementing Multiple Linear Regression in Python", "100 Days of Machine Learning Challenge"], "terms": {"welcom": [0, 6, 32], "comprehens": [0, 1, 2, 12, 18, 19, 27, 28, 30, 31, 32], "journei": [0, 5, 6, 13, 28, 32], "world": [0, 1, 2, 6, 9, 14, 20, 30, 32], "tailor": [0, 2, 32], "divers": [0, 2, 6, 9, 12, 19, 32], "audienc": [0, 32], "includ": [0, 1, 2, 5, 9, 11, 12, 13, 14, 15, 18, 20, 21, 22, 24, 26, 28, 29, 30, 31, 32], "aspir": [0, 32], "scientist": [0, 30], "profession": [0, 32], "relat": [0, 1, 2, 9, 12, 19, 20, 27, 32], "field": [0, 2, 12, 13, 15, 30, 31, 32], "enthusiast": [0, 32], "thi": [0, 2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "program": [0, 1, 2, 4, 5, 6, 8, 10, 11, 13, 14, 15, 18, 32], "design": [0, 9, 11, 13, 17, 28, 32], "individu": [0, 2, 5, 26, 27, 32], "high": [0, 1, 2, 9, 17, 19, 26, 27, 28, 31, 32], "colleg": [0, 2, 32], "level": [0, 9, 15, 17, 19, 22, 24, 26, 27, 32], "algebra": [0, 1, 4, 10, 13, 14, 15, 21, 24, 25, 32], "knowledg": [0, 1, 2, 11, 13, 14, 18, 20, 22, 24, 27, 28, 32], "It": [0, 2, 5, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 21, 25, 27, 28, 30, 31, 32], "offer": [0, 2, 12, 15, 32], "well": [0, 2, 11, 18, 19, 26, 27, 28, 30, 32], "round": [0, 2, 9, 19, 20, 32], "educ": [0, 1, 22, 32], "experi": [0, 1, 5, 15, 28, 32], "through": [0, 1, 2, 4, 5, 6, 7, 8, 13, 20, 21, 22, 25, 26, 30, 32], "video": [0, 2, 12, 32], "lectur": [0, 12, 32], "question": [0, 7, 9, 17, 32], "hand": [0, 1, 2, 9, 28, 30, 32], "tutori": [0, 2, 5, 18, 26, 32], "focu": [0, 1, 2, 4, 5, 10, 16, 23, 24, 26, 29, 30, 32], "topic": [0, 4, 10, 16, 23, 29, 32], "syntax": [0, 1, 4, 6, 8, 10, 11, 32], "linear": [0, 1, 4, 9, 10, 19, 20, 21, 24, 25, 27, 28, 29, 32], "calculu": [0, 1, 4, 10, 29, 32], "statist": [0, 1, 4, 10, 14, 16, 18, 23, 25, 27, 28, 30, 31, 32], "method": [0, 7, 9, 13, 15, 16, 17, 18, 21, 23, 24, 26, 27, 29, 31, 32], "visual": [0, 1, 13, 14, 15, 16, 17, 23, 26, 28, 32], "descript": [0, 1, 12, 16, 19, 23, 25, 32], "algorithm": [0, 1, 7, 11, 12, 13, 14, 18, 21, 28, 29, 30, 31, 32], "decis": [0, 1, 6, 8, 13, 15, 17, 20, 26, 29, 32], "tree": [0, 1, 13, 28, 29, 31, 32], "svm": [0, 1, 13, 29, 32], "techniqu": [0, 1, 14, 15, 16, 23, 29, 30, 31, 32], "reduc": [0, 1, 2, 18, 22, 28, 30, 32], "complex": [0, 1, 2, 5, 7, 8, 9, 11, 18, 20, 24, 28, 31, 32], "cluster": [0, 1, 11, 19, 25, 32], "gaussian": [0, 1, 15, 21, 32], "mixtur": [0, 1, 32], "model": [0, 1, 5, 9, 11, 13, 14, 15, 21, 22, 27, 28, 29, 32], "pca": [0, 1, 32], "t": [0, 1, 5, 6, 9, 12, 13, 15, 19, 20, 22, 24, 26, 27, 28, 30, 31, 32], "sne": [0, 1, 32], "core": [0, 1, 2, 15, 17, 19, 28, 32], "concept": [0, 5, 6, 8, 11, 12, 16, 18, 21, 22, 24, 25, 29, 32], "architectur": [0, 1, 32], "neural": [0, 11, 13, 14, 21, 31, 32], "network": [0, 11, 13, 14, 21, 31, 32], "cnn": [0, 32], "rnn": [0, 32], "imag": [0, 1, 11, 12, 32], "sequenc": [0, 1, 4, 5, 7, 32], "process": [0, 7, 9, 11, 12, 17, 18, 19, 20, 22, 28, 30, 32], "emerg": [0, 1, 32], "reinforc": [0, 7, 32], "transfer": [0, 1, 32], "gan": [0, 1, 32], "attent": [0, 1, 32], "mechan": [0, 1, 11, 12, 20, 32], "operation": [0, 1, 2, 32], "understand": [0, 1, 4, 5, 6, 8, 10, 11, 14, 16, 18, 19, 23, 24, 25, 29, 30, 32], "transform": [0, 11, 12, 18, 19, 21, 22, 26, 28, 31, 32], "mlop": [0, 32], "etl": [0, 32], "applic": [0, 6, 10, 12, 15, 17, 18, 20, 24, 26, 28, 29, 32], "variou": [0, 1, 2, 11, 12, 13, 14, 15, 17, 19, 20, 22, 23, 28, 30, 32], "industri": [0, 32], "healthcar": [0, 1, 31, 32], "financ": [0, 1, 17, 31, 32], "retail": [0, 1, 32], "manufactur": [0, 1, 32], "build": [0, 1, 5, 7, 9, 11, 19, 20, 28, 32], "evalu": [0, 1, 5, 6, 8, 9, 13, 14, 19, 21, 22, 25, 27, 28, 29, 32], "connect": [0, 1, 2, 14], "learner": 0, "expert": [0, 20], "share": [0, 9], "your": [0, 2, 6, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 30, 31], "insight": [0, 1, 2, 17, 19, 20, 22, 24, 25, 26, 27, 31], "particip": 0, "discuss": [0, 2, 24, 26, 27, 30], "collabor": 0, "start": [0, 2, 5, 7, 9, 12, 24, 30], "date": [0, 5, 9, 17], "januari": 0, "1st": [0, 22], "2024": [0, 9], "twitter": [0, 32], "100daysml": [0, 32], "reddit": [0, 32], "r": [0, 1, 2, 9, 11, 15, 27, 28, 29, 30, 31, 32], "discord": [0, 32], "us": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 19, 22, 23, 24, 25, 26, 31, 32], "websit": [0, 2, 32], "http": [0, 2, 5, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "www": [0, 2, 5, 15, 17, 18, 20, 21, 22, 25, 26, 27, 28, 31, 32], "100daysofml": [0, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 32], "com": [0, 2, 5, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32], "we": [0, 5, 6, 9, 11, 12, 13, 15, 20, 21, 25, 26, 27, 28, 30, 31], "ar": [0, 2, 5, 6, 7, 8, 9, 11, 12, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "excit": 0, "embark": [0, 20, 21, 27, 28], "explor": [0, 1, 2, 4, 6, 10, 13, 14, 15, 16, 22, 23, 25, 26, 27, 29, 30, 31], "discoveri": 0, "you": [0, 2, 5, 6, 7, 9, 11, 12, 13, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "let": [0, 5, 9, 11, 12, 13, 14, 15, 20, 26, 28, 30, 31], "s": [0, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 30, 31], "grow": 0, "togeth": [0, 12], "skill": [1, 6, 8, 13, 15, 20, 21, 22, 24, 25, 26, 28, 30], "type": [1, 4, 5, 9, 12, 15, 16, 19, 23, 24, 25, 26, 28, 30], "control": [1, 4, 6, 12], "structur": [1, 5, 11, 12, 20, 22, 24, 26], "dai": [1, 4, 10, 16, 23, 29], "variabl": [1, 4, 6, 7, 9, 12, 17, 18, 19, 21, 22, 24, 26, 27, 28, 30, 31], "assign": [1, 2, 4, 5, 8, 9, 12, 21, 28], "math": [1, 2, 4, 7, 9, 10, 15, 16, 18, 23, 29], "arithmet": [1, 2, 4, 6, 17], "differ": [1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20, 22, 24, 25, 26, 27, 28, 31], "logic": [1, 2, 4, 5, 8, 22], "calcul": [1, 2, 4, 7, 9, 10, 11, 14, 17, 18, 24, 25, 27, 28, 30], "loop": [1, 4, 5, 6, 8, 9, 25, 30], "construct": [1, 4, 26, 28, 30], "while": [1, 2, 4, 5, 9, 11, 13, 17, 19, 20, 22, 24, 27, 28, 30], "condit": [1, 4, 5, 6, 7, 9, 11, 13, 30], "statement": [1, 4, 5, 6, 12], "elif": [1, 2, 4, 7, 8, 9], "els": [1, 2, 4, 8, 9, 15, 28], "flow": [1, 4], "implement": [1, 4, 10, 16, 18, 19, 23, 24, 25, 29], "function": [1, 4, 5, 6, 7, 14, 17, 20, 21, 27, 28, 29, 30], "defin": [1, 2, 4, 5, 7, 8, 9, 12, 14, 20, 22, 24, 28], "write": [1, 4, 5, 6, 7, 8, 12, 24, 25, 27], "formula": [1, 4, 11, 12, 17, 18, 21, 22, 25, 27, 30], "vector": [1, 10, 12, 13, 31], "work": [1, 2, 5, 7, 10, 12, 13, 20, 21], "perform": [1, 6, 9, 10, 11, 12, 14, 15, 17, 18, 21, 22, 24, 25, 26, 27, 28, 30, 31], "matric": [1, 10, 11, 22, 24], "matrix": [1, 9, 10, 18, 24], "deriv": [1, 10, 14, 31], "integr": [1, 10], "fundament": [1, 6, 7, 8, 10, 11, 12, 13, 15, 26, 28, 29, 30], "theorem": [1, 10, 18], "simpl": [1, 2, 7, 10, 11, 18, 21, 24, 29, 31], "probabl": [1, 5, 10, 14, 18, 25, 28], "relev": [1, 9, 10, 11, 17, 19], "distribut": [1, 10, 11, 12, 14, 17, 18, 19, 20, 21, 22, 23, 25, 27, 28, 31], "prepar": [1, 2, 17, 20, 21, 22, 28], "import": [1, 5, 7, 12, 14, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 31], "scale": [1, 11, 16, 18, 19, 20, 28, 31], "split": [1, 12, 13, 16, 28, 31], "train": [1, 11, 13, 16, 17, 19, 22, 28, 31], "test": [1, 5, 6, 7, 8, 15, 16, 19, 22, 27, 31], "set": [1, 7, 15, 16, 17, 18, 19, 22, 25, 27, 28, 30, 31], "random": [1, 7, 9, 12, 15, 16, 18, 30], "sampl": [1, 2, 9, 15, 16, 17, 18, 19, 26, 27, 28, 30], "stratifi": [1, 2, 16, 30], "principl": [1, 2, 14, 16, 20, 21, 24], "handl": [1, 8, 9, 11, 12, 16, 17, 18, 19, 21, 28, 30, 31], "miss": [1, 16, 17, 18, 19, 21, 24, 28, 31], "detect": [1, 16, 17, 18, 21, 28, 31], "imput": [1, 2, 16, 17], "rational": [1, 2, 16, 20, 21, 22], "normal": [1, 11, 15, 16, 17, 18, 19, 20, 24, 27, 28, 31], "about": [1, 2, 7, 9, 13, 15, 16, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 31], "featur": [1, 5, 6, 9, 11, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 30, 31], "z": [1, 2, 9, 11, 12, 16, 17, 30], "score": [1, 2, 9, 16, 17, 18, 26, 28, 31], "min": [1, 2, 16, 17, 19, 22, 28], "max": [1, 2, 16, 17, 19, 22], "encod": [1, 16, 18, 19, 21, 31], "categor": [1, 8, 16, 17, 18, 19, 20, 21, 25, 28, 30, 31], "binari": [1, 2, 9, 16, 18], "one": [1, 2, 6, 7, 8, 9, 11, 16, 17, 18, 19, 22, 26, 27, 28, 30, 31], "hot": [1, 2, 8, 16, 31], "label": [1, 2, 13, 14, 16, 18, 20, 21, 24, 26, 28, 30, 31], "implic": [1, 2, 16, 21, 24, 25, 26], "graphic": [1, 17, 23, 30], "represent": [1, 2, 12, 14, 18, 19, 21, 22, 23, 24, 26], "measur": [1, 2, 9, 11, 13, 15, 17, 18, 19, 23, 24, 27, 28, 30, 31], "central": [1, 2, 15, 18, 20, 21, 23, 26], "tendenc": [1, 2, 15, 20, 21, 23, 24, 26], "dispers": [1, 2, 15, 17, 19, 23, 26], "creat": [1, 2, 5, 6, 7, 8, 9, 17, 19, 20, 22, 23, 24, 25, 30], "plot": [1, 2, 5, 13, 14, 15, 17, 18, 19, 21, 22, 23, 27, 28, 30, 31], "histogram": [1, 2, 21, 22, 23, 31], "box": [1, 2, 17, 21, 23, 25], "correl": [1, 21, 22, 23, 24, 25, 28, 31], "its": [1, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 23, 24, 28, 30, 31], "coeffici": [1, 2, 9, 23, 28, 29, 30, 31], "interpret": [1, 2, 5, 8, 13, 15, 21, 22, 23, 24, 25, 27, 29, 30, 31], "select": [1, 9, 13, 18, 20, 21, 23, 24, 27, 30], "inform": [1, 2, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "gain": [1, 2, 19, 23, 24, 25, 26, 27], "gini": [1, 2, 23], "impur": [1, 2, 23], "metric": [1, 18, 19, 20, 22, 23, 28, 29], "kei": [1, 2, 5, 7, 8, 12, 17, 18, 19, 20, 21, 25, 26, 28, 29, 30], "equat": [1, 2, 9, 11, 12, 29], "fit": [1, 2, 18, 19, 20, 21, 22, 28, 29, 31], "22": [1, 7, 8, 9, 12, 17, 20, 21, 22, 29], "multipl": [1, 5, 7, 8, 9, 13, 20, 28, 29], "multivari": [1, 2, 29], "23": [1, 8, 9, 17, 29], "polynomi": [1, 29], "lasso": [1, 29], "ridg": [1, 20, 29], "regular": [1, 2, 11, 14, 29, 31], "24": [1, 7, 8, 9, 12, 17, 29], "mean": [1, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31], "squar": [1, 2, 9, 12, 19, 24, 28, 29, 31], "error": [1, 2, 5, 6, 7, 9, 17, 18, 19, 24, 28, 29, 30, 31], "mse": [1, 2, 9, 29, 31], "root": [1, 2, 29, 31], "rmse": [1, 2, 29, 31], "25": [1, 5, 6, 7, 8, 9, 12, 13, 15, 17, 19, 21, 22, 29, 30, 31], "address": [1, 9, 29, 31], "overfit": [1, 14, 20, 22, 28, 29], "underfit": [1, 29], "strategi": [1, 2, 28, 29, 31], "combat": [1, 2, 29], "bia": [1, 18, 20, 29], "varianc": [1, 2, 15, 18, 20, 21, 22, 25, 26, 28, 29, 30, 31], "tradeoff": [1, 2, 29], "26": [1, 8, 9, 14, 17, 19], "logist": [1, 20, 21, 30], "27": [1, 8, 17, 20, 21, 22], "k": [1, 11, 12, 13, 18, 20, 21, 28], "nearest": [1, 20, 21], "neighbor": [1, 20, 21], "nn": 1, "distanc": [1, 2, 11, 13, 20, 30], "euclidean": [1, 2, 20], "manhattan": [1, 2], "28": [1, 8, 17, 19], "support": [1, 7, 9, 19, 24, 31], "nonlinear": 1, "both": [1, 2, 6, 7, 8, 9, 11, 13, 17, 18, 19, 24, 27, 28, 30, 31], "nonlinearli": 1, "separ": [1, 2, 5, 9, 12, 19, 28, 31], "hyperplan": [1, 2], "margin": [1, 2, 13, 28], "maxim": [1, 24], "kernel": [1, 2, 7, 9, 24], "trick": 1, "29": [1, 7, 8, 17, 19], "rule": [1, 6, 11, 26], "base": [1, 5, 7, 8, 9, 11, 12, 15, 18, 24, 25, 28, 30, 31], "entropi": [1, 2], "30": [1, 6, 8, 9, 12, 15, 17, 21], "naiv": [1, 21], "bay": [1, 21], "classifi": [1, 19, 20, 22, 28], "context": [1, 2, 17, 19, 20, 25, 27, 28, 31], "31": [1, 8, 9, 12, 17, 21, 25], "overview": [1, 24], "combin": [1, 2, 5, 6, 19, 20, 22, 24, 26, 28, 31], "weight": [1, 2, 13, 19, 22, 30], "averag": [1, 2, 9, 13, 15, 17, 19, 20, 30, 31], "32": [1, 8, 12, 17, 19, 21], "bag": 1, "forest": 1, "bootstrap": [1, 2], "role": [1, 2, 7, 11, 12, 13, 14, 17, 20], "33": [1, 9, 12, 17], "boost": 1, "adaboost": 1, "updat": [1, 2, 9, 13, 18, 19], "34": [1, 8, 9, 17, 19, 20, 21, 22], "gradient": [1, 11, 13, 14], "gbm": 1, "xgboost": 1, "descent": [1, 2, 11, 13], "35": [1, 9, 17, 21], "Their": [1, 9, 11, 13], "stack": [1, 2], "blend": [1, 2, 24], "36": [1, 12, 17, 21], "37": [1, 8, 9, 17], "dataset": [1, 2, 7, 17, 24, 25, 31], "centroid": [1, 2], "converg": [1, 2, 11, 21, 31], "criteria": [1, 2, 6, 28], "38": [1, 8, 12, 17, 19], "hierarch": 1, "dendrogram": [1, 2], "linkag": [1, 2], "39": [1, 17, 19, 21], "densiti": [1, 15, 19, 21, 24, 25, 26], "dbscan": 1, "40": [1, 8, 17, 19, 24], "gmm": 1, "expect": [1, 14, 30], "41": [1, 8, 17], "princip": [1, 2], "compon": [1, 2, 11, 30], "covari": [1, 2], "eigenvalu": [1, 2, 11, 12], "eigenvector": [1, 2, 11], "42": [1, 8, 9, 17, 18, 19, 21, 28, 30, 31], "step": [1, 2, 5, 7, 9, 14, 27, 31], "involv": [1, 2, 13, 19, 20, 28, 30], "comput": [1, 2, 5, 9, 12, 13, 14, 17, 19, 20, 28, 30], "43": [1, 8, 12, 17], "singular": 1, "valu": [1, 5, 6, 7, 8, 11, 13, 14, 15, 17, 18, 20, 21, 22, 24, 26, 27, 28, 30, 31], "decomposit": 1, "svd": 1, "Its": 1, "44": [1, 8, 9, 17, 19], "stochast": [1, 2, 11], "embed": [1, 2], "45": [1, 12, 17, 19, 24], "other": [1, 5, 6, 7, 9, 11, 12, 13, 15, 17, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31], "addit": [1, 2, 5, 6, 7, 9, 13, 19], "like": [1, 2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24, 26, 27, 28, 30, 31], "lda": [1, 2], "autoencod": 1, "behind": [1, 2, 9, 18, 20], "case": [1, 8, 9, 12, 13, 17, 19, 20, 21, 22, 25, 30], "46": [1, 8, 9, 17], "perceptron": 1, "activ": [1, 8, 14, 18, 20], "47": [1, 8, 9, 17, 20, 21, 22, 28], "feedforward": 1, "layer": [1, 25], "neuron": [1, 2], "48": [1, 12, 17, 31], "backpropag": [1, 13, 14], "dive": [1, 2, 15], "The": [1, 2, 5, 6, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30], "chain": [1, 2, 6, 20, 21], "49": [1, 8, 17], "loss": [1, 9, 14], "optim": [1, 6, 11, 13, 14, 30], "focus": [1, 2, 5, 12, 18, 19, 20, 22, 26], "50": [1, 6, 8, 9, 12, 17, 19, 21, 22, 26], "tune": [1, 19, 28], "improv": [1, 2, 8, 9, 17, 19, 21, 24, 28], "hyperparamet": [1, 2, 28], "avoid": [1, 2, 6, 7, 9, 11, 18, 19, 20, 21, 22, 24, 27], "51": [1, 17, 19], "map": [1, 2], "gener": [1, 7, 9, 13, 14, 15, 18, 19, 28, 30, 31], "52": [1, 8, 12, 17, 19], "pool": 1, "spatial": [1, 2], "effect": [1, 2, 7, 9, 11, 12, 13, 18, 20, 24, 25, 26, 28, 30, 31], "53": [1, 8, 12, 17], "task": [1, 2, 5, 8, 11, 12, 18, 20, 21, 25, 27, 30], "filter": [1, 2], "54": [1, 12, 17, 19], "enhanc": [1, 2, 8, 11, 13, 17, 18, 19, 21, 26, 28], "dropout": [1, 2], "batch": [1, 2], "basi": [1, 2, 17, 30], "55": [1, 17, 21], "fine": [1, 2, 28], "extract": [1, 15, 26], "56": [1, 8, 17, 19], "uniqu": [1, 2, 5, 22, 28], "57": [1, 6, 12, 17, 19], "long": [1, 5, 7, 11, 17], "short": [1, 6, 8], "term": [1, 6, 13, 14, 22, 27, 31], "memori": [1, 17, 19], "lstm": 1, "cell": [1, 2, 5, 7, 9, 19, 22, 24], "depend": [1, 2, 5, 7, 8, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31], "58": [1, 8, 12, 17, 19, 21], "time": [1, 7, 9, 12, 13, 15, 17, 18, 20, 24, 30], "59": [1, 8, 12, 17], "seri": [1, 5, 7, 9, 18, 20, 21, 24, 28, 30, 31], "forecast": [1, 2, 30], "60": [1, 6, 8, 12, 17, 19], "util": [1, 9, 11, 13, 20, 24, 30, 31], "natur": [1, 5, 7, 11, 15, 20, 22, 27, 30, 31], "languag": [1, 5, 7, 9, 11], "nlp": [1, 11], "word": [1, 2, 6, 9, 11], "space": [1, 2, 5, 11, 15, 22, 30], "61": [1, 8, 17], "framework": [1, 2, 15], "reward": [1, 2], "make": [1, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17, 20, 22, 24, 25, 26, 30, 31], "62": [1, 8, 17, 20, 21, 22], "markov": 1, "mdp": [1, 2], "rl": 1, "transit": [1, 2], "state": [1, 2, 6, 12, 13, 22, 24], "63": [1, 17], "q": [1, 20, 21, 22], "bellman": [1, 2], "estim": [1, 2, 17, 19, 20, 24, 28, 30, 31], "64": [1, 8, 17], "dqn": 1, "environ": [1, 2, 18, 19, 20], "65": [1, 6, 12, 17, 19], "polici": [1, 18], "ascent": [1, 2], "66": [1, 17], "depth": [1, 27, 28], "67": [1, 8, 17, 19], "adversari": 1, "minimax": [1, 2], "game": [1, 2, 11], "theori": [1, 2, 12, 18, 28], "68": [1, 8, 12, 19], "self": [1, 7, 9], "69": [1, 17], "more": [1, 2, 5, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31], "reconstruct": [1, 2], "latent": [1, 2], "70": [1, 6, 19], "research": 1, "ml": [1, 13, 14, 18, 32], "aih": 1, "latest": [1, 2, 5], "artifici": [1, 2, 11, 20, 22], "intellig": [1, 2, 11], "technolog": 1, "71": [1, 8, 19], "lifecycl": 1, "72": [1, 12, 19], "version": [1, 5], "track": [1, 9, 20], "73": [1, 8], "ci": 1, "cd": 1, "continu": [1, 2, 5, 9, 12, 13, 14, 17, 20, 22, 27, 28, 30, 31], "deliveri": 1, "autom": [1, 2, 7, 11], "valid": [1, 2, 9, 13, 21, 28, 31], "74": [1, 8], "monitor": 1, "mainten": 1, "maintain": [1, 5, 7, 20], "product": [1, 2], "anomali": [1, 2, 20], "drift": [1, 2], "behavior": [1, 2, 6, 9, 13, 20, 21], "75": [1, 17, 19, 21, 22, 31], "tool": [1, 5, 11, 13, 17, 24, 25, 26, 27, 30, 31], "platform": [1, 5], "scalabl": [1, 2], "effici": [1, 2, 7, 8, 9, 11, 13, 17, 18, 22, 28], "76": [1, 8, 12, 19, 21, 22], "load": [1, 9, 11, 17, 19, 24, 25, 26, 27, 28, 31], "queri": [1, 2], "77": [1, 8, 12], "approach": [1, 2, 6, 19, 28, 31], "78": [1, 12, 19], "databas": 1, "manag": [1, 9, 22], "phase": 1, "balanc": [1, 2, 18, 19, 28], "79": [1, 8], "an": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "pipelin": [1, 28], "workflow": [1, 2], "80": 1, "81": 1, "82": [1, 8, 19], "posit": [1, 5, 7, 9, 11, 13, 17, 18, 19, 26, 27, 30], "83": [1, 8, 12, 17], "84": 1, "e": [1, 2, 5, 9, 11, 12, 15, 17, 20, 21, 22, 24, 28], "g": [1, 2, 9, 11, 13, 17, 20, 21, 22, 24, 28, 31], "bert": [1, 2], "gpt": [1, 2], "geometri": [1, 2], "contextu": [1, 2, 19, 20], "85": 1, "domain": [1, 13, 20, 28], "beyond": [1, 2, 26, 28, 30], "vision": [1, 2], "adapt": [1, 2], "issu": [1, 2, 15, 17, 19, 20, 21, 22, 24, 25, 26, 30], "86": [1, 8, 20, 21], "fair": 1, "quantit": [1, 2, 17, 27], "87": [1, 12], "privaci": 1, "secur": 1, "system": [1, 11, 12, 13, 15, 17, 19, 20, 21, 22, 24, 25, 30], "cryptographi": [1, 2, 9], "protect": [1, 2], "88": [1, 8, 19], "explain": [1, 5], "transpar": [1, 20], "need": [1, 2, 6, 7, 9, 12, 17, 19, 20, 21, 22, 28], "explan": [1, 2, 18], "89": [1, 8, 12], "regul": 1, "complianc": [1, 18], "affect": [1, 2, 6, 13, 20, 21, 25, 26, 28], "gdpr": [1, 2], "risk": [1, 2, 18], "assess": [1, 2, 8, 18, 19, 20, 22, 26, 27, 31], "90": 1, "develop": [1, 7, 11, 20, 24], "91": [1, 8, 22], "diagnost": [1, 2], "treatment": [1, 2], "plan": [1, 18], "predict": [1, 2, 9, 11, 13, 15, 18, 19, 20, 24, 27, 28, 31], "health": [1, 2], "92": [1, 8], "fraud": [1, 2], "financi": [1, 2], "93": [1, 19], "custom": [1, 2, 6, 9], "suppli": [1, 2], "demand": [1, 2], "94": [1, 8], "qualiti": [1, 2, 17, 18, 20, 24], "reliabl": [1, 2, 19, 28], "95": [1, 6, 12], "transport": 1, "etc": [1, 11, 30], "broad": [1, 2], "specif": [1, 2, 5, 6, 9, 11, 13, 18, 20, 21, 28], "A": [1, 2, 5, 7, 9, 11, 12, 15, 19, 20, 21, 24, 27, 31], "encompass": 1, "96": [1, 19], "protocol": [1, 2], "encrypt": [1, 2], "97": [1, 8, 9, 19], "identifi": [1, 9, 11, 17, 19, 20, 22, 26, 27, 30], "threat": 1, "vulner": 1, "potenti": [1, 2, 18, 19, 22, 24, 25, 26, 27, 28, 31], "98": [1, 8, 19], "prevent": [1, 14, 18, 20, 21, 22, 30], "pattern": [1, 2, 9, 11, 19, 20, 24, 25, 26, 30], "recognit": [1, 2, 11], "99": [1, 19], "best": [1, 2, 5, 19, 31], "100": [1, 5, 6, 8, 9, 13, 14, 19, 30], "studi": [1, 12, 31], "incid": 1, "real": [1, 2, 14, 20, 28, 30], "forens": [1, 2], "post": [1, 2, 20, 28], "101": [1, 8], "guidanc": [1, 2], "scope": [1, 2, 8, 9], "definit": [1, 2, 9, 12, 14, 19], "feasibl": [1, 2], "102": 1, "104": 1, "throughout": [1, 5, 9], "cours": [1, 2, 11, 12, 17], "problem": [1, 2, 7, 9, 11, 12, 14, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30], "solv": [1, 2, 6, 7, 9, 11, 12, 30], "105": 1, "final": [1, 6, 8, 9], "present": [1, 7, 9, 15, 22, 24, 25, 26, 28], "result": [1, 2, 5, 6, 8, 9, 11, 12, 19, 20, 21, 22, 24, 25, 26, 27, 31], "googl": [2, 5], "edu": 2, "interact": [2, 5, 9, 11, 12, 28, 30, 31], "cover": [2, 12], "realpython": [2, 26, 27], "demonstr": [2, 9, 19, 22, 28, 30], "code": [2, 5, 6, 7, 9, 17, 18, 21, 22, 24, 25, 27, 30], "execut": [2, 5, 7, 8, 9], "comment": [2, 5], "express": [2, 5, 6, 8, 11, 12, 13, 31], "exampl": [2, 5, 6, 9, 15, 21, 31], "numpi": [2, 5, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 27, 28, 30], "np": [2, 9, 11, 12, 13, 14, 15, 17, 19, 20, 21, 28, 30], "number": [2, 5, 6, 8, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30], "arrai": [2, 9, 11, 12, 15, 17, 30], "w3school": 2, "python_datatyp": 2, "asp": 2, "document": [2, 9, 11, 19, 20, 26, 27, 28], "tutorialspoint": 2, "python_data_structur": 2, "index": [2, 7, 9, 11, 21, 27, 28], "htm": 2, "string": [2, 5, 6, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "list": [2, 6, 7, 8, 9, 11, 15, 25, 26, 28], "dictionari": [2, 7, 25], "python_oper": 2, "detail": [2, 9, 15, 19, 22, 27], "comparison": [2, 17, 20], "usag": [2, 7, 17, 18, 19, 20, 27, 28, 31], "check": [2, 6, 7, 8, 9, 13, 17, 19, 20, 21, 24, 27, 28, 31], "practic": [2, 9, 11, 12, 15, 19, 23, 30, 32], "convers": 2, "int": [2, 5, 7, 9], "float_vari": 2, "compar": [2, 5, 6, 18, 20, 21, 22, 24, 26, 28, 30, 31], "dataquest": 2, "io": [2, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28], "python_while_loop": 2, "break": [2, 9, 20, 28], "gloss_python_for_nest": 2, "nest": 2, "iter": [2, 7, 8, 20, 28], "over": [2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 19, 28, 31], "sum": [2, 5, 11, 12, 14, 20, 21, 22, 26, 27, 28, 30, 31], "multi": [2, 17, 19], "counter": 2, "gloss_python_els": 2, "gloss_python_elif": 2, "programiz": 2, "pariti": 2, "modifi": [2, 5, 7, 9, 21], "within": [2, 5, 9, 12, 18, 19, 22, 26, 27, 28, 30], "doc": [2, 31], "org": [2, 5, 13, 15, 17, 19, 25, 27, 28, 31], "es": 2, "html": [2, 19, 25, 26, 27, 28, 31], "offici": 2, "creation": 2, "call": [2, 7, 9, 11, 12, 22, 24], "refer": [2, 5, 6, 8, 11, 12, 30, 31], "guid": [2, 18, 24, 25], "python_modul": 2, "packag": [2, 7, 9, 17, 28, 30], "access": [2, 5, 9, 12, 17, 24], "area": [2, 13, 14, 18, 26], "input": [2, 6, 7, 9, 12, 13, 21, 28, 30], "sqrt": [2, 11, 15, 17, 27], "panda": [2, 5, 9, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "m": [2, 6, 12, 30], "youtub": [2, 15], "watch": [2, 15], "v": [2, 11, 13, 15, 27], "fnk_zzamoss": 2, "khanacademi": [2, 15], "free": [2, 5, 7, 9, 12, 19], "onlin": [2, 30], "exercis": [2, 7, 12, 24, 28, 30], "bvanderlei": 2, "librari": [2, 5, 14, 17, 18, 19, 20, 24, 25, 26, 30], "subtract": [2, 5, 7, 13, 21, 30], "scalar": [2, 12], "dot": [2, 9, 25], "magnitud": [2, 12], "matplotlib": [2, 9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 31], "kyb8iza5au": 2, "mathsisfun": 2, "geeksforgeek": [2, 17, 25, 27, 28], "manipul": [2, 6, 7, 11], "transpos": 2, "invers": 2, "determin": [2, 6, 8, 11, 12, 13, 17, 28, 30], "differenti": [2, 14], "dc": 2, "diff": [2, 13], "intro": 2, "askpython": 2, "sympi": [2, 13, 14], "symbol": [2, 5, 12, 13, 14], "wuvtyaankzm": 2, "composit": 2, "tangent": 2, "line": [2, 5, 7, 8, 9, 12, 17, 19, 22, 24, 25, 26, 31], "ic": 2, "2i44y9hfq4q": 2, "integrand": 2, "simpson": 2, "find": [2, 9, 11, 12, 13, 14, 17, 18, 20, 24, 26, 27, 28, 30], "volum": [2, 11, 13], "done": [2, 7, 9, 18, 31], "lwq1zw": 2, "xhbe": 2, "scipi": [2, 15, 17, 19, 24, 25, 27], "stat": [2, 15, 17, 19, 24, 25], "from": [2, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "median": [2, 15, 17, 19, 21, 26, 31], "standard": [2, 6, 15, 18, 20, 22, 25, 26, 28, 31], "deviat": [2, 15, 21, 22, 25, 26, 28], "boxplot": [2, 21, 26], "hypothesi": [2, 15, 27], "scienc": [2, 5, 9, 12, 14, 18, 24, 26, 28, 30], "mode": [2, 15, 20, 21, 26, 31], "outlier": [2, 17, 19, 20, 21, 24, 25, 26, 27, 31], "determinist": 2, "analyz": [2, 11, 13, 15, 17, 19, 20, 22, 25, 26, 27, 28], "impact": [2, 7, 9, 18, 19, 21, 22, 24, 28], "scikit": [2, 5, 9, 18, 20, 21, 22, 24, 25, 31], "vs": [2, 9, 20, 21, 26, 31], "each": [2, 5, 7, 8, 9, 12, 15, 18, 19, 20, 22, 25, 26, 27, 28, 30, 31], "kaggl": [2, 17, 18, 19, 20, 21, 24], "engin": [2, 12, 13, 14, 17, 18], "One": [2, 13], "between": [2, 6, 7, 8, 9, 11, 12, 13, 14, 18, 19, 20, 21, 22, 24, 27, 28, 31], "cross": [2, 28], "In": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 20, 22, 24, 27, 28, 30, 31], "aspect": [2, 5, 8, 28, 31, 32], "rang": [2, 6, 8, 9, 11, 15, 21, 24, 25, 26, 28, 30], "skew": [2, 17, 19, 20, 25, 26, 27], "galleri": 2, "showcas": 2, "overal": [2, 18, 20, 28], "pearson": [2, 28], "spearman": 2, "heatmap": [2, 19], "wrangl": 2, "hous": 2, "seaborn": [2, 19, 21, 22, 24, 25, 26, 27, 31], "pairplot": [2, 24, 25, 31], "price": [2, 6, 9, 13], "than": [2, 5, 6, 7, 8, 9, 11, 12, 17, 25, 26, 28, 30, 31], "independ": [2, 12, 13, 15, 18, 22, 28, 30, 31], "how": [2, 5, 6, 7, 9, 11, 13, 14, 15, 18, 19, 21, 22, 24, 25, 26, 27, 28, 30, 31], "influenc": [2, 18, 19, 20, 22, 25, 27, 31], "With": [2, 5, 9], "relationship": [2, 11, 13, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31], "foundat": [2, 4, 6, 10, 11, 14, 15, 16, 17, 18, 25, 32], "accuraci": [2, 18, 21, 22, 25], "efficaci": 2, "limit": [2, 9, 13, 18], "appropri": [2, 18, 20, 21, 24, 25, 30, 31], "deal": [2, 5, 7, 18, 20, 28, 30, 31], "abil": [2, 19], "titan": [2, 20, 21], "outcom": [2, 9, 15, 30, 31], "confus": [2, 9, 18, 19], "datacamp": 2, "provid": [2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31], "theoret": [2, 24, 28], "path": [2, 18, 19, 22], "assumpt": [2, 20, 24, 27, 28, 31], "conceptu": 2, "masteri": [2, 15], "delv": [2, 6, 22, 25, 26, 27, 28], "underpin": [2, 25, 27], "github": [2, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30], "repositori": 2, "investig": [2, 17, 19, 24, 30], "analyt": [2, 22, 31], "vidhya": 2, "articl": [2, 5, 20, 21], "choos": [2, 9, 14, 18, 20, 21, 24, 25, 26, 27, 28], "nick": 2, "mccullum": 2, "minim": [2, 18, 30], "sse": [2, 30], "built": [2, 5, 28], "beginn": [2, 9], "iri": 2, "also": [2, 5, 6, 8, 9, 11, 14, 18, 19, 20, 24, 25, 26, 28], "group": [2, 6, 17, 18, 19, 26, 28], "point": [2, 5, 7, 9, 11, 13, 14, 15, 18, 19, 20, 24, 25, 26, 27, 30], "recalcul": 2, "format": [2, 9, 17, 30, 31], "abus": 2, "agglom": 2, "divis": [2, 5, 6, 13], "form": [2, 7, 8, 9, 11, 13, 30], "repres": [2, 5, 6, 9, 12, 13, 14, 17, 18, 19, 20, 22, 24, 25, 26, 28, 30, 31], "paramet": [2, 15, 18, 20, 24, 28, 30], "epsilon": [2, 30, 31], "ep": 2, "minpt": 2, "anoth": [2, 5, 9, 11, 27, 28], "found": [2, 5, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "renesh": 2, "bedr": 2, "blog": [2, 17, 18, 20, 21, 22, 24, 25, 28], "which": [2, 5, 6, 7, 8, 9, 11, 13, 17, 19, 20, 21, 22, 26, 27, 30, 31], "\u03b5": 2, "vari": [2, 7, 9, 13, 18, 19, 28], "For": [2, 5, 8, 9, 11, 12, 13, 14, 18, 19, 20, 21, 22, 24, 26, 30], "thorough": [2, 13, 15, 24, 27], "excel": [2, 14, 19], "plu": 2, "breast": 2, "cancer": 2, "cifar": 2, "scratch": 2, "necessari": [2, 7, 9, 12, 13, 14, 17, 18, 20, 24, 25, 26, 30, 31], "kindson": 2, "geniu": 2, "particularli": [2, 5, 6, 7, 11, 14, 18, 19, 20, 28, 30, 31], "underli": [2, 19, 21, 24, 28, 31], "benefici": [2, 5, 19, 20, 25, 31], "those": [2, 12, 19, 20, 21, 30, 31], "look": [2, 6, 19, 20, 22, 25, 26, 28, 30, 31], "can": [2, 5, 6, 7, 8, 9, 11, 12, 13, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 31], "decompos": 2, "constitu": 2, "u": [2, 11, 13], "sigma": [2, 15, 17, 18, 30], "\u03c3": [2, 15, 17, 21], "compress": [2, 9, 12], "nois": [2, 20, 26], "To": [2, 9, 11, 12, 13, 19, 20, 21, 30], "recommend": [2, 9, 19, 20], "where": [2, 5, 6, 8, 9, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 27, 28, 30, 31], "ll": [2, 5, 6, 9, 12, 13, 17, 22, 26, 27, 28], "lower": [2, 9, 18, 19, 26, 28, 30], "precursor": 2, "avail": [2, 9, 30], "toward": [2, 19, 30], "often": [2, 5, 6, 7, 8, 9, 11, 12, 13, 17, 20, 26, 28, 30], "have": [2, 5, 6, 9, 11, 12, 13, 19, 20, 21, 22, 28, 30, 31], "discrimin": [2, 21], "class": [2, 7, 17, 18, 22, 28, 31], "bias": [2, 18, 19], "bryn": 2, "mawr": 2, "artificial_neural_network": 2, "ipynb": 2, "relu": 2, "walk": 2, "tensorflow": 2, "kera": [2, 9], "first": [2, 5, 6, 11, 14, 17, 19, 21, 24, 26, 30], "adjust": [2, 11, 21, 28, 30, 31], "relianc": 2, "choic": [2, 5, 7, 9, 20, 27, 28], "crucial": [2, 5, 6, 7, 11, 12, 13, 14, 15, 18, 19, 20, 22, 26, 27, 28, 30, 31], "opendatasci": 2, "emphas": [2, 21], "consid": [2, 8, 9, 13, 14, 17, 19, 20, 21, 25, 26, 27, 30, 31], "size": [2, 9, 11, 12, 18, 19, 24, 28, 30], "varieti": [2, 18], "when": [2, 5, 6, 7, 8, 9, 11, 12, 17, 18, 19, 20, 21, 22, 26, 27, 30, 31], "instanc": [2, 5, 11, 14, 19, 20, 31], "might": [2, 5, 7, 19, 20, 22, 25, 28, 30, 31], "ideal": [2, 13, 18, 20, 21, 22, 27], "larger": [2, 20, 21, 30, 31], "same": [2, 5, 7, 9, 11, 12, 18, 20, 27, 31], "suggest": [2, 19, 25, 27], "most": [2, 7, 8, 9, 17, 19, 20, 22, 24, 27, 28, 30], "target": [2, 7, 19, 20, 21, 27, 28, 30, 31], "output": [2, 6, 9, 12, 13, 22, 24, 28, 30], "larg": [2, 7, 11, 18, 20, 22, 24, 28, 31], "spread": [2, 17, 19, 20, 21, 22, 24, 25, 26], "logarithm": [2, 28], "msle": 2, "mai": [2, 6, 9, 11, 12, 22, 27, 28, 30], "suitabl": [2, 12, 17, 22, 30, 31], "initi": [2, 5, 18, 24, 25, 31], "ad": [2, 9, 11, 12, 25, 28, 30], "rectifi": 2, "unit": [2, 11, 21, 28, 30, 31], "hidden": [2, 21], "quantiti": [2, 9, 11, 12, 14], "especi": [2, 5, 6, 7, 8, 9, 17, 19, 20, 28, 30], "characterist": [2, 18, 19, 20, 22], "learnopencv": 2, "rate": [2, 11, 18, 19, 22, 26], "critic": [2, 24, 26, 28], "signific": [2, 11, 13, 15, 17, 18, 19, 24, 28, 31], "pivot": [2, 11, 13, 14], "pytorch": [2, 9], "immens": 2, "help": [2, 7, 11, 13, 14, 15, 17, 19, 20, 21, 24, 28], "These": [2, 5, 6, 7, 11, 12, 13, 19, 20], "thei": [2, 5, 6, 7, 9, 11, 12, 13, 14, 15, 19, 21, 22, 25, 26, 27, 28, 31], "contribut": [2, 14, 21, 28], "dimens": [2, 12, 13], "produc": [2, 5, 24, 25], "chan": 2, "leverag": [2, 28], "pre": [2, 13, 14, 17], "new": [2, 5, 7, 11, 12, 17, 19, 28, 30, 31], "touch": 2, "exist": [2, 9, 12, 13, 17, 20, 22], "them": [2, 7, 9, 11, 12, 14, 17, 26, 28, 30, 31], "follow": [2, 5, 6, 8, 9, 11, 15, 21, 25, 26, 28, 31], "special": [2, 5, 6, 9, 12], "kind": [2, 12, 22, 31], "complet": [2, 9, 19, 20, 21, 30], "intuit": [2, 6], "ultim": 2, "freecodecamp": 2, "variat": [2, 19], "gate": 2, "challeng": [2, 5, 22, 31], "sequenti": [2, 9], "show": [2, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "extend": [2, 26, 30], "easi": [2, 6, 17, 24, 25], "Into": 2, "friendli": [2, 9], "less": [2, 6, 7, 8, 9, 19, 20, 21, 28, 30, 31], "intimid": 2, "newcom": 2, "agent": 2, "goal": [2, 7, 20, 24, 28], "openai": 2, "gym": [2, 6], "learndatasci": 2, "previous": [2, 5, 28, 30], "mention": 2, "lai": [2, 15], "groundwork": [2, 15, 30], "tradit": [2, 28], "deeper": [2, 6, 28], "mani": [2, 9, 12, 15, 20, 22, 24, 25, 28, 30, 31], "accompani": [2, 9], "instruct": [2, 5], "common": [2, 9, 19, 20, 25, 31], "repurpos": 2, "get": [2, 5, 6, 11, 19, 28, 30, 31], "thing": [2, 7, 9, 11], "two": [2, 5, 7, 9, 11, 12, 13, 17, 21, 22, 25, 26, 27, 31], "simultan": [2, 31], "competit": 2, "respons": [2, 20, 24], "snippet": [2, 28, 30], "translat": 2, "grasp": [2, 6, 13, 19, 27], "text": [2, 5, 11, 18, 28, 30], "denois": 2, "give": [2, 7, 9, 13, 14, 22, 25, 28, 30, 31], "clear": [2, 7, 22, 24, 25], "along": [2, 11, 13, 19, 30], "back": [2, 6, 9, 31], "arxiv": 2, "essenti": [2, 5, 6, 7, 11, 12, 13, 14, 17, 18, 19, 21, 22, 24, 27, 28, 30, 31], "keep": [2, 9, 20, 21, 24, 28], "up": [2, 9, 14], "paper": 2, "vast": [2, 30], "collect": [2, 6, 11, 15], "preprint": 2, "mit": [2, 12], "review": 2, "breakthrough": 2, "written": [2, 8, 9], "novel": 2, "paradigm": 2, "projectpro": 2, "across": [2, 11, 12, 13, 18, 19, 20, 21, 28], "deploy": 2, "container": 2, "kubernet": 2, "ensur": [2, 5, 7, 11, 13, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 31], "robust": [2, 13, 17, 19, 20, 24], "top": [2, 12, 22, 28], "neptun": [2, 28], "landscap": 2, "2023": [2, 21, 28], "cater": 2, "consider": [2, 19, 28, 32], "cloud": [2, 5, 30], "microsoft": 2, "commun": [2, 5, 18, 26, 28], "hub": 2, "host": 2, "codespac": 2, "csv": [2, 9, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "json": [2, 9], "xml": 2, "sourc": [2, 9], "convert": [2, 17, 22, 28, 31], "off": [2, 19], "file": [2, 7, 9, 30], "azur": 2, "cosmo": 2, "db": 2, "storag": 2, "retriev": [2, 5, 7, 9], "log": [2, 9, 26, 28], "streamlin": 2, "sql": 2, "power": [2, 5, 7, 11, 15, 22, 24, 27, 28, 30, 31], "bi": 2, "uva": 2, "dl": 2, "head": [2, 17, 19, 20, 21, 22, 30, 31], "harvard": 2, "llm": 2, "similar": [2, 6, 7, 11, 12, 20, 25, 30, 31], "decod": 2, "examin": [2, 19, 20, 21, 26, 30], "hug": 2, "face": 2, "enabl": [2, 7, 8, 9, 11, 14, 20, 26, 30, 31], "audio": 2, "upon": [2, 9], "broader": [2, 15, 28], "signal": 2, "modif": [2, 9, 18], "outsid": [2, 6, 9, 25, 26], "foster": 2, "opencoursewar": [2, 12], "full": 2, "classroom": 2, "pluralsight": 2, "mitig": 2, "kdnugget": [2, 28], "user": [2, 7, 9], "close": [2, 19, 20, 27, 30], "pertain": 2, "regulatori": 2, "adher": 2, "coursera": [2, 12], "care": [2, 18, 20], "benefit": [2, 11, 31], "stanford": 2, "patient": 2, "visit": 2, "lab": 2, "procedur": [2, 9, 30], "univers": 2, "innov": 2, "extrapol": 2, "though": [2, 9], "capabl": [2, 8, 9, 19], "person": [2, 6], "centric": 2, "modern": 2, "reshap": [2, 30], "cryptograph": 2, "recogn": [2, 13], "ibm": 2, "forb": 2, "driven": [2, 15, 20], "mckinsei": 2, "highlight": [2, 13, 26, 30], "infosecur": 2, "magazin": 2, "report": [2, 18, 20, 27], "probabilist": 2, "viabil": 2, "realist": 2, "edx": 2, "advic": 2, "idea": [2, 9, 13, 31], "engag": [2, 27], "inde": 2, "tip": [2, 5], "sciencedirect": 2, "summar": [2, 9, 15, 24, 25, 26, 30], "synthesi": 2, "wai": [2, 6, 7, 8, 9, 11, 12, 13, 20, 28], "clearli": [2, 24, 26], "data": [4, 5, 8, 9, 12, 14, 25, 26, 27, 29, 31, 32], "3": [4, 5, 6, 8, 9, 12, 14, 19, 30, 31, 32], "4": [4, 5, 7, 9, 12, 14, 17, 30, 31, 32], "5": [4, 5, 6, 7, 8, 12, 14, 15, 17, 25, 26, 28, 30, 32], "what": [5, 6, 7, 8, 9, 19, 22, 25, 28, 30, 31], "machin": [5, 6, 9, 12, 13, 17, 18, 20, 21, 28, 30, 31], "learn": [5, 6, 9, 12, 13, 15, 16, 17, 18, 20, 21, 22, 24, 25, 27, 28, 31], "our": [5, 6, 7, 9, 13, 25, 27, 30], "go": [5, 6, 9, 30], "wide": [5, 11, 19, 26, 28, 30], "due": [5, 11, 19, 22, 25, 28], "readabl": [5, 7, 8, 9], "simplic": [5, 11], "rich": 5, "ecosystem": 5, "invalu": [5, 20], "preprocess": [5, 19, 22, 28, 32], "analysi": [5, 6, 11, 12, 13, 14, 15, 17, 18, 20, 29, 31, 32], "colab": 5, "account": [5, 9, 20], "jupyt": [5, 9, 19, 20], "notebook": [5, 9, 19, 31], "allow": [5, 6, 7, 8, 9, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31], "browser": 5, "without": [5, 9, 11, 17, 21, 22, 25, 28, 30], "ani": [5, 6, 9, 11, 12, 13, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 31], "setup": 5, "requir": [5, 7, 8, 9, 11, 15, 17, 19, 20, 21, 22, 24, 25, 30, 31], "gpu": 5, "some": [5, 7, 9, 12, 13, 19, 20, 28, 30, 31], "computation": [5, 20, 28], "heavi": 5, "local": [5, 9], "option": [5, 6, 9], "don": [5, 9, 24, 25, 26, 27, 30, 31], "cpu": 5, "want": [5, 7, 13, 30], "acquaint": [5, 27, 30], "anywai": 5, "later": [5, 30], "consist": [5, 18, 19, 20, 21, 28], "contain": [5, 9, 17, 26, 28, 31], "either": [5, 6, 9, 12, 17], "markdown": 5, "rememb": [5, 7, 22, 24, 27, 28], "should": [5, 6, 7, 9, 18, 20, 21, 25, 28, 30, 31], "run": [5, 8, 9, 18, 28], "order": [5, 6, 7, 11, 12, 22, 28], "sinc": [5, 9, 12, 19, 30], "earlier": 5, "howev": [5, 9, 12, 18, 22, 28], "re": [5, 6, 9, 17, 20, 28, 30, 31], "debug": 5, "rerun": [5, 19], "alwai": [5, 6, 7, 9, 13, 19, 20, 21, 28, 30, 31], "appear": [5, 14, 17, 19, 25, 26], "If": [5, 6, 9, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31], "encount": [5, 6, 13], "unexpect": 5, "troubleshoot": 5, "all": [5, 6, 9, 12, 15, 17, 19, 21, 22, 25, 26, 28, 30, 31], "begin": [5, 11, 12, 13], "invalid": [5, 9], "incorrect": [5, 7], "occur": [5, 15, 17, 20, 31], "chang": [5, 7, 9, 11, 20, 21, 22, 27, 30, 31], "haven": 5, "been": [5, 6, 9], "propag": 5, "By": [5, 6, 11, 20, 21, 28], "runtim": 5, "menu": [5, 9], "reflect": [5, 19, 20, 22, 24], "save": [5, 9], "regularli": 5, "autosav": 5, "drive": [5, 13], "good": [5, 19, 30], "habit": 5, "manual": 5, "flexibl": [5, 7, 9], "easili": 5, "perfect": [5, 19, 22], "oper": [5, 7, 9, 10, 18, 20, 21], "print": [5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "after": [5, 6, 7, 9, 12, 18, 20, 21, 22, 28, 31], "next": [5, 7, 15, 17, 19, 20, 21, 22, 24, 25, 30], "block": [5, 7, 9], "whitespac": [5, 8, 9], "indent": [5, 8, 9], "brace": 5, "end": [5, 6, 7, 9, 11, 12, 17], "unind": 5, "amount": [5, 6, 19, 28], "must": [5, 6, 12, 27], "commonli": [5, 6, 8, 12, 13, 17, 20, 24, 27, 28], "x": [5, 6, 8, 9, 12, 13, 14, 17, 18, 19, 21, 24, 25, 27, 28, 30, 31], "0": [5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "here": [5, 6, 7, 9, 13, 19, 22, 27, 30], "true": [5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 24, 26, 27, 31], "meaning": [5, 9, 24, 26, 27, 30, 31], "apart": [5, 9], "tab": 5, "element": [5, 6, 7, 11, 17, 19, 28, 30], "excess": [5, 19], "ignor": [5, 15, 24, 26, 27, 28], "henc": 5, "b": [5, 6, 8, 9, 11, 12, 14, 28, 30], "harder": 5, "read": [5, 6, 8, 25, 31], "lack": [5, 19, 27], "parenthes": [5, 6, 9], "bracket": 5, "lengthi": 5, "total": [5, 6, 9, 14, 17, 18, 19, 26, 28], "c": [5, 8, 9, 11, 12, 13], "d": [5, 13], "f": [5, 6, 7, 8, 9, 13, 14, 15, 21, 22, 24, 25, 26, 30, 31], "backslash": 5, "indic": [5, 9, 11, 13, 18, 19, 21, 26, 27, 28, 30, 31], "describ": [5, 9, 11, 12, 13, 15, 17, 19, 21, 22, 24, 26, 27, 30], "note": [5, 9, 12, 25, 27, 28, 30, 31], "futur": [5, 30], "carri": 5, "out": [5, 6, 9, 19, 20, 26, 30], "primari": [5, 20, 24], "add": [5, 9, 11, 12], "operand": [5, 6], "equal": [5, 6, 9, 12, 15, 17, 21, 22, 26, 28, 30, 31], "8": [5, 7, 8, 9, 10, 11, 12, 15, 17, 20, 22, 24, 30, 31, 32], "right": [5, 6, 9, 11, 12, 13, 18, 20, 21, 24, 26, 28, 30, 31], "left": [5, 6, 12, 13, 26, 28, 30], "2": [5, 8, 9, 12, 14, 19, 30, 31, 32], "multipli": [5, 11, 12], "15": [5, 8, 12, 16, 17, 19, 24, 25, 30, 32], "divid": [5, 17, 18, 19, 21, 26, 30], "return": [5, 6, 7, 12, 17, 28, 31], "float": [5, 9], "floor": 5, "largest": [5, 8], "whole": 5, "smaller": [5, 19, 20, 21], "modulu": 5, "remaind": 5, "exponenti": 5, "rais": [5, 7, 9], "try": [5, 6, 9, 19, 20, 21, 28, 30], "someth": [5, 9], "yourself": [5, 7, 27, 30], "name": [5, 7, 9, 12, 20, 21, 22, 24, 31], "10": [5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 19, 20, 24, 25, 26, 27, 28, 30, 32], "overwrit": 5, "whatev": [5, 9], "held": 5, "shorthand": [5, 6], "increment": 5, "decrement": 5, "equival": [5, 27, 30], "wa": [5, 7, 9, 12, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30], "would": [5, 9, 15, 19, 20, 21, 22, 24, 25, 28, 30, 31], "now": [5, 6, 9, 30, 31], "becom": [5, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "6": [5, 7, 9, 10, 12, 13, 14, 15, 17, 22, 27, 30, 32], "13": [5, 8, 12, 16, 17, 19, 24, 32], "store": [5, 6, 7, 9, 25], "todai": [5, 6, 13, 31], "three": [5, 6, 7, 11, 25, 28, 30], "integ": [5, 9, 12, 22], "decim": 5, "14": [5, 7, 8, 11, 12, 16, 17, 22, 24, 32], "001": 5, "charact": [5, 11], "str": [5, 7, 9], "enclos": [5, 9], "quot": 5, "hello": [5, 9], "my_integ": 5, "my_float": 5, "my_str": 5, "displai": [5, 9, 12, 19, 21, 25, 31], "ask": [5, 7], "current": [5, 7, 9, 32], "There": [5, 8, 9, 18, 30], "restrict": 5, "certain": [5, 7, 8, 12, 19, 24], "ha": [5, 6, 7, 9, 11, 12, 13, 15, 17, 19, 20, 22, 26, 28, 30, 31], "guess": [5, 31], "y": [5, 9, 11, 12, 18, 19, 21, 24, 26, 27, 28, 31], "hi": 5, "constant": [5, 31], "possibl": [5, 9, 15, 20, 24, 28, 30], "down": [5, 9, 20, 28], "convinc": [5, 7], "fill": [5, 12, 21, 31], "behav": [5, 20, 21], "concaten": 5, "academi": [5, 11, 12], "introduct": [5, 16, 23, 26, 29, 32], "codecademi": 5, "introduc": [5, 6, 9, 20, 22, 26, 30], "en": [5, 15, 27], "wikipedia": 5, "wiki": 5, "python_syntax_and_semant": 5, "previou": [6, 9], "session": 6, "laid": 6, "basic": [6, 8, 14, 16, 19, 21, 22, 23, 24, 25, 27, 29, 32], "onli": [6, 7, 9, 11, 12, 17, 18, 21, 22, 24, 25, 27, 28, 31], "lesson": [6, 13, 15, 18, 24, 25, 26, 27, 28, 30], "stronger": 6, "appli": [6, 11, 12, 14, 18, 20, 22, 25, 27, 28, 31, 32], "reason": [6, 17, 18, 20, 25, 27, 30], "boolean": 6, "bool": [6, 7], "truth": [6, 8], "fals": [6, 7, 8, 9, 18, 19, 25], "is_rain": 6, "is_sunni": 6, "none": [6, 9, 22], "signifi": 6, "noth": 6, "absenc": 6, "default": [6, 9, 28], "least": [6, 9], "rainbow": 6, "inequ": 6, "numer": [6, 21, 22, 26, 28, 31], "greater": [6, 7], "object": [6, 9, 11, 17], "ident": [6, 12], "membership": 6, "temperatur": [6, 13, 17], "warm": 6, "cat": 6, "letter": [6, 9, 12], "compound": 6, "concis": [6, 7, 8, 11, 26], "n": [6, 9, 11, 12, 13, 15, 17, 18, 19, 22, 24, 25, 27, 30], "cleaner": [6, 7], "part": [6, 7, 9, 12, 17, 30], "mathemat": [6, 9, 11, 12, 16, 25, 32], "preced": 6, "insid": [6, 9, 25, 26], "circuit": [6, 12], "stop": [6, 7], "soon": [6, 8], "think": [6, 7, 9, 12, 13], "why": [6, 11, 18, 25, 27, 30], "doesn": [6, 13, 19, 22, 27, 28], "matter": [6, 11, 12], "similarli": [6, 13], "doe": [6, 7, 9, 12, 15, 19, 27, 28], "second": [6, 9, 14, 17, 26, 30], "known": [6, 7, 8, 11, 30], "even": [6, 7, 17, 18, 22, 25, 30, 31], "becaus": [6, 7, 9, 13, 17, 20, 21, 28, 30], "alreadi": [6, 9], "satisfi": [6, 22, 30, 31], "whether": [6, 7, 11, 13, 22, 28], "scenario": [6, 8, 9, 11, 13, 14, 20], "fallback": 6, "zero": [6, 11, 13, 17, 21, 24, 30, 31], "elig": 6, "discount": 6, "senior": 6, "citizen": 6, "ag": [6, 7, 21, 22, 30, 31], "older": 6, "student": [6, 24, 25], "purchas": 6, "tuesdai": 6, "everyon": 6, "take": [6, 7, 9, 12, 31], "statu": [6, 9], "def": [6, 7, 9, 28, 31], "calculate_discount": 6, "is_stud": 6, "total_purchas": 6, "is_tuesdai": 6, "discount_elig": 6, "final_pric": 6, "2f": [6, 9, 18, 30], "00": [6, 19, 21], "upgrad": 6, "member": 6, "year": 6, "attend": 6, "friend": 6, "automat": [6, 9], "regardless": [6, 7, 31], "four": [6, 17, 28], "repeatedli": 7, "under": [7, 11, 13, 14], "repetit": 7, "backbon": 7, "script": [7, 9], "shorter": 7, "valuabl": [7, 19, 26], "repeat": [7, 9, 18, 20, 30], "lead": [7, 9, 19, 20, 22, 28], "organ": [7, 9, 15], "python": [7, 9, 16, 19, 23, 29, 32], "item": [7, 9, 25], "mutabl": 7, "my_list": 7, "unord": [7, 22], "pair": [7, 9, 22, 30], "my_dict": 7, "alic": 7, "len": [7, 9, 21, 28, 30], "specifi": [7, 9, 11], "beforehand": 7, "count": [7, 8, 9, 15, 17, 19, 21, 22], "warn": [7, 9], "infinit": 7, "Be": [7, 18, 20, 24, 28], "cautiou": [7, 20, 24, 28], "never": [7, 20, 21], "difficulti": 7, "straightforward": [7, 11, 13, 18, 30], "inher": [7, 22], "extern": 7, "backward": [7, 28], "tupl": [7, 9], "prefer": [7, 12, 28], "prone": [7, 30], "argument": 7, "i": [7, 8, 9, 11, 12, 17, 21, 24, 25, 27, 30], "nuanc": [7, 19, 22, 25], "purpos": [7, 20, 26], "exit": 7, "prematur": 7, "met": [7, 8], "serv": 7, "itself": [7, 9, 11, 17, 20], "skip": 7, "move": [7, 13, 24, 28], "onto": [7, 11], "bypass": 7, "bodi": [7, 11], "odd": 7, "9": [7, 8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 22, 24, 25, 32], "finish": 7, "termin": 7, "search": [7, 9], "trigger": 7, "remind": [7, 12], "content": [7, 9, 19, 24], "search_for": 7, "enumer": [7, 9, 21], "entir": [7, 9, 13, 28, 31], "java": 7, "plai": [7, 11, 12, 14, 20], "emploi": [7, 12], "accomplish": 7, "divisor": 7, "is_prim": 7, "num": 7, "answer": [7, 9, 31], "correct": [7, 9, 17, 19, 22, 25, 28, 30], "immedi": [7, 9], "feedback": [7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "num_quest": 7, "num1": 7, "randint": [7, 9, 12], "num2": 7, "correct_answ": 7, "user_answ": [7, 9], "stdinnotimplementederror": [7, 9], "traceback": [7, 9, 22, 24], "recent": [7, 9, 22, 24], "last": [7, 9, 17, 19, 21, 22, 24], "16": [7, 8, 9, 12, 17, 19, 21, 23], "19": [7, 8, 9, 17, 23, 32], "21": [7, 8, 11, 12, 17, 21, 29, 32], "book_100daysml": [7, 9], "venv": [7, 9], "lib": [7, 9], "python3": [7, 9], "11": [7, 8, 9, 11, 12, 16, 19, 21, 24], "site": [7, 9], "ipykernel": [7, 9], "kernelbas": [7, 9], "py": [7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 27, 30], "1260": [7, 9], "raw_input": [7, 9], "prompt": 7, "1258": [7, 9], "_allow_stdin": [7, 9], "1259": [7, 9], "msg": [7, 9], "frontend": [7, 9], "request": [7, 9], "1261": [7, 9], "_input_request": [7, 9], "1262": [7, 9], "1263": [7, 9], "_parent_id": [7, 9], "shell": [7, 9], "1264": [7, 9], "get_par": [7, 9], "1265": [7, 9], "password": [7, 9], "1266": [7, 9], "quizz": 7, "feel": [7, 9], "action": [8, 9, 25], "branch": 8, "therebi": 8, "increas": [8, 19, 22, 30], "do_someth": 8, "voila": 8, "conjunct": 8, "do_something_els": 8, "Not": [8, 11, 12, 21], "mutual": [8, 22], "exclus": [8, 22, 28], "condition1": 8, "condition2": 8, "neither": 8, "nor": 8, "do_another_th": 8, "liken": 8, "style": 8, "switch": 8, "correspond": [8, 12], "taken": [8, 12], "medium": [8, 18, 21, 22, 24, 28], "compact": 8, "ternari": 8, "quick": [8, 13, 31], "singl": [8, 9, 11, 12, 17, 30, 31], "vertic": 8, "align": [8, 18, 20, 28], "classic": 8, "job": [8, 30], "interview": 8, "1": [8, 12, 14, 30, 31, 32], "fizz": 8, "instead": [8, 17, 20, 21], "buzz": 8, "7": [8, 9, 10, 11, 15, 17, 20, 22, 24, 26, 31, 32], "17": [8, 9, 12, 17, 19, 21, 23, 32], "entri": [8, 12, 17, 19], "celsiu": [8, 17], "below": [8, 9, 17, 19, 30], "freez": 8, "inclus": [8, 25, 28], "cold": 8, "moder": [8, 19], "abov": [8, 19], "categori": [8, 17, 20, 22, 24], "predefin": [8, 11], "temp": 8, "000": [8, 17], "sedentari": 8, "499": 8, "lightli": 8, "500": 8, "999": 8, "veri": [8, 9, 13, 19, 31], "distinct": [9, 28, 30], "situat": [9, 22], "reusabl": 9, "better": [9, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31], "modular": 9, "degre": [9, 17, 19, 28], "reus": 9, "keyword": 9, "colon": 9, "ey": 9, "peel": 9, "resum": 9, "some_funct": 9, "pass": 9, "do_math": 9, "chosen": [9, 28, 31], "my_funct": 9, "empti": 9, "convent": 9, "lowercas": 9, "underscor": 9, "match": [9, 12], "familiar": [9, 18, 22, 31], "directli": [9, 20, 30], "mere": [9, 28], "being": [9, 19, 30, 31], "won": 9, "until": [9, 30], "declar": [9, 12], "proper": 9, "john": 9, "mandatori": 9, "overridden": 9, "reorder": 9, "shuffl": [9, 18], "global": 9, "confin": 9, "shadow": 9, "do": [9, 17, 19, 20, 21, 24, 25, 26, 27, 30, 31], "who": 9, "struggl": [9, 19], "explicitli": 9, "regard": 9, "bad": 9, "anti": 9, "just": [9, 11, 12, 13, 14, 28, 30], "see": [9, 28, 30], "didn": 9, "h": [9, 13], "stuff": [9, 31], "append": [9, 11, 28], "ones": 9, "caus": [9, 15, 17, 19, 20, 21, 22, 24, 25, 27, 30], "typeerror": 9, "send": 9, "caller": 9, "unpack": 9, "usual": [9, 12, 31], "section": [9, 26], "ran": 9, "bring": [9, 28], "sometim": 9, "batteri": 9, "web": 9, "goe": [9, 30], "heard": 9, "slow": [9, 11, 13], "circumst": 9, "popular": [9, 30], "few": [9, 18, 19, 21, 24, 25, 30, 31], "constraint": 9, "rust": 9, "speed": [9, 11, 13, 21], "highli": [9, 22, 26, 27, 30, 31], "compil": [9, 24], "glue": 9, "namespac": 9, "home": [9, 30], "linux": 9, "x86_64": 9, "cpython": 9, "311": 9, "gnu": 9, "so": [9, 13, 17, 20, 21, 27, 30, 31], "fact": 9, "directori": 9, "pi": [9, 15], "141592653589793": 9, "pow": 9, "forc": [9, 11], "simpli": [9, 13, 30, 31], "frequent": [9, 13, 17, 20], "pyplot": [9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "plt": [9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "dozen": 9, "exhaust": 9, "given": [9, 11, 13, 15, 19, 30, 31], "alia": 9, "leav": [9, 30], "rest": [9, 22, 31], "sole": [9, 26, 28], "sparingli": 9, "difficult": 9, "trace": 9, "come": [9, 15], "own": [9, 15], "encapsul": [9, 13, 22], "occasion": 9, "ok": 9, "greatli": 9, "star": 9, "great": 9, "caution": 9, "could": [9, 19, 25], "adequ": [9, 20], "As": [9, 28], "homework": [9, 28], "perus": 9, "handi": 9, "lot": 9, "dice_rol": 9, "6692318444660496": [], "servic": 9, "txt": 9, "dump": 9, "elaps": 9, "deliber": [9, 30], "sleep": 9, "datetim": 9, "calendar": 9, "timestamp": 9, "timezon": 9, "durat": [9, 11], "01": [9, 21], "06": [17, 20, 25, 28], "344280": [], "regress": [9, 15, 21, 27, 32], "far": [9, 19], "actual": [9, 11, 17, 19, 30, 31], "suppos": 9, "ax": [9, 11, 24, 26, 30, 31], "column": [9, 12, 19, 20, 21, 22, 28, 30, 31], "intercept": [9, 30, 31], "x_data": 9, "x1": [9, 11, 12], "x2": [9, 12], "xn": 9, "y_data": 9, "y1": [9, 11, 12], "y2": [9, 12], "yn": 9, "y_pred": 9, "quantifi": [9, 15, 27, 28], "replac": [9, 20, 22], "synthes": 9, "everyth": 9, "ve": [9, 30], "correctli": [9, 19, 22, 28, 31], "too": [9, 24, 25, 28], "low": [9, 17, 19, 26, 27, 30], "attempt": 9, "made": 9, "onc": [9, 31], "successfulli": [9, 19], "messag": 9, "user_input": 9, "enter": 9, "except": 9, "valueerror": 9, "pleas": [9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "calculate_scor": 9, "range_s": 9, "fewer": [9, 19, 22], "worst": 9, "log2": 9, "worst_case_binary_search": 9, "interpol": 9, "extrem": [9, 17, 19, 20, 24], "guessing_gam": 9, "min_valu": 9, "max_valu": 9, "configur": [9, 18, 31], "number_to_guess": 9, "user_guess": 9, "congratul": 9, "again": 9, "desir": [9, 19], "20": [9, 11, 12, 17, 19, 20, 23, 24, 26, 32], "record": 9, "got": [9, 30], "wrong": 9, "my": 9, "solut": [9, 11, 13, 30], "disk": 9, "bonu": 9, "quickli": 9, "around": [9, 13, 19, 21, 24, 26], "example_quiz": 9, "filenam": 9, "sample_quiz": 9, "capit": [9, 12, 25], "franc": 9, "pari": 9, "wrong_answ": 9, "rome": 9, "london": 9, "open": 9, "w": 9, "load_quiz": 9, "uncom": 9, "quiz_gam": 9, "total_scor": 9, "all_answ": 9, "chr": 9, "start_tim": 9, "strip": 9, "end_tim": 9, "time_taken": 9, "correct_answer_index": 9, "assum": [9, 17, 18, 19, 20, 21, 27, 28, 30, 31], "1f": 9, "18": [9, 12, 17, 23, 32], "pick": [9, 30], "inspir": 9, "edit": 9, "delet": 9, "phone": 9, "email": 9, "interfac": 9, "command": 9, "view": [9, 18, 26], "confirm": [9, 13], "success": [9, 15], "gracefulli": 9, "inventori": 9, "remov": [9, 17, 28, 31], "id": [9, 19, 21, 28], "stock": [9, 13], "cost": [9, 13, 20, 28], "tax": 9, "mathbf": 11, "bmatrix": [11, 12], "v_1": 11, "v_2": 11, "vdot": [11, 12], "v_n": 11, "possess": 11, "length": [11, 13, 21, 28], "denot": [11, 12, 13, 14, 15, 28], "non": [11, 19, 20, 28, 31], "neg": [11, 19, 26, 27, 30, 31], "orient": 11, "rel": [11, 19, 28], "frame": [11, 17, 19], "angl": [11, 30], "coordin": [11, 12], "fulli": 11, "car": [11, 13], "travel": [11, 13], "60kph": 11, "ne": 11, "paramount": 11, "scientif": 11, "disciplin": [11, 12, 15], "versatil": 11, "veloc": [11, 13], "acceler": [11, 13], "displac": 11, "motion": 11, "civil": 11, "electr": [11, 12], "indispens": [11, 15], "classif": [11, 18, 28, 30, 32], "phenomena": [11, 15], "tackl": 11, "place": [11, 18], "background": 11, "color": [11, 13, 14, 15, 18, 20, 21, 22, 24, 26, 28, 30, 31], "easier": [11, 31], "handwritten": 11, "digit": [11, 22], "optic": 11, "ocr": 11, "shape": [11, 12, 17, 19, 26, 27], "commut": [11, 12], "associ": [11, 12, 28], "therefor": [11, 13], "yield": 11, "OR": [11, 12], "x_add": 11, "sgd": 11, "dynam": 11, "progress": 11, "overshoot": 11, "ab": 11, "bx": 11, "mulitpl": 11, "ay": 11, "xa": 11, "ya": 11, "x_scalar_mult": 11, "navig": 11, "robot": 11, "linalg": [11, 12], "arctan2": 11, "radian": 11, "9272952180016122": 11, "sentiment": 11, "mathbb": 11, "dimension": [11, 22, 28, 30, 32], "cdot": [11, 12, 13], "sum_": [11, 12, 17, 25, 30], "x_i": [11, 17, 27, 30], "y_i": [11, 27, 30], "respect": [11, 13, 21, 27, 28, 31], "co": 11, "theta": 11, "bilinear": 11, "orthogon": 11, "perpendicular": 11, "quad": 11, "dot_product": 11, "x1_3d": 11, "y1_3d": 11, "3d": [11, 30], "surfac": 11, "light": 11, "render": [11, 19], "torqu": 11, "rotat": [11, 24, 30], "origin": [11, 12, 14, 20, 21, 30, 31], "mathbi": 11, "vmatrix": 11, "j": [11, 12], "x_1": [11, 30, 31], "x_2": [11, 30, 31], "x_3": 11, "y_1": 11, "y_2": 11, "y_3": 11, "a_1": 11, "a_2": 11, "a_3": 11, "b_1": 11, "b_2": 11, "b_3": 11, "sin": 11, "plane": [11, 30], "neq": 11, "exert": 11, "simplifi": [11, 28], "cross_product": 11, "l2": 11, "_2": 11, "ldot": 11, "vector_v": 11, "l2_norm": 11, "new_posit": 11, "aerospac": 11, "safeti": 11, "stabil": [11, 19, 21], "bridg": 11, "accur": [11, 24, 27, 30, 31], "analys": [11, 17, 19, 20, 24, 25, 30], "big": 11, "quicker": 11, "precis": [11, 13, 18, 19, 21, 22], "abstract": 11, "infrastructur": 11, "quantum": [11, 12], "stem": 11, "approxim": [11, 19, 28], "minut": 11, "linspac": [11, 13, 14], "meshgrid": 11, "circular": 11, "quiver": 11, "xlim": [11, 30], "ylim": [11, 30], "titl": [11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "xlabel": [11, 13, 14, 18, 20, 21, 22, 24, 25, 26, 28, 30, 31], "axi": [11, 18, 19, 22, 28, 30, 31], "ylabel": [11, 13, 14, 18, 20, 21, 22, 24, 25, 26, 28, 30, 31], "v1": 11, "v2": 11, "v_add": 11, "v_sub": 11, "v_scalar_mult": 11, "xy": [11, 12], "scale_unit": 11, "green": [11, 20, 21, 30], "red": [11, 13, 21, 22, 27, 30, 31], "blue": [11, 14, 20, 21, 22, 30, 31], "khan": [11, 12], "rectangular": 12, "arrang": 12, "row": [12, 17, 21, 22, 24, 31], "x_": [12, 25], "12": [12, 16, 17, 20, 21, 22, 24, 26, 27, 30, 31, 32], "1n": 12, "2n": 12, "ddot": 12, "m1": 12, "m2": 12, "mn": 12, "physic": [12, 13, 14], "moment": [12, 13], "inertia": 12, "tensor": 12, "graph": [12, 13, 14], "among": [12, 27, 28, 30], "kickoff": 12, "fantast": 12, "coupl": 12, "grid": [12, 13, 14, 25], "nonumb": 12, "z1": 12, "subscript": 12, "isn": [12, 30], "nice": 12, "notic": 12, "verifi": 12, "_": 12, "ij": 12, "x1_": 12, "y1_": 12, "m_add": 12, "m_sub": 12, "rather": [12, 30], "l": 12, "obtain": [12, 25, 28], "th": [12, 30], "compat": 12, "inner": 12, "circ": 12, "m_sca": 12, "m_mul": 12, "4x4": 12, "communit": 12, "m_mul1": 12, "m_mul2": 12, "113": 12, "141": 31, "114": [], "129": [], "166": [], "103": 12, "158": [], "rrr": 12, "hspace": 12, "1cm": 12, "twice": 12, "notat": 12, "transposit": 12, "x_t": 12, "det": 12, "nonzero": 12, "x_inv": 12, "inv": 12, "81474977e": 12, "62949953e": 12, "12589991e": 12, "mat_x": 12, "mat_i": 12, "mat_": 12, "mat_xi": 12, "mat_xy_t": 12, "mat_xy_t2": 12, "2nd": [12, 22], "mat_xy_inv": 12, "118": 12, "194": 12, "322": 12, "264": 12, "405": 12, "690": 12, "668": 12, "895": [12, 20, 21, 22], "1610": 12, "81926058e": 12, "93203101e": 12, "79964834e": 12, "97348241e": 12, "05242171e": 12, "95975384e": 12, "further": [12, 17, 19, 25], "resourc": 12, "link": 12, "materi": 12, "interest": [12, 13, 15, 20, 26, 27, 30], "essenc": [13, 20], "ai": [13, 14, 28, 32], "curios": 13, "willing": 13, "akin": [13, 14], "lim_": 13, "frac": [13, 17, 18, 25, 27, 30], "instantan": 13, "curv": [13, 14, 18], "imagin": 13, "know": [13, 14, 30], "fast": [13, 30], "growth": 13, "popul": [13, 15, 17, 18, 19, 24], "particular": [13, 19], "df": [13, 18, 20, 21, 31], "dx": [13, 14], "2x": 13, "3x": 13, "4x": 13, "expon": [13, 30], "impli": [13, 19, 27, 28], "concern": [13, 28], "sp": [13, 14], "s_t": 13, "s_prime_t": 13, "remain": [13, 20], "fix": [13, 15, 19, 26, 30], "locat": [13, 17, 30], "t_x": 13, "livrari": 13, "t_prime_x": 13, "conveni": 13, "straight": [13, 30], "road": 13, "p": [13, 15, 24, 28], "2t": 13, "3t": 13, "4t": 13, "p_t": 13, "p_prime_t": 13, "rectangl": 13, "width": [13, 21, 26, 28], "a_x": 13, "a_prime_x": 13, "speedomet": 13, "econom": [13, 31], "revenu": 13, "busi": 13, "safe": 13, "sensit": [13, 20, 21, 24, 28, 31], "aid": [13, 27], "formul": 13, "assist": 13, "node": [13, 28], "abc": [13, 14], "sai": [13, 30], "value_at_x": 13, "rate_of_chang": 13, "sub": 13, "lambda": [13, 14], "func_lambda": [13, 14], "lambdifi": [13, 14], "deriv_lambda": 13, "x_val": [13, 14], "y_val": [13, 14], "tangent_lin": 13, "figur": [13, 14, 18, 19, 21, 22, 25, 26, 27, 28, 30], "figsiz": [13, 14, 19, 21, 22, 25, 26, 27, 30, 31], "linestyl": [13, 18, 30], "dash": [13, 30], "scatter": [13, 21, 27, 30, 31], "tangenc": 13, "legend": [13, 14, 18, 20, 21, 24, 28, 30, 31], "distinguish": 13, "interv": [13, 14, 15, 17], "impart": 13, "mark": 13, "stride": 13, "machinelearningmasteri": [13, 18, 20, 21, 22, 27, 28], "gentl": 13, "partial": 13, "openstax": 13, "book": 13, "page": [13, 19], "towardsai": 13, "net": 13, "master": [13, 22, 27], "towardsdatasci": [13, 18, 21, 22, 24], "peopl": [13, 18], "3cd913c5cf33": 13, "deepen": [14, 15, 20, 22, 25, 28], "profound": 14, "profici": [14, 15, 24], "eager": 14, "accumul": 14, "infinitesim": 14, "small": [14, 19], "piec": 14, "much": [14, 28, 30], "a_b": 14, "indefinit": 14, "antideriv": 14, "famili": 14, "whose": [14, 30], "assert": 14, "a_bf": 14, "dxf": 14, "extens": [14, 31], "roc": [14, 18, 19], "deep": [14, 15, 24, 26, 32], "indefinite_integr": 14, "definite_integr": 14, "integral_lambda": 14, "fill_between": 14, "grai": [14, 30], "alpha": [14, 15, 20, 21, 26, 28, 30], "equip": [15, 27], "keen": 15, "interrel": 15, "sens": [15, 19, 22, 28, 30], "event": 15, "infer": [15, 24, 30, 31], "cannot": [15, 30], "certainti": 15, "subset": [15, 18, 19, 28], "imposs": 15, "likelihood": [15, 20], "occurr": [15, 19], "confid": [15, 28], "uniform": 15, "simplest": [15, 30], "everi": [15, 19], "chanc": 15, "character": 15, "\u03bc": [15, 21], "binomi": 15, "bernoulli": 15, "trial": 15, "poisson": 15, "pd": [15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "tmp": [15, 17, 19, 20, 21, 22, 24, 25, 30], "ipykernel_145386": [], "584559657": 15, "deprecationwarn": [15, 17, 19, 20, 21, 22, 24, 25, 30], "pyarrow": [15, 17, 19, 20, 21, 22, 24, 25, 30], "major": [15, 17, 19, 20, 21, 22, 24, 25, 30], "releas": [15, 17, 19, 20, 21, 22, 24, 25, 30], "arrow": [15, 17, 19, 20, 21, 22, 24, 25, 30], "interoper": [15, 17, 19, 20, 21, 22, 24, 25, 30], "instal": [15, 17, 19, 21, 22, 24, 25, 30, 31], "dev": [15, 17, 19, 20, 21, 22, 24, 25, 30], "54466": [15, 17, 19, 20, 21, 22, 24, 25, 30], "range_": 15, "ptp": 15, "var": [15, 17, 19, 24, 25, 26], "std_dev": [15, 25], "std": [15, 17, 19, 21, 22, 24, 25], "8722813232690143": 15, "mu": [15, 18], "1000": 15, "bin": [15, 20, 24, 25, 26, 28], "hist": [15, 20, 24, 25, 26, 31], "exp": 15, "linewidth": [15, 19], "lambda_": 15, "null": [15, 17, 19, 24], "\u03bc_0": 15, "altern": [15, 22, 24], "mu_0": 15, "05": [15, 28], "t_statist": [15, 24], "p_valu": [15, 24, 28], "ttest_1samp": [15, 24], "reject": 15, "fail": [15, 28], "5222329678670935": 15, "614117254808394": 15, "rigor": 15, "probabilitycours": 15, "prefac": 15, "php": 15, "vfu": 15, "bg": 15, "bertsekas_tsitsiklis_introduction_to_prob": 15, "pdf": 15, "1uw3qmfa9ho": 15, "plul4u3cngp60hi9atjsfglzpbnj7myag6": 15, "morningsid": 15, "libguid": 15, "raw": 17, "clean": 17, "duplic": 17, "discret": [17, 28], "qualit": 17, "nomin": 17, "blood": 17, "ordin": 17, "ratio": 17, "height": [17, 26, 31], "covid": 17, "ipykernel_145430": [], "2223182689": [17, 19], "datafram": [17, 18, 19, 20, 21, 22, 28, 31], "covid_data": 17, "read_csv": [17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "inspect": [17, 19], "five": [17, 18, 19, 21], "iso_cod": 17, "contin": 17, "total_cas": 17, "new_cas": 17, "new_cases_smooth": 17, "total_death": 17, "new_death": 17, "new_deaths_smooth": 17, "female_smok": 17, "male_smok": 17, "handwashing_facil": 17, "hospital_beds_per_thousand": 17, "life_expect": 17, "human_development_index": 17, "excess_mortality_cumulative_absolut": 17, "excess_mortality_cumul": 17, "excess_mort": 17, "excess_mortality_cumulative_per_million": 17, "afg": 17, "asia": 17, "afghanistan": 17, "02": [17, 21, 31], "2020": [17, 21, 22, 28], "nan": [17, 20, 21, 22], "746": 17, "511": 17, "tail": [17, 19, 26], "5813": 17, "nga": 17, "africa": 17, "nigeria": 17, "2022": 17, "265741": 17, "236": 17, "286": 17, "3155": 17, "949": 17, "539": 17, "5814": 17, "07": [17, 18], "5815": 17, "08": [17, 19, 22], "265816": 17, "5816": 17, "09": [9, 17], "5817": 17, "info": [17, 19], "rangeindex": [17, 19], "5818": 17, "dtype": [17, 19, 20, 21, 22, 28, 31], "int64": [17, 19, 20, 21], "5788": 17, "float64": [17, 19, 20, 22, 31], "5638": 17, "5627": 17, "5596": 17, "total_cases_per_million": 17, "new_cases_per_million": 17, "new_cases_smoothed_per_million": 17, "total_deaths_per_million": 17, "new_deaths_per_million": 17, "new_deaths_smoothed_per_million": 17, "reproduction_r": 17, "5566": 17, "icu_pati": 17, "2610": 17, "icu_patients_per_million": 17, "hosp_pati": 17, "hosp_patients_per_million": 17, "weekly_icu_admiss": 17, "weekly_icu_admissions_per_million": 17, "weekly_hosp_admiss": 17, "934": 17, "weekly_hosp_admissions_per_million": 17, "total_test": 17, "3174": 17, "new_test": 17, "2948": 17, "total_tests_per_thousand": 17, "new_tests_per_thousand": 17, "new_tests_smooth": 17, "4114": 17, "new_tests_smoothed_per_thousand": 17, "positive_r": 17, "3440": 17, "tests_per_cas": 17, "tests_unit": 17, "4156": 17, "total_vaccin": 17, "2104": 17, "people_vaccin": 17, "2051": 17, "people_fully_vaccin": 17, "2004": 17, "total_boost": 17, "1170": 17, "new_vaccin": 17, "1827": 17, "new_vaccinations_smooth": 17, "3658": 17, "total_vaccinations_per_hundr": 17, "people_vaccinated_per_hundr": 17, "people_fully_vaccinated_per_hundr": 17, "total_boosters_per_hundr": 17, "new_vaccinations_smoothed_per_million": 17, "new_people_vaccinated_smooth": 17, "new_people_vaccinated_smoothed_per_hundr": 17, "stringency_index": 17, "5699": 17, "population_dens": 17, "median_ag": 17, "aged_65_old": 17, "aged_70_old": 17, "gdp_per_capita": 17, "extreme_poverti": 17, "2922": 17, "cardiovasc_death_r": 17, "diabetes_preval": 17, "4860": 17, "1913": 17, "4863": 17, "421": 17, "mb": 17, "covid_datanew": 17, "bar": [17, 18, 22, 25, 26, 27, 28, 30], "newcase_mean": 17, "8814": 17, "365761430045": 17, "middl": [17, 19, 26], "sort": [17, 25], "newcase_median": 17, "261": 17, "moderesult": 17, "modal": [17, 26], "thu": [17, 19], "newcase_mod": 17, "805": 17, "\u03c3\u00b2": [17, 21], "newcase_vari": 17, "451321915": 17, "9280954": 17, "451399502": 17, "6421969": 17, "ddof": [17, 19], "newcase_stdev": 17, "stdev": [17, 19], "21246": 17, "164421895": 17, "freedom": [17, 28], "unbias": [17, 18], "mle": 17, "stackoverflow": 17, "62938495": 17, "stand": [17, 28], "alon": 17, "mislead": [17, 22, 24], "covid_newcases_max": 17, "covid_newcases_min": 17, "287149": 17, "iqr": [17, 25, 26], "sever": [17, 19, 20, 31], "fall": [17, 19, 26], "q1": [17, 19, 26], "q3": [17, 19, 26], "parametr": [17, 28], "segment": 17, "sale": 17, "depict": [17, 26], "quantil": [17, 19], "25th": [17, 19], "percentil": [17, 19], "75th": [17, 19], "3666": 17, "3642": 17, "nehalbirla": 17, "vehicl": 17, "cardekho": 17, "quantinsti": 17, "experfi": 17, "clt": 18, "sim": 18, "unknown": 18, "observ": [18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "homogen": [18, 19, 28], "subgroup": 18, "proport": [18, 19, 22, 26, 28, 31], "strata": 18, "stratum": 18, "sklearn": [18, 19, 20, 21, 22, 28, 30, 31], "model_select": [18, 19, 21, 28, 30, 31], "train_test_split": [18, 19, 21, 28, 30, 31], "train_set": 18, "test_set": 18, "test_siz": [18, 19, 21, 28, 30, 31], "random_st": [18, 19, 20, 21, 28, 30, 31], "pseudo": 18, "reproduc": 18, "softwar": 18, "talk": 18, "intern": 18, "imbalanc": [18, 19], "stratifiedshufflesplit": 18, "n_split": 18, "train_index": 18, "test_index": 18, "stratum_column": 18, "strat_train_set": 18, "loc": [18, 26, 30], "strat_test_set": 18, "fold": [18, 19], "kfold": 18, "cross_val_scor": [18, 19], "ensembl": [18, 19, 29], "randomforestclassifi": [18, 19], "kf": 18, "df_featur": 18, "df_target": 18, "cv": [18, 19], "stratifiedkfold": 18, "skf": 18, "x_train": [18, 19, 21, 28, 30, 31], "x_test": [18, 19, 21, 28, 30, 31], "y_train": [18, 19, 21, 28, 30, 31], "y_test": [18, 19, 21, 28, 30, 31], "subject": 18, "suit": [18, 30], "download": [18, 19], "wine": [18, 24], "100daysofml_notebook": [18, 21, 22], "accord": [18, 19, 28], "wine_data": [18, 19, 24, 25, 26, 27], "winequ": 18, "standardscal": [18, 19, 21, 28, 31], "labelencod": [18, 19, 22, 28], "fillna": [18, 19, 20, 21, 31], "inplac": [18, 19, 20, 21, 31], "categorical_column": [18, 19], "fit_transform": [18, 19, 20, 21, 22, 28, 31], "scaler": [18, 19, 21, 31], "wine_data_sc": [18, 19], "drop": [18, 19, 22, 28, 31], "accuracy_scor": [18, 19, 28], "confusion_matrix": [18, 19], "recal": [18, 19, 21, 22], "f1": [18, 19], "classification_report": [18, 19], "roc_curv": 18, "auc": [18, 19], "predict_proba": 18, "fpr": 18, "tpr": 18, "threshold": [18, 28], "roc_auc": 18, "darkorang": 18, "lw": 18, "navi": 18, "receiv": 18, "outlin": 18, "confidenti": 18, "conduct": [18, 19, 24, 26, 28, 31], "befor": [18, 20, 21, 22, 24, 27, 28], "unseen": [18, 19, 28, 31], "generaliz": 18, "leak": [18, 31], "vigil": 18, "augment": 18, "datasciencewizard": 18, "49a959c95fa1": 18, "8ef4e3a97562": 18, "analyticsvidhya": [18, 20, 21, 22, 25, 28], "2021": [18, 20, 25], "jfrog": 18, "ipykernel_145464": [], "wine_qu": [19, 24, 25, 26, 27], "acid": [19, 26], "volatil": 19, "citric": 19, "residu": [19, 25, 26, 30], "sugar": [19, 25, 26], "chlorid": 19, "sulfur": [19, 26], "dioxid": [19, 26], "ph": [19, 25, 26], "sulphat": 19, "alcohol": [19, 24, 25, 26], "076": 19, "9978": 19, "098": 19, "9968": 19, "04": [19, 21], "092": 19, "9970": 19, "075": 19, "9980": 19, "1138": 19, "510": 19, "99574": 19, "1592": 19, "1139": 19, "620": 19, "068": 19, "99651": 19, "1593": 19, "1140": 19, "600": 19, "090": 19, "99490": 19, "1594": 19, "1141": 19, "550": 19, "062": 19, "99512": 19, "1595": 19, "1142": 19, "645": 19, "99547": 19, "1597": 19, "1143": 19, "116": 19, "kb": 19, "copi": [19, 20, 21], "wine_datanew": 19, "winequality_mean": 19, "657": 19, "winequality_median": 19, "winequality_var": 19, "6488": 19, "extent": 19, "somewhat": 19, "heterogen": 19, "alongsid": 19, "holist": 19, "winequality_stdev": 19, "8058": 19, "tend": [19, 26], "wider": 19, "typic": [19, 25], "pronounc": 19, "pictur": 19, "winequality_max": 19, "winequality_min": 19, "maximum": [19, 21, 26], "minimum": [19, 21, 26], "highest": [19, 30], "lowest": [19, 30], "presenc": [19, 21, 22, 25, 26], "exploratori": [19, 25, 26, 28, 32], "reveal": 19, "factor": [19, 27, 28, 31], "upper": [19, 26, 30], "third": [19, 26], "closer": [19, 30, 31], "half": 19, "narrow": [19, 26], "higher": [19, 28, 31], "sn": [19, 21, 22, 24, 25, 26, 27, 31], "correlation_matrix": [19, 24], "corr": [19, 21, 24, 27], "annot": [19, 24, 27], "cmap": [19, 24, 27], "coolwarm": 19, "attribut": [19, 28], "decreas": 19, "6731": 19, "6815": 19, "6852": 19, "4074": 19, "5442": 19, "4947": 19, "5463": 19, "2577": 19, "4849": 19, "chemic": 19, "properti": [19, 28], "trust": 19, "On": [19, 30], "unabl": 19, "nbviewer": 19, "nbsp": 19, "randomforestclassifierifittedrandomforestclassifi": 19, "9782": 19, "strong": [19, 24, 27], "significantli": [19, 20, 22, 26, 27, 28], "outnumb": 19, "tell": [19, 30], "categorical_featur": 19, "x_train_scal": [19, 31], "x_test_scal": [19, 31], "diagon": 19, "No": [19, 20, 22], "misclassif": 19, "misclassifi": 19, "failur": 19, "imbal": 19, "zero_divis": 19, "229": 19, "macro": 19, "avg": 19, "breakdown": 19, "identif": 19, "poor": 19, "were": 19, "resampl": 19, "underrepres": 19, "cross_val_scores_round": 19, "9825": 19, "9737": 19, "9345": 19, "9476": 19, "9605": 19, "9649": 19, "slight": 19, "fairli": 19, "stabl": [19, 31], "overli": [19, 30], "advis": 19, "intermedi": [20, 21, 22, 24, 25], "mar": 20, "missing": 20, "unobserv": 20, "titanic_data": [20, 21, 22], "isnul": [20, 21, 31], "passengerid": [20, 21, 22], "pclass": [20, 21], "sex": [20, 21, 22, 31], "892": [20, 21, 22], "kelli": [20, 21, 22], "mr": [20, 21, 22], "jame": [20, 21, 22], "male": [20, 21, 22], "893": [20, 21, 22], "wilk": [20, 21, 22, 28], "ellen": [20, 21, 22], "femal": [20, 21, 22], "894": [20, 21, 22], "myle": [20, 21, 22], "thoma": [20, 21, 22], "franci": [20, 21, 22], "wirz": [20, 21, 22], "albert": [20, 21, 22], "896": [20, 21, 22], "hirvonen": [20, 21, 22], "alexand": [20, 21, 22], "helga": [20, 21, 22], "lindqvist": [20, 21, 22], "sibsp": [20, 21, 22], "parch": [20, 21, 22], "ticket": [20, 21, 22], "fare": [20, 21, 22], "cabin": [20, 21], "surviv": [20, 21, 22], "330911": [20, 21, 22], "8292": [20, 21, 22], "363272": [20, 21, 22], "0000": [20, 21, 22], "240276": [20, 21, 22], "6875": [20, 21, 22], "315154": [20, 21, 22], "6625": [20, 21, 22], "3101298": [20, 21, 22], "2875": [20, 21, 22], "327": [20, 21], "ipykernel_145506": [], "245541981": 20, "unduli": 20, "preserv": [20, 21, 22], "embarked_mod": 20, "retain": 20, "distort": [20, 31], "unaffect": 20, "conclus": [20, 24, 26], "684399944": 20, "futurewarn": [20, 21], "col": [20, 21, 22], "knnimput": 20, "n_neighbor": 20, "numeric_column": 20, "select_dtyp": [20, 22], "closest": 20, "exhibit": [20, 30], "captur": [20, 28], "smooth": [20, 26], "inaccur": 20, "expens": 20, "predictor": [20, 27, 30, 31], "poorli": 20, "sophist": [20, 28], "intertwin": 20, "experiment": [20, 28], "enable_iterative_imput": 20, "iterativeimput": 20, "linear_model": [20, 30, 31], "bayesianridg": 20, "iterative_imput": 20, "missing_valu": 20, "max_it": 20, "titanic_data_imput": 20, "bayesian": 20, "incorpor": 20, "prior": 20, "belief": 20, "uncertainti": [20, 28], "posterior": 20, "robin": 20, "fashion": 20, "gaug": 20, "frequenc": [20, 22, 24, 25, 26, 28], "titanic_data_origin": 20, "dropna": 20, "hasn": 20, "alter": [20, 21], "lookout": 20, "unusu": [20, 24, 26], "spike": 20, "weren": 20, "robject": 20, "importr": 20, "pandas2ri": 20, "globalenv": 20, "choosecranmirror": 20, "ind": 20, "magic": 20, "load_ext": 20, "ipython": 20, "install_packag": 20, "remot": 20, "install_github": 20, "njtiernei": 20, "naniar": 20, "r_df": 20, "mcar_test": 20, "consult": 20, "simplilearn": [20, 21], "theanalysisfactor": 20, "seven": 20, "dataaspir": 20, "\u03c3z": 21, "xx": 21, "\u03bc\u03bc": 21, "\u03c3\u03c3": 21, "center": [21, 24, 28], "pro": 21, "con": 21, "bound": [21, 28], "rescal": 21, "xnorm": 21, "xmin": 21, "xmax": 21, "xminxmin": 21, "xmaxxmax": 21, "overpow": 21, "knn": 21, "minmaxscal": 21, "load_iri": 21, "iris_data": [21, 28], "feature_nam": [21, 25], "iris_standard": 21, "min_max_scal": 21, "iris_min_max_sc": 21, "inter": 21, "comprehend": 21, "readi": 21, "iloc": [21, 26], "minmaxscalermin_max_scal": 21, "sepallengthcm": [21, 28], "subplot": [21, 22, 26, 30, 31], "histplot": [21, 26], "kde": [21, 26], "accordingli": 21, "sepalwidthcm": 21, "sepal": [21, 28], "snoop": 21, "petallengthcm": [21, 28], "petalwidthcm": [21, 28], "speci": [21, 28], "setosa": [21, 28], "ipykernel_145532": [], "2131166956": 21, "dancerworld60": 21, "4bb910900ab7": 21, "awar": [21, 24, 28, 31], "e44df654f185": 21, "nsummari": 21, "nmiss": 21, "418": [21, 22], "000000": [21, 22, 28], "332": 21, "1100": [21, 30], "500000": 21, "265550": [21, 22], "272590": 21, "447368": 21, "392344": 21, "120": 21, "810458": 21, "841838": [21, 22], "181209": 21, "896760": 21, "981429": 21, "170000": 21, "996": 21, "250000": 21, "1204": 21, "750000": 21, "1309": 21, "417": 21, "627188": 21, "385167": 21, "907576": 21, "487218": 21, "895800": 21, "454200": 21, "512": 21, "329200": 21, "1279951594": 21, "x_train_standard": 21, "x_test_standard": 21, "x_train_min_max": 21, "x_test_min_max": 21, "tight_layout": [21, 22, 26, 30, 31], "scalingprint": 21, "nstatist": [21, 22], "334": 21, "262": 21, "333": 21, "269461": 21, "115763": 21, "470060": 21, "404192": 21, "909135": 21, "844961": 21, "655775": 21, "944719": 21, "937113": 21, "054690": 21, "330000": 21, "887500": 21, "340000e": 21, "620000e": 21, "330000e": 21, "233742e": 21, "711995e": 21, "127373e": 21, "722904e": 21, "267524e": 21, "001500e": 21, "001914e": 21, "001505e": 21, "504644e": 21, "036246e": 21, "983123e": 21, "319630e": 21, "367217e": 21, "231816e": 21, "006539e": 21, "658800e": 21, "130032e": 21, "873714e": 21, "073537e": 21, "617915e": 21, "606225e": 21, "136788e": 21, "982518e": 21, "186412e": 21, "201500e": 21, "634731": 21, "393627": 21, "058757": 21, "044910": 21, "072042": 21, "422481": 21, "193680": 21, "118090": 21, "104124": 21, "113315": 21, "273160": 21, "015395": 21, "352451": 21, "028213": 21, "511035": 21, "125000": 21, "063436": 21, "alexisbcook": 21, "primarili": 22, "intrins": 22, "gender": 22, "rank": 22, "school": 22, "bachelor": 22, "satisfact": 22, "unsatisfi": 22, "neutral": 22, "pose": 22, "cherbourg": 22, "queenstown": 22, "southampton": 22, "3rd": 22, "c85": 22, "c123": 22, "e46": 22, "curs": [22, 28], "elimin": [22, 28], "treat": 22, "linearli": 22, "spars": 22, "category_encod": 22, "ce": 22, "binaryencod": 22, "titanic_binary_encod": 22, "onehotencod": 22, "titanic_one_hot_encod": 22, "titanic_one_hot_encoded_df": 22, "toarrai": 22, "get_feature_names_out": 22, "pclass_encod": 22, "hierarchi": 22, "leakag": 22, "dummi": 22, "trap": 22, "multicollinear": [22, 27, 31], "mind": [22, 24, 30], "fictiti": 22, "pairwis": [22, 24, 25], "mostli": 22, "preval": 22, "1s": 22, "mix": 22, "passeng": 22, "sink": 22, "ipykernel_145572": [], "3916798240": 22, "modulenotfounderror": 22, "modul": [22, 32], "ndata": 22, "nuniqu": 22, "363": 22, "nbinari": 22, "value_count": 22, "nameerror": [22, 24], "embarked_c": 22, "embarked_q": 22, "embarked_": 22, "nlabel": 22, "b57": 22, "b59": 22, "b63": 22, "b66": 22, "freq": 22, "270": 22, "244019": 22, "110048": 22, "645933": 22, "430019": 22, "313324": 22, "478803": 22, "aiskunk": 22, "d6296697a40f": 22, "547707acf4e5": 22, "305f3361fd02": 22, "uncov": 24, "trend": [24, 25, 32], "draw": [24, 26, 30], "adopt": 24, "ethic": [24, 32], "ipykernel_145606": [], "955872667": [24, 25], "spot": 24, "mistak": 24, "erron": 24, "summari": [24, 25, 30], "ts": [24, 25, 27], "wise": [24, 26, 31], "preliminari": 24, "carefulli": 24, "overplot": 24, "violinplot": [24, 25], "diverg": 24, "scheme": 24, "hard": 24, "vmin": 24, "vmax": 24, "diverging_palett": 24, "220": 24, "200": 24, "set_xticklabel": 24, "get_xticklabel": 24, "horizontalalign": 24, "657042869641295": 24, "6493527188260838": 24, "8058242481000952": 24, "asymmetri": [24, 26], "tailed": 24, "2867917004538591": 24, "3146639385893346": 24, "nearli": 24, "enough": 24, "claim": 24, "hypothes": [24, 25, 27], "ii": 24, "popmean": 24, "811761283140333": 24, "0619222323076622e": 24, "compel": 24, "manner": 24, "coincid": 24, "spuriou": 24, "briefli": [24, 26], "main": 24, "seller": 24, "appendix": [24, 26], "visualis": 24, "8151e63ce8f0": 24, "boadziedaniel": 24, "890dc0e79799": 24, "datasciencedojo": 24, "ipykernel_145665": [], "heavili": 25, "mean_valu": 25, "median_valu": 25, "mode_valu": 25, "oversimplifi": 25, "realiti": [25, 30], "complic": 25, "stori": 25, "symmetri": [25, 26], "interquartil": [25, 26], "whisker": [25, 26], "brief": 25, "clariti": 25, "sure": 25, "narr": 25, "meaningless": 25, "analysis_result": 25, "variance_valu": 25, "std_dev_valu": 25, "nstat": 25, "stat_nam": 25, "stat_valu": 25, "442111402741325": 25, "1711473380358497": 25, "0821956098764445": 25, "3110148731408575": 25, "02454362762448039": 25, "15666405977275194": 25, "5321522309711284": 25, "8385121764551762": 25, "3559174666826799": 25, "market": 25, "hcbravo": 25, "introdatasci": 25, "bookdown": 25, "econometricstutor": 25, "expand": 26, "deepli": 26, "chart": 26, "symmetr": 26, "evenli": 26, "longer": 26, "peak": 26, "unimod": 26, "bimod": 26, "multimod": 26, "spiki": 26, "hide": 26, "value1": 26, "value2": 26, "valuen": 26, "skyblu": 26, "freedman": 26, "diaconi": 26, "disregard": 26, "quartil": 26, "span": 26, "q2": 26, "side": [26, 31], "reli": [26, 28, 30], "descriptive_stat": 26, "methodolog": 26, "plotli": 26, "machinelearningplu": 26, "oreilli": 26, "9781491912126": 26, "ch04": 26, "interconnected": 27, "strength": 27, "direct": 27, "wherea": 27, "monoton": 27, "rho": 27, "d_i": 27, "r_": 27, "rg": 27, "rg_x": 27, "rg_y": 27, "pinpoint": 27, "pearson_corr": 27, "spearman_corr": 27, "cm": 27, "causat": 27, "meet": [27, 28], "corr_matrix": 27, "surpris": 27, "thereof": 27, "deliver": 27, "stage": [27, 30], "thoughtfulli": 27, "geo": 27, "fu": 27, "berlin": 27, "de": 27, "soga": 27, "inferenti": 27, "sound": 28, "heart": 28, "elev": 28, "summat": 28, "unpredict": 28, "ss": 28, "aa": 28, "randomli": 28, "incorrectli": 28, "faster": [28, 31], "intens": 28, "jump": 28, "150": 28, "virginica": 28, "versicolor": 28, "petal": 28, "disord": 28, "decid": 28, "criterion": 28, "puriti": 28, "decisiontreeclassifi": 28, "clf_entropi": 28, "y_pred_entropi": 28, "clf_gini": 28, "y_pred_gini": 28, "importances_entropi": 28, "feature_importances_": 28, "importances_gini": 28, "9777777777777777": 28, "agre": 28, "worth": 28, "redund": 28, "tweak": 28, "prune": 28, "joint": 28, "properli": 28, "tricki": 28, "invari": 28, "suffer": 28, "causal": [28, 30], "misinterpret": 28, "feature_select": 28, "mutual_info_classif": 28, "x_normal": 28, "mi": 28, "08486414": 28, "49537028": 28, "24562179": 28, "9858617": 28, "99351315": 28, "df1": 28, "df2": 28, "shapiro": 28, "leven": 28, "bartlett": 28, "hoc": 28, "factori": 28, "selectkbest": 28, "f_classif": 28, "k_best_featur": 28, "score_func": 28, "pvalues_": 28, "scores_": 28, "6f": 28, "588": 28, "235294": 28, "119": 28, "264502": 28, "364461": 28, "1179": 28, "034328": 28, "959": 28, "324406": 28, "systemat": 28, "forward": 28, "justifi": 28, "statsmodel": 28, "api": 28, "sm": 28, "label_encod": 28, "forward_select": 28, "significance_level": 28, "initial_featur": 28, "tolist": 28, "best_featur": 28, "remaining_featur": 28, "new_pval": 28, "new_column": 28, "ol": 28, "add_const": 28, "pvalu": 28, "min_p_valu": 28, "idxmin": 28, "selected_featur": 28, "pure": 28, "accuracy_entropi": 28, "accuracy_gini": 28, "deem": 28, "argsort": 28, "barh": 28, "ytick": 28, "features_to_keep_entropi": 28, "features_to_keep_gini": 28, "refin": 28, "technic": 28, "realm": [28, 30], "clf_entropy_deep": 28, "max_depth": 28, "y_pred_entropy_deep": 28, "clf_gini_deep": 28, "y_pred_gini_deep": 28, "victorzh": 28, "mlearn": 28, "82c2123bd548": 28, "codex": 28, "cd9f99a26e0d": 28, "advanc": [29, 30, 32], "pip": [30, 31], "cornerston": 30, "importantli": 30, "contrast": 30, "counterpart": 30, "upcom": 30, "reserv": 30, "entail": 30, "establish": 30, "slope": 30, "indpend": 30, "hat": 30, "beta": 30, "_1": 30, "_0": 30, "isol": 30, "still": 30, "consequ": 30, "foot": 30, "_i": 30, "2_i": 30, "wors": 30, "linearregress": [30, 31], "intercept_": 30, "coef_": [30, 31], "marker": 30, "o": 30, "vline": 30, "ymin": 30, "ymax": 30, "nsse": 30, "fontsiz": 30, "bbox": 30, "dict": 30, "facecolor": 30, "yellow": 30, "inferior": 30, "inferior_slop": 30, "inferior_intercept": 30, "inferior_predict": 30, "inferior_ss": 30, "purpl": 30, "shown": 30, "scatterplot": 30, "yet": 30, "dimenion": 30, "clinic": 30, "subspac": 30, "ambient": 30, "human": 30, "meaningfulli": 30, "teach": 30, "bend": 30, "cancel": 30, "penal": 30, "2r": 30, "farther": 30, "pm": 30, "thank": 30, "strictli": [30, 31], "inclin": 30, "mine": 30, "static": 30, "anim": 30, "confabul": [30, 31], "against": 30, "publicli": 30, "toi": 30, "housing_data": 30, "squarefeet": 30, "bedroom": 30, "bathroom": 30, "850": 30, "200000": 30, "suburban": 30, "900": 30, "205000": 30, "urban": 30, "1200": 30, "210000": 30, "rural": 30, "950": 30, "215000": 30, "220000": 30, "ipykernel_145702": [], "737031205": 30, "aim": 30, "wasn": 30, "memor": 30, "2d": 30, "suffici": 30, "footag": 30, "sq": 30, "ft": 30, "107": 30, "6641786": 30, "103044": 30, "81439951799": 30, "datapoint": 30, "\u03b20": [], "\u03b21x1": [], "\u03b22x2": [], "\u03b2nxny": [], "\u03b21": [], "\u03b22": [], "\u03b2n": [], "estat": [], "l1": [], "environment": 31, "symptom": [], "scientiast": 32, "week": 32, "supervis": 32, "unsupervis": 32, "reduct": 32, "capston": 32, "project": 32, "join": 32, "invit": 32, "v4dsssc5": 32, "028972567226124957": [], "380253": [], "108": [], "110": [], "ipykernel_148464": [], "ipykernel_148499": [], "ipykernel_148533": [], "ipykernel_148570": [], "ipykernel_148597": [], "ipykernel_148635": [], "ipykernel_148671": [], "ipykernel_148721": [], "ipykernel_148756": [], "unlabel": 30, "y_intercept": 30, "ipykernel_150564": [], "5113710410031654": [], "647975": [], "145": [], "111": [], "165": [], "115": [], "137": [], "144": [], "121": 12, "146": [], "143": [], "179": [], "ipykernel_208140": [], "ipykernel_208178": [], "ipykernel_208211": [], "ipykernel_208253": [], "ipykernel_208280": [], "ipykernel_208323": [], "ipykernel_208363": [], "ipykernel_208425": [], "ipykernel_208460": [], "x_n": 31, "practition": 31, "beta_0": 31, "beta_1x_1": 31, "beta_2x_2": 31, "beta_nx_n": 31, "beta_1": 31, "beta_2": 31, "beta_n": 31, "hold": 31, "homoscedast": 31, "inflat": 31, "vif": 31, "peek": 31, "hope": 31, "achiev": 31, "incom": 31, "spending_scor": 31, "hopefulli": 31, "ye": 31, "customer_data2": 31, "x_var": 31, "y_var": 31, "reg": 31, "gap": [], "load_csv": [], "illustr": [], "mpl_toolkit": [], "mplot3d": [], "axes3d": [], "rand": [], "fig": 31, "add_subplot": [], "set_xlabel": [], "set_ylabel": [], "set_zlabel": [], "real_est": [], "mean_squared_error": 31, "r2_score": 31, "r2": 31, "reader": [], "154": [], "54000": [], "rows2": [], "age_coeff": [], "income_coeff": [], "14400000000": [], "30000": [], "120000": [], "15000": [], "1625": [], "36562500000000003": [], "015625": [], "4625000000000001": [], "990625": [], "rows3": [], "051576000000004": [], "62000": [], "942021555555556": [], "wb": [], "writer": [], "stdin": [], "listcomp": [], "attributeerror": [], "_csv": [], "writerow": [], "byte": [], "newlin": [], "6508227309087278": 9, "276254": 9, "132": 12, "109": 12, "ipykernel_237581": 15, "ipykernel_237615": 17, "ipykernel_237648": 19, "ipykernel_237687": 20, "ipykernel_237713": 21, "ipykernel_237751": 22, "ipykernel_237786": 24, "ipykernel_237837": 25, "ipykernel_237871": 30, "suptitl": 31, "versu": 31, "spend": 31, "eventu": 31, "customer_data": 31, "rare": 31, "x_test_scaled_df": 31, "set_titl": 31, "explanatori": 31, "disproportion": 31, "penalti": 31, "undesir": 31, "punish": 31, "732": 31, "3551245668029": 31, "027105564211052702": 31, "24544393": 31, "72516579": 31, "put": 31, "predict_original_scale_datafram": 31, "input_df": 31, "input_sc": 31, "50000": 31, "crunch": 31, "57488877753046": 31, "diabet": 31, "toy_dataset": 31, "abl": 31, "load_diabet": 31, "as_fram": 31, "bmi": 31, "bp": 31, "s1": 31, "s2": 31, "s3": 31, "s4": 31, "s5": 31, "s6": 31, "038076": 31, "050680": 31, "061696": 31, "021872": 31, "044223": 31, "034821": 31, "043401": 31, "002592": 31, "019907": 31, "017646": 31, "001882": 31, "044642": 31, "051474": 31, "026328": 31, "008449": 31, "019163": 31, "074412": 31, "039493": 31, "068332": 31, "092204": 31, "085299": 31, "044451": 31, "005670": 31, "045599": 31, "034194": 31, "032356": 31, "002861": 31, "025930": 31, "089063": 31, "011595": 31, "036656": 31, "012191": 31, "024991": 31, "036038": 31, "034309": 31, "022688": 31, "009362": 31, "005383": 31, "036385": 31, "003935": 31, "015596": 31, "008142": 31, "031988": 31, "046641": 31, "151": 31, "206": 31, "135": 31, "fun": 31, "statolog": 31}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"100": [0, 2, 32], "dai": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "machin": [0, 1, 2, 11, 14, 32], "learn": [0, 1, 2, 11, 14, 29, 30, 32], "challeng": [0, 1, 8, 32], "overview": [0, 2, 17, 22, 30, 32], "cours": [0, 4, 10, 16, 23, 29, 32], "structur": [0, 2, 4, 7, 8, 9, 10, 16, 23, 29, 32], "modul": [0, 1, 2, 4, 9, 10, 16, 23, 29], "1": [0, 1, 2, 4, 5, 7, 9, 10, 11, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28], "introduct": [0, 1, 2, 4, 10, 11, 12, 13, 14, 15, 17, 21, 22, 24, 25, 28, 30, 31], "python": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "basic": [0, 1, 2, 4, 5, 7, 9, 10, 11, 12, 13, 15, 17, 20, 30], "mathemat": [0, 1, 2, 4, 10, 13, 14, 15, 18, 21, 22, 27, 30], "week": [0, 1, 2, 4, 9, 10, 16, 23, 29], "2": [0, 1, 2, 4, 6, 7, 10, 11, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "data": [0, 1, 2, 6, 7, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 30], "preprocess": [0, 1, 2, 16, 17, 18, 21, 23, 31], "exploratori": [0, 1, 2, 16, 23, 24], "analysi": [0, 1, 2, 16, 19, 21, 22, 23, 24, 25, 26, 27, 28, 30], "3": [0, 1, 2, 7, 11, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "4": [0, 1, 2, 8, 11, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "supervis": [0, 1, 2, 29, 30], "regress": [0, 1, 2, 20, 28, 29, 30, 31], "classif": [0, 1, 2, 19, 29], "5": [0, 1, 2, 9, 11, 13, 18, 19, 20, 21, 22, 24, 29], "6": [0, 1, 2, 11, 19, 20, 21, 24, 29], "unsupervis": [0, 1, 2, 30], "dimension": [0, 1, 2], "reduct": [0, 1, 2], "7": [0, 1, 2, 12, 19, 21], "9": [0, 1, 2, 14], "deep": [0, 1, 2, 22, 25], "foundat": [0, 1, 21, 30], "10": [0, 1, 2, 15], "12": [0, 1, 2, 18, 19], "advanc": [0, 1, 2, 11, 18, 20, 24, 26, 28], "current": [0, 1, 2], "trend": [0, 1, 2], "13": [0, 1, 2, 20], "14": [0, 1, 2, 21], "practic": [0, 1, 6, 13, 18, 20, 21, 22, 24, 25, 26, 27, 28], "aspect": [0, 1], "15": [0, 1, 2, 22], "17": [0, 1, 2, 25], "8": [0, 1, 2, 13, 19, 21], "appli": [0, 1, 2, 13, 21, 24], "ai": [0, 1, 2, 9], "ethic": [0, 1, 2], "consider": [0, 1, 18, 20, 21, 22], "18": [0, 1, 2, 26], "19": [0, 1, 2, 27], "capston": [0, 1, 2], "project": [0, 1, 2, 5, 6, 7, 8, 9, 11], "20": [0, 1, 2, 28], "21": [0, 1, 2, 30], "join": 0, "our": 0, "commun": 0, "social": [0, 32], "media": [0, 32], "contact": [0, 9, 32], "daili": [1, 2, 8], "curriculum": [1, 2], "numer": [1, 2, 4, 17], "oper": [1, 2, 4, 6, 11, 12], "concept": [1, 2, 10, 13, 14, 15, 28, 30, 31], "eda": [1, 2, 23, 24, 25], "ensembl": [1, 2], "method": [1, 2, 20, 28, 30], "neural": [1, 2], "network": [1, 2], "11": [1, 2, 17], "convolut": [1, 2], "cnn": [1, 2], "recurr": [1, 2], "rnn": [1, 2], "reinforc": [1, 2], "topic": [1, 2, 11], "mlop": [1, 2], "16": [1, 2, 24], "etl": [1, 2], "process": [1, 2], "transform": [1, 2], "industri": [1, 2], "sector": [1, 2], "applic": [1, 2, 9, 11, 13, 14], "cybersecur": [1, 2], "resourc": [2, 5, 6, 7, 8, 11, 13, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 31], "jupyt": 2, "notebook": 2, "lesson": [2, 8], "syntax": [2, 5, 9], "variabl": [2, 5, 13, 20, 25], "type": [2, 6, 7, 17, 20, 21, 22], "control": [2, 7, 8], "loop": [2, 7], "condit": [2, 8], "statement": [2, 7, 8, 9], "function": [2, 9, 13], "linear": [2, 11, 12, 30, 31], "algebra": [2, 11, 12], "vector": [2, 11], "matric": [2, 12], "matrix": [2, 12, 19, 27], "calculu": [2, 13, 14], "deriv": [2, 13], "integr": [2, 14, 20], "fundament": [2, 14], "theorem": [2, 14, 24], "probabl": [2, 15], "statist": [2, 15, 17, 19, 20, 21, 22, 24, 26], "relev": [2, 15], "distribut": [2, 15, 24, 26], "handl": [2, 20], "miss": [2, 20], "normal": [2, 21], "scale": [2, 17, 21], "us": [2, 13, 14, 17, 20, 21, 27, 28, 30], "encod": [2, 22], "categor": [2, 22], "split": [2, 18, 19, 20, 21, 30], "train": [2, 18, 20, 21, 30], "test": [2, 9, 18, 20, 21, 24, 28, 30], "set": [2, 5, 20, 21], "visual": [2, 11, 20, 21, 22, 24, 25, 27, 30], "implement": [2, 11, 13, 14, 15, 20, 21, 22, 26, 28, 30, 31], "descript": [2, 13, 15, 24, 26], "techniqu": [2, 18, 19, 20, 21, 22, 24, 25, 28], "correl": [2, 19, 27], "featur": [2, 22, 28], "select": [2, 28], "import": [2, 9, 11, 13, 15, 17, 21, 28, 30], "22": [2, 31], "multipl": [2, 11, 12, 31], "23": 2, "polynomi": 2, "lasso": 2, "ridg": 2, "24": 2, "model": [2, 18, 19, 20, 30, 31], "evalu": [2, 18, 20, 31], "metric": [2, 31], "25": 2, "address": 2, "overfit": 2, "underfit": 2, "26": 2, "logist": 2, "27": 2, "k": 2, "nearest": 2, "neighbor": 2, "nn": 2, "algorithm": 2, "28": 2, "support": 2, "svm": 2, "nonlinear": 2, "29": 2, "decis": [2, 28], "tree": 2, "rule": [2, 12, 13], "base": [2, 20], "30": [2, 28], "naiv": 2, "bay": 2, "classifi": 2, "31": 2, "32": 2, "bag": 2, "random": [2, 20, 28], "forest": [2, 28], "33": 2, "boost": 2, "adaboost": 2, "34": 2, "gradient": 2, "gbm": 2, "xgboost": 2, "35": 2, "Their": 2, "36": 2, "cluster": 2, "37": 2, "mean": [2, 24, 25], "differ": [2, 13, 17, 30], "38": 2, "hierarch": 2, "39": 2, "densiti": 2, "dbscan": 2, "40": 2, "gaussian": 2, "mixtur": 2, "gmm": 2, "expect": 2, "maxim": 2, "41": 2, "pca": 2, "42": 2, "43": 2, "singular": 2, "valu": [2, 9, 19, 25], "decomposit": 2, "svd": 2, "Its": 2, "44": 2, "t": 2, "sne": 2, "45": 2, "other": 2, "46": 2, "understand": [2, 7, 9, 13, 15, 17, 20, 21, 22, 26, 27, 28, 31], "perceptron": 2, "47": 2, "feedforward": 2, "activ": [2, 11, 12, 13, 17, 21, 22, 24, 25, 26, 27, 28], "48": 2, "backpropag": 2, "49": 2, "loss": 2, "optim": 2, "50": 2, "tune": 2, "perform": [2, 19, 20], "51": 2, "layer": 2, "52": 2, "pool": 2, "architectur": 2, "53": 2, "imag": 2, "54": 2, "55": 2, "transfer": 2, "56": 2, "57": 2, "long": 2, "short": 2, "term": 2, "memori": 2, "lstm": 2, "58": 2, "build": [2, 30], "sequenc": 2, "59": 2, "time": 2, "seri": 2, "60": 2, "util": 2, "natur": [2, 28], "languag": 2, "nlp": 2, "61": 2, "62": 2, "markov": 2, "63": 2, "q": 2, "64": 2, "dqn": 2, "65": 2, "polici": 2, "66": 2, "depth": [2, 18, 19, 25, 26], "67": 2, "gener": [2, 20], "adversari": 2, "gan": 2, "68": 2, "attent": 2, "mechan": 2, "69": 2, "autoencod": 2, "70": 2, "research": 2, "emerg": 2, "ml": [2, 9], "71": 2, "lifecycl": 2, "72": 2, "version": [2, 8], "experi": 2, "track": 2, "73": 2, "ci": 2, "cd": 2, "74": 2, "monitor": 2, "mainten": 2, "75": 2, "tool": 2, "platform": 2, "76": 2, "extract": 2, "77": 2, "78": 2, "load": [2, 18, 20, 21, 22], "databas": 2, "manag": 2, "79": 2, "an": 2, "pipelin": 2, "80": 2, "technolog": 2, "81": 2, "82": 2, "self": 2, "posit": 2, "83": 2, "84": 2, "85": 2, "domain": 2, "86": 2, "bia": 2, "fair": 2, "87": 2, "privaci": 2, "secur": 2, "system": [2, 9], "88": 2, "explain": 2, "transpar": 2, "89": 2, "regul": 2, "complianc": 2, "90": 2, "make": [2, 28], "91": 2, "healthcar": 2, "92": 2, "financ": 2, "93": 2, "retail": 2, "94": 2, "manufactur": 2, "95": 2, "transport": 2, "educ": 2, "etc": 2, "96": 2, "97": 2, "identifi": 2, "threat": 2, "vulner": 2, "98": 2, "detect": 2, "prevent": 2, "99": 2, "case": 2, "studi": 2, "incid": 2, "101": 2, "plan": 2, "102": 2, "104": 2, "develop": [2, 9], "105": 2, "final": [2, 18], "present": 2, "errata": 3, "up": [5, 20], "your": [5, 7, 8, 9, 28], "environ": 5, "hand": [5, 6, 11, 17, 21, 24, 25, 26, 27], "On": [5, 6, 11, 17, 21, 24, 31], "arithmet": [5, 7, 25], "further": [5, 6, 7, 8, 11, 13, 15, 28], "more": 6, "about": 6, "logic": [6, 7], "comparison": [6, 21], "calcul": [6, 12, 13, 19, 26], "solut": [6, 7, 8, 19, 25, 26], "problem": [6, 8, 13], "why": [7, 17, 20], "collect": 7, "The": [7, 12, 13, 15, 31], "while": 7, "rang": [7, 17, 19], "object": [7, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28], "break": 7, "continu": 7, "els": 7, "claus": 7, "combin": 7, "boolean": 7, "exampl": [7, 11, 13, 17, 20, 22, 28, 30], "program": [7, 9], "prime": 7, "number": [7, 9], "checker": 7, "quiz": [7, 9], "task": [7, 24, 26], "If": 8, "thi": 8, "Then": 8, "That": 8, "otherwis": 8, "do": [8, 28], "code": [8, 11, 20, 26, 28], "block": [8, 18], "last": 8, "resort": 8, "save": 8, "word": 8, "succinct": 8, "fizzbuzz": 8, "similar": 8, "altern": 8, "temperatur": 8, "analyz": [8, 21, 30], "step": [8, 11, 12, 13, 15, 18, 20, 21, 22, 26, 28], "counter": 8, "write": 9, "first": 9, "paramet": 9, "argument": 9, "arg": 9, "return": 9, "get": 9, "new": 9, "fast": 9, "via": 9, "standard": [9, 17, 19, 21, 24], "librari": [9, 11, 13, 15, 21, 22], "highlight": 9, "everi": 9, "must": 9, "know": 9, "numpi": [9, 17], "mini": 9, "guess": 9, "game": 9, "prompt": 9, "simpl": [9, 30], "book": 9, "warehous": 9, "order": [9, 17], "food": 9, "shop": 9, "cash": 9, "regist": 9, "what": [11, 12, 13], "represent": 11, "repres": 11, "addit": [11, 12, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 31], "subtract": [11, 12], "scalar": 11, "One": [11, 22], "x": 11, "magnitud": 11, "direct": 11, "dot": [11, 12], "product": [11, 12, 13], "definit": [11, 30], "geometr": 11, "interpret": [11, 19, 26, 28], "properti": [11, 12], "cross": [11, 18, 19], "norm": 11, "real": [11, 13], "world": [11, 13], "comput": [11, 27], "graphic": [11, 13], "simul": 11, "2d": 11, "movement": 11, "physic": 11, "engin": 11, "scienc": [11, 15], "summari": [11, 17, 19, 21, 22], "conclud": 11, "thought": 11, "field": 11, "beginn": 11, "necessari": [11, 15, 21, 22], "creat": [11, 12, 26], "grid": 11, "defin": [11, 13], "plot": [11, 20, 24, 25, 26], "format": 11, "displai": [11, 13, 17], "master": [12, 24, 26], "core": 12, "complex": 12, "element": 12, "wise": [12, 19], "transpos": 12, "invers": 12, "flip": 12, "revers": 12, "instruct": [12, 24], "prerequisit": [13, 14, 15, 18, 20, 21, 22, 24, 25], "ar": [13, 17], "rate": 13, "chang": 13, "slope": 13, "tangent": 13, "line": [13, 30], "notat": 13, "formula": [13, 20, 28], "power": 13, "result": [13, 28], "constant": 13, "sum": 13, "quotient": 13, "A": [13, 22, 28], "view": 13, "best": [13, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30], "conclus": [13, 15, 19, 25], "expand": [15, 22], "uncertainti": 15, "inferenti": [15, 24], "goal": 17, "workflow": 17, "setup": 17, "In": [17, 18, 19, 25, 26], "abov": [17, 30], "we": 17, "column": 17, "mode": [17, 24, 25], "could": 17, "you": 17, "non": 17, "would": 17, "varianc": [17, 19, 24], "deviat": [17, 19, 24], "between": [17, 30], "panda": 17, "quartil": [17, 19], "interquartil": [17, 19], "explor": [18, 19, 20, 21, 28], "valid": [18, 19], "theoret": [18, 30], "background": 18, "principl": [18, 27], "stratifi": 18, "roll": 18, "homework": [18, 19, 20, 24, 25, 26, 27], "assign": [18, 19, 20, 24, 25, 26, 27], "access": 18, "dataset": [18, 19, 20, 21, 22, 26, 27, 28, 30], "note": 18, "leakag": [18, 20, 21], "qualiti": [19, 25, 26, 27], "wine": [19, 25, 26, 27], "iqr": 19, "notabl": 19, "accuraci": [19, 28], "review": 19, "follow": 19, "overal": 19, "observ": 19, "report": [19, 24, 25, 26], "class": 19, "score": [19, 21], "imput": 20, "fill": 20, "ag": 20, "median": [20, 24, 25], "how": 20, "knn": 20, "mnar": 20, "Not": 20, "approach": 20, "augment": 20, "impact": 20, "histogram": [20, 24, 25, 26], "scatter": 20, "two": [20, 30], "littl": 20, "s": [20, 27, 28], "mcar": 20, "rpy2": 20, "instal": 20, "r": 20, "packag": 20, "tip": 20, "discern": 20, "comprehens": [21, 24, 26], "z": 21, "min": 21, "max": 21, "iri": [21, 28], "post": [21, 22], "analyt": [21, 28], "assess": [21, 28], "effect": 21, "implic": 22, "binari": 22, "high": 22, "cardin": 22, "hot": 22, "nomin": 22, "label": 22, "ordin": 22, "context": 22, "cabin": 22, "embark": 22, "pclass": 22, "dive": [22, 25], "titan": 22, "identif": 22, "b": 22, "c": [22, 30], "boxplot": [24, 25], "violin": [24, 25], "pair": [24, 25], "heatmap": [24, 27], "skew": 24, "kurtosi": 24, "sampl": 24, "central": [24, 25], "limit": 24, "hypothesi": 24, "tendenc": 25, "averag": 25, "middl": 25, "most": 25, "frequent": 25, "compar": 25, "measur": 25, "templat": 25, "dispers": 25, "find": 25, "discuss": 25, "box": 26, "detail": [26, 28], "requir": [26, 28], "compil": 26, "signific": 27, "pearson": 27, "spearman": 27, "coeffici": 27, "rank": 27, "common": 27, "pitfal": 27, "With": 28, "part": 28, "entropi": 28, "sum_": 28, "i": 28, "n": 28, "p_i": 28, "log_2": 28, "inform": 28, "gain": 28, "informationgain": 28, "v": 28, "frac": 28, "s_v": 28, "gini": 28, "impur": 28, "vs": 28, "when": 28, "which": 28, "conceptu": 28, "think": 28, "minut": 28, "filter": 28, "mutual": 28, "don": 28, "ts": 28, "carefulli": 28, "consid": 28, "anova": 28, "f": 28, "wrapper": 28, "stepwis": 28, "pseudo": 28, "embed": 28, "purpos": 30, "explan": 30, "equat": [30, 31], "y": 30, "mx": 30, "hyperplan": 30, "relat": 30, "dimens": 30, "fit": 30, "least": 30, "squar": 30, "scikit": 30, "matplotlib": 30, "hous": 30, "predict": 30, "price": 30, "excercis": 30, "reader": [30, 31], "outlin": [], "onli": [], "kei": 31, "intro": [], "draft": [], "starter": [], "overviewdemo": [], "concept1": [], "demo1": [], "concept2": [], "demo2": [], "exercis": 31, "customer_data": [], "csv": [], "look": [], "like": [], "static": [], "let": [], "give": [], "some": [], "shape": [], "For": 31}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["Week_00/00_Overview", "Week_00/00a_DailyChallenge", "Week_00/00b_DailyResources", "Week_00/01_Errata", "Week_01/001_Overview", "Week_01/Lesson_01", "Week_01/Lesson_02", "Week_01/Lesson_03", "Week_01/Lesson_04", "Week_01/Lesson_05", "Week_02/002_Overview", "Week_02/Lesson_06", "Week_02/Lesson_07", "Week_02/Lesson_08", "Week_02/Lesson_09", "Week_02/Lesson_10", "Week_03/003_Overview", "Week_03/Lesson_11", "Week_03/Lesson_12", "Week_03/Lesson_12solution", "Week_03/Lesson_13", "Week_03/Lesson_14", "Week_03/Lesson_15", "Week_04/004_Overview", "Week_04/Lesson_16", "Week_04/Lesson_17", "Week_04/Lesson_18", "Week_04/Lesson_19", "Week_04/Lesson_20", "Week_05/005_Overview", "Week_05/Lesson_21", "Week_05/Lesson_22", "Week_05/Lesson_23", "index"], "filenames": ["Week_00/00_Overview.md", "Week_00/00a_DailyChallenge.md", "Week_00/00b_DailyResources.md", "Week_00/01_Errata.md", "Week_01/001_Overview.md", "Week_01/Lesson_01.ipynb", "Week_01/Lesson_02.ipynb", "Week_01/Lesson_03.ipynb", "Week_01/Lesson_04.ipynb", "Week_01/Lesson_05.ipynb", "Week_02/002_Overview.md", "Week_02/Lesson_06.ipynb", "Week_02/Lesson_07.ipynb", "Week_02/Lesson_08.ipynb", "Week_02/Lesson_09.ipynb", "Week_02/Lesson_10.ipynb", "Week_03/003_Overview.md", "Week_03/Lesson_11.ipynb", "Week_03/Lesson_12.ipynb", "Week_03/Lesson_12solution.ipynb", "Week_03/Lesson_13.ipynb", "Week_03/Lesson_14.ipynb", "Week_03/Lesson_15.ipynb", "Week_04/004_Overview.md", "Week_04/Lesson_16.ipynb", "Week_04/Lesson_17.ipynb", "Week_04/Lesson_18.ipynb", "Week_04/Lesson_19.ipynb", "Week_04/Lesson_20.ipynb", "Week_05/005_Overview.md", "Week_05/Lesson_21.ipynb", "Week_05/Lesson_22.ipynb", "Week_05/Lesson_23.ipynb", "index.rst"], "titles": ["100 Days of Machine Learning Challenge", "Daily Challenge Curriculum", "Daily Curriculum Resources", "Errata", "Course Structure", "Day 1: Python Basics - Syntax, Variables", "Day 2: Python Data Types", "Day 3: Control Structures - Loops", "Day 4: Control Structures - Conditionals", "Day 5: Functions and Modules", "Course Structure", "Day 6: Linear Algebra - Vector Operations in Python", "Day 7: Linear Algebra - Matrices and Matrix Operations", "Day 8: Calculus - Derivatives, Concept and Applications", "Day 9: Calculus - Integrals, Fundamental Theorems, and Applications in Machine Learning", "Day 10: Probability and Statistics - Basic Concepts, Relevant Distributions - Expanded", "Course Structure", "Day 11: Introduction to Data Preprocessing in Python", "Day 12: In-Depth Exploration of Data Splitting Techniques in Python with Cross-Validation", "Day 12: In-Depth Exploration of Data Splitting Techniques - Solution", "Day 13: Advanced Techniques for Handling Missing Data in Python", "Day 14: Data Normalization and Scaling using Python", "Day 15: Encoding Categorical Data in Python - Expanded with Mathematical Implications", "Course Structure", "Day 16: Comprehensive EDA and Data Visualization in Python", "Day 17: In-Depth EDA and Central Tendency in Python", "Day 18: In-Depth Analysis of Histograms and Box Plots in Python", "Day 19: Correlation Analysis using Python", "Day 20: Advanced Feature Selection and Importance in Python - With Iris Dataset", "Course Structure", "Day 21 - Introduction to Regression Analysis in Python", "Day 22: Implementing Multiple Linear Regression in Python", "Day 23: Advanced Regression Techniques", "100 Days of Machine Learning Challenge"], "terms": {"welcom": [0, 6, 33], "comprehens": [0, 1, 2, 12, 18, 19, 27, 28, 30, 31, 33], "journei": [0, 5, 6, 13, 28, 33], "world": [0, 1, 2, 6, 9, 14, 20, 30, 33], "tailor": [0, 2, 33], "divers": [0, 2, 6, 9, 12, 19, 33], "audienc": [0, 33], "includ": [0, 1, 2, 5, 9, 11, 12, 13, 14, 15, 18, 20, 21, 22, 24, 26, 28, 29, 30, 31, 32, 33], "aspir": [0, 33], "scientist": [0, 30], "profession": [0, 33], "relat": [0, 1, 2, 9, 12, 19, 20, 27, 33], "field": [0, 2, 12, 13, 15, 30, 31, 33], "enthusiast": [0, 33], "thi": [0, 2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32, 33], "program": [0, 1, 2, 4, 5, 6, 8, 10, 11, 13, 14, 15, 18, 33], "design": [0, 9, 11, 13, 17, 28, 32, 33], "individu": [0, 2, 5, 26, 27, 33], "high": [0, 1, 2, 9, 17, 19, 26, 27, 28, 31, 33], "colleg": [0, 2, 33], "level": [0, 9, 15, 17, 19, 22, 24, 26, 27, 33], "algebra": [0, 1, 4, 10, 13, 14, 15, 21, 24, 25, 33], "knowledg": [0, 1, 2, 11, 13, 14, 18, 20, 22, 24, 27, 28, 33], "It": [0, 2, 5, 6, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 21, 25, 27, 28, 30, 31, 32, 33], "offer": [0, 2, 12, 15, 33], "well": [0, 2, 11, 18, 19, 26, 27, 28, 30, 32, 33], "round": [0, 2, 9, 19, 20, 33], "educ": [0, 1, 22, 33], "experi": [0, 1, 5, 15, 28, 33], "through": [0, 1, 2, 4, 5, 6, 7, 8, 13, 20, 21, 22, 25, 26, 30, 32, 33], "video": [0, 2, 12, 33], "lectur": [0, 12, 33], "question": [0, 7, 9, 17, 33], "hand": [0, 1, 2, 9, 28, 30, 33], "tutori": [0, 2, 5, 18, 26, 31, 32, 33], "focu": [0, 1, 2, 4, 5, 10, 16, 23, 24, 26, 29, 30, 33], "topic": [0, 4, 10, 16, 23, 29, 32, 33], "syntax": [0, 1, 4, 6, 8, 10, 11, 33], "linear": [0, 1, 4, 9, 10, 19, 20, 21, 24, 25, 27, 28, 29, 32, 33], "calculu": [0, 1, 4, 10, 29, 33], "statist": [0, 1, 4, 10, 14, 16, 18, 23, 25, 27, 28, 30, 31, 33], "method": [0, 7, 9, 13, 15, 16, 17, 18, 21, 23, 24, 26, 27, 29, 31, 32, 33], "visual": [0, 1, 13, 14, 15, 16, 17, 23, 26, 28, 33], "descript": [0, 1, 12, 16, 19, 23, 25, 33], "algorithm": [0, 1, 7, 11, 12, 13, 14, 18, 21, 28, 29, 30, 31, 32, 33], "decis": [0, 1, 6, 8, 13, 15, 17, 20, 26, 29, 33], "tree": [0, 1, 13, 28, 29, 31, 33], "svm": [0, 1, 13, 29, 33], "techniqu": [0, 1, 14, 15, 16, 23, 29, 30, 31, 33], "reduc": [0, 1, 2, 18, 22, 28, 30, 32, 33], "complex": [0, 1, 2, 5, 7, 8, 9, 11, 18, 20, 24, 28, 31, 32, 33], "cluster": [0, 1, 11, 19, 25, 33], "gaussian": [0, 1, 15, 21, 33], "mixtur": [0, 1, 33], "model": [0, 1, 5, 9, 11, 13, 14, 15, 21, 22, 27, 28, 29, 32, 33], "pca": [0, 1, 33], "t": [0, 1, 5, 6, 9, 12, 13, 15, 19, 20, 22, 24, 26, 27, 28, 30, 31, 32, 33], "sne": [0, 1, 33], "core": [0, 1, 2, 15, 17, 19, 28, 33], "concept": [0, 5, 6, 8, 11, 12, 16, 18, 21, 22, 24, 25, 29, 33], "architectur": [0, 1, 33], "neural": [0, 11, 13, 14, 21, 31, 33], "network": [0, 11, 13, 14, 21, 31, 33], "cnn": [0, 33], "rnn": [0, 33], "imag": [0, 1, 11, 12, 33], "sequenc": [0, 1, 4, 5, 7, 32, 33], "process": [0, 7, 9, 11, 12, 17, 18, 19, 20, 22, 28, 30, 32, 33], "emerg": [0, 1, 33], "reinforc": [0, 7, 33], "transfer": [0, 1, 33], "gan": [0, 1, 33], "attent": [0, 1, 33], "mechan": [0, 1, 11, 12, 20, 33], "operation": [0, 1, 2, 33], "understand": [0, 1, 4, 5, 6, 8, 10, 11, 14, 16, 18, 19, 23, 24, 25, 29, 30, 33], "transform": [0, 11, 12, 18, 19, 21, 22, 26, 28, 31, 32, 33], "mlop": [0, 33], "etl": [0, 33], "applic": [0, 6, 10, 12, 15, 17, 18, 20, 24, 26, 28, 29, 32, 33], "variou": [0, 1, 2, 11, 12, 13, 14, 15, 17, 19, 20, 22, 23, 28, 30, 32, 33], "industri": [0, 33], "healthcar": [0, 1, 31, 33], "financ": [0, 1, 17, 31, 33], "retail": [0, 1, 33], "manufactur": [0, 1, 33], "build": [0, 1, 5, 7, 9, 11, 19, 20, 28, 31, 32, 33], "evalu": [0, 1, 5, 6, 8, 9, 13, 14, 19, 21, 22, 25, 27, 28, 29, 32, 33], "connect": [0, 1, 2, 14], "learner": 0, "expert": [0, 20], "share": [0, 9], "your": [0, 2, 6, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 30, 31, 32], "insight": [0, 1, 2, 17, 19, 20, 22, 24, 25, 26, 27, 31], "particip": 0, "discuss": [0, 2, 24, 26, 27, 30], "collabor": 0, "start": [0, 2, 5, 7, 9, 12, 24, 30], "date": [0, 5, 9, 17], "januari": 0, "1st": [0, 22], "2024": [0, 9], "twitter": [0, 33], "100daysml": [0, 33], "reddit": [0, 33], "r": [0, 1, 2, 9, 11, 15, 27, 28, 29, 30, 31, 32, 33], "discord": [0, 33], "us": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 18, 19, 22, 23, 24, 25, 26, 31, 32, 33], "websit": [0, 2, 33], "http": [0, 2, 5, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 33], "www": [0, 2, 5, 15, 17, 18, 20, 21, 22, 25, 26, 27, 28, 31, 33], "100daysofml": [0, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 33], "com": [0, 2, 5, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 33], "we": [0, 5, 6, 9, 11, 12, 13, 15, 20, 21, 25, 26, 27, 28, 30, 31, 32], "ar": [0, 2, 5, 6, 7, 8, 9, 11, 12, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "excit": 0, "embark": [0, 20, 21, 27, 28], "explor": [0, 1, 2, 4, 6, 10, 13, 14, 15, 16, 22, 23, 25, 26, 27, 29, 30, 31], "discoveri": 0, "you": [0, 2, 5, 6, 7, 9, 11, 12, 13, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "let": [0, 5, 9, 11, 12, 13, 14, 15, 20, 26, 28, 30, 31, 32], "s": [0, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 30, 31, 32], "grow": [0, 32], "togeth": [0, 12, 32], "skill": [1, 6, 8, 13, 15, 20, 21, 22, 24, 25, 26, 28, 30], "type": [1, 4, 5, 9, 12, 15, 16, 19, 23, 24, 25, 26, 28, 30], "control": [1, 4, 6, 12, 32], "structur": [1, 5, 11, 12, 20, 22, 24, 26], "dai": [1, 4, 10, 16, 23, 29], "variabl": [1, 4, 6, 7, 9, 12, 17, 18, 19, 21, 22, 24, 26, 27, 28, 30, 31, 32], "assign": [1, 2, 4, 5, 8, 9, 12, 21, 28], "math": [1, 2, 4, 7, 9, 10, 15, 16, 18, 23, 29], "arithmet": [1, 2, 4, 6, 17], "differ": [1, 4, 5, 6, 7, 8, 9, 11, 12, 15, 19, 20, 22, 24, 25, 26, 27, 28, 31, 32], "logic": [1, 2, 4, 5, 8, 22], "calcul": [1, 2, 4, 7, 9, 10, 11, 14, 17, 18, 24, 25, 27, 28, 30, 32], "loop": [1, 4, 5, 6, 8, 9, 25, 30], "construct": [1, 4, 26, 28, 30], "while": [1, 2, 4, 5, 9, 11, 13, 17, 19, 20, 22, 24, 27, 28, 30, 32], "condit": [1, 4, 5, 6, 7, 9, 11, 13, 30], "statement": [1, 4, 5, 6, 12], "elif": [1, 2, 4, 7, 8, 9], "els": [1, 2, 4, 8, 9, 15, 28], "flow": [1, 4], "implement": [1, 4, 10, 16, 18, 19, 23, 24, 25, 29, 32], "function": [1, 4, 5, 6, 7, 14, 17, 20, 21, 27, 28, 29, 30, 32], "defin": [1, 2, 4, 5, 7, 8, 9, 12, 14, 20, 22, 24, 28], "write": [1, 4, 5, 6, 7, 8, 12, 24, 25, 27], "formula": [1, 4, 11, 12, 17, 18, 21, 22, 25, 27, 30], "vector": [1, 10, 12, 13, 31], "work": [1, 2, 5, 7, 10, 12, 13, 20, 21], "perform": [1, 6, 9, 10, 11, 12, 14, 15, 17, 18, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "matric": [1, 10, 11, 22, 24], "matrix": [1, 9, 10, 18, 24, 32], "deriv": [1, 10, 14, 31], "integr": [1, 10], "fundament": [1, 6, 7, 8, 10, 11, 12, 13, 15, 26, 28, 29, 30], "theorem": [1, 10, 18], "simpl": [1, 2, 7, 10, 11, 18, 21, 24, 29, 31, 32], "probabl": [1, 5, 10, 14, 18, 25, 28, 32], "relev": [1, 9, 10, 11, 17, 19], "distribut": [1, 10, 11, 12, 14, 17, 18, 19, 20, 21, 22, 23, 25, 27, 28, 31], "prepar": [1, 2, 17, 20, 21, 22, 28, 31], "import": [1, 5, 7, 12, 14, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 31, 32], "scale": [1, 11, 16, 18, 19, 20, 28, 31, 32], "split": [1, 12, 13, 16, 28, 31, 32], "train": [1, 11, 13, 16, 17, 19, 22, 28, 31, 32], "test": [1, 5, 6, 7, 8, 15, 16, 19, 22, 27, 31, 32], "set": [1, 7, 15, 16, 17, 18, 19, 22, 25, 27, 28, 30, 31, 32], "random": [1, 7, 9, 12, 15, 16, 18, 30, 32], "sampl": [1, 2, 9, 15, 16, 17, 18, 19, 26, 27, 28, 30], "stratifi": [1, 2, 16, 30], "principl": [1, 2, 14, 16, 20, 21, 24], "handl": [1, 8, 9, 11, 12, 16, 17, 18, 19, 21, 28, 30, 31], "miss": [1, 16, 17, 18, 19, 21, 24, 28, 31], "detect": [1, 16, 17, 18, 21, 28, 31], "imput": [1, 2, 16, 17], "rational": [1, 2, 16, 20, 21, 22], "normal": [1, 11, 15, 16, 17, 18, 19, 20, 24, 27, 28, 31, 32], "about": [1, 2, 7, 9, 13, 15, 16, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 31], "featur": [1, 5, 6, 9, 11, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 30, 31, 32], "z": [1, 2, 9, 11, 12, 16, 17, 30], "score": [1, 2, 9, 16, 17, 18, 26, 28, 31, 32], "min": [1, 2, 16, 17, 19, 22, 28, 32], "max": [1, 2, 16, 17, 19, 22, 32], "encod": [1, 16, 18, 19, 21, 31], "categor": [1, 8, 16, 17, 18, 19, 20, 21, 25, 28, 30, 31], "binari": [1, 2, 9, 16, 18], "one": [1, 2, 6, 7, 8, 9, 11, 16, 17, 18, 19, 22, 26, 27, 28, 30, 31], "hot": [1, 2, 8, 16, 31], "label": [1, 2, 13, 14, 16, 18, 20, 21, 24, 26, 28, 30, 31, 32], "implic": [1, 2, 16, 21, 24, 25, 26], "graphic": [1, 17, 23, 30], "represent": [1, 2, 12, 14, 18, 19, 21, 22, 23, 24, 26, 32], "measur": [1, 2, 9, 11, 13, 15, 17, 18, 19, 23, 24, 27, 28, 30, 31], "central": [1, 2, 15, 18, 20, 21, 23, 26], "tendenc": [1, 2, 15, 20, 21, 23, 24, 26], "dispers": [1, 2, 15, 17, 19, 23, 26], "creat": [1, 2, 5, 6, 7, 8, 9, 17, 19, 20, 22, 23, 24, 25, 30, 32], "plot": [1, 2, 5, 13, 14, 15, 17, 18, 19, 21, 22, 23, 27, 28, 30, 31, 32], "histogram": [1, 2, 21, 22, 23, 31], "box": [1, 2, 17, 21, 23, 25], "correl": [1, 21, 22, 23, 24, 25, 28, 31], "its": [1, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 23, 24, 28, 30, 31, 32], "coeffici": [1, 2, 9, 23, 28, 29, 30, 31, 32], "interpret": [1, 2, 5, 8, 13, 15, 21, 22, 23, 24, 25, 27, 29, 30, 31, 32], "select": [1, 9, 13, 18, 20, 21, 23, 24, 27, 30, 32], "inform": [1, 2, 9, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "gain": [1, 2, 19, 23, 24, 25, 26, 27], "gini": [1, 2, 23], "impur": [1, 2, 23], "metric": [1, 18, 19, 20, 22, 23, 28, 29, 32], "kei": [1, 2, 5, 7, 8, 12, 17, 18, 19, 20, 21, 25, 26, 28, 29, 30], "equat": [1, 2, 9, 11, 12, 29, 32], "fit": [1, 2, 18, 19, 20, 21, 22, 28, 29, 31, 32], "22": [1, 7, 8, 9, 12, 17, 20, 21, 22, 29, 32], "multipl": [1, 5, 7, 8, 9, 13, 20, 28, 29, 32], "multivari": [1, 2, 29, 31, 32], "23": [1, 8, 9, 17, 29], "polynomi": [1, 29], "lasso": [1, 29], "ridg": [1, 20, 29], "regular": [1, 2, 11, 14, 29, 31, 32], "24": [1, 7, 8, 9, 12, 17, 29, 32], "mean": [1, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31, 32], "squar": [1, 2, 9, 12, 19, 24, 28, 29, 31, 32], "error": [1, 2, 5, 6, 7, 9, 17, 18, 19, 24, 28, 29, 30, 31, 32], "mse": [1, 2, 9, 29, 31, 32], "root": [1, 2, 29, 31], "rmse": [1, 2, 29, 31], "25": [1, 5, 6, 7, 8, 9, 12, 13, 15, 17, 19, 21, 22, 29, 30, 31, 32], "address": [1, 9, 29, 31, 32], "overfit": [1, 14, 20, 22, 28, 29, 32], "underfit": [1, 29, 32], "strategi": [1, 2, 28, 29, 31], "combat": [1, 2, 29], "bia": [1, 18, 20, 29, 32], "varianc": [1, 2, 15, 18, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32], "tradeoff": [1, 2, 29], "26": [1, 8, 9, 14, 17, 19], "logist": [1, 20, 21, 30], "27": [1, 8, 12, 17, 20, 21, 22], "k": [1, 11, 12, 13, 18, 20, 21, 28, 32], "nearest": [1, 20, 21], "neighbor": [1, 20, 21], "nn": 1, "distanc": [1, 2, 11, 13, 20, 30], "euclidean": [1, 2, 20], "manhattan": [1, 2], "28": [1, 8, 17, 19], "support": [1, 7, 9, 19, 24, 31], "nonlinear": 1, "both": [1, 2, 6, 7, 8, 9, 11, 13, 17, 18, 19, 24, 27, 28, 30, 31], "nonlinearli": 1, "separ": [1, 2, 5, 9, 12, 19, 28, 31], "hyperplan": [1, 2], "margin": [1, 2, 13, 28], "maxim": [1, 24], "kernel": [1, 2, 7, 9, 24], "trick": 1, "29": [1, 7, 8, 17, 19], "rule": [1, 6, 11, 26], "base": [1, 5, 7, 8, 9, 11, 12, 15, 18, 24, 25, 28, 30, 31, 32], "entropi": [1, 2], "30": [1, 6, 8, 12, 15, 17, 21], "naiv": [1, 21], "bay": [1, 21], "classifi": [1, 19, 20, 22, 28], "context": [1, 2, 17, 19, 20, 25, 27, 28, 31, 32], "31": [1, 8, 9, 17, 21, 25], "overview": [1, 24, 32], "combin": [1, 2, 5, 6, 19, 20, 22, 24, 26, 28, 31], "weight": [1, 2, 13, 19, 22, 30], "averag": [1, 2, 9, 13, 15, 17, 19, 20, 30, 31], "32": [1, 8, 12, 17, 19, 21], "bag": 1, "forest": 1, "bootstrap": [1, 2], "role": [1, 2, 7, 11, 12, 13, 14, 17, 20], "33": [1, 9, 17], "boost": 1, "adaboost": 1, "updat": [1, 2, 9, 13, 18, 19], "34": [1, 8, 9, 17, 19, 20, 21, 22, 31], "gradient": [1, 11, 13, 14], "gbm": 1, "xgboost": 1, "descent": [1, 2, 11, 13], "35": [1, 9, 17, 21], "Their": [1, 9, 11, 13], "stack": [1, 2], "blend": [1, 2, 24], "36": [1, 17, 21, 32], "37": [1, 8, 9, 17, 32], "dataset": [1, 2, 7, 17, 24, 25, 31, 32], "centroid": [1, 2], "converg": [1, 2, 11, 21, 31, 32], "criteria": [1, 2, 6, 28], "38": [1, 8, 12, 17, 19], "hierarch": 1, "dendrogram": [1, 2], "linkag": [1, 2], "39": [1, 17, 19, 21], "densiti": [1, 15, 19, 21, 24, 25, 26], "dbscan": 1, "40": [1, 8, 12, 17, 19, 24], "gmm": 1, "expect": [1, 14, 30], "41": [1, 8, 17, 32], "princip": [1, 2], "compon": [1, 2, 11, 30], "covari": [1, 2], "eigenvalu": [1, 2, 11, 12], "eigenvector": [1, 2, 11], "42": [1, 8, 9, 17, 18, 19, 21, 28, 30, 31, 32], "step": [1, 2, 5, 7, 9, 14, 27, 31, 32], "involv": [1, 2, 13, 19, 20, 28, 30], "comput": [1, 2, 5, 9, 12, 13, 14, 17, 19, 20, 28, 30, 32], "43": [1, 8, 17], "singular": 1, "valu": [1, 5, 6, 7, 8, 11, 13, 14, 15, 17, 18, 20, 21, 22, 24, 26, 27, 28, 30, 31, 32], "decomposit": 1, "svd": 1, "Its": 1, "44": [1, 8, 9, 17, 19], "stochast": [1, 2, 11], "embed": [1, 2], "45": [1, 12, 17, 19, 24], "other": [1, 5, 6, 7, 9, 11, 12, 13, 15, 17, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 32], "addit": [1, 2, 5, 6, 7, 9, 13, 19], "like": [1, 2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24, 26, 27, 28, 30, 31, 32], "lda": [1, 2], "autoencod": 1, "behind": [1, 2, 9, 18, 20], "case": [1, 8, 9, 12, 13, 17, 19, 20, 21, 22, 25, 30], "46": [1, 8, 9, 12, 17], "perceptron": 1, "activ": [1, 8, 14, 18, 20], "47": [1, 8, 9, 12, 17, 20, 21, 22, 28, 32], "feedforward": 1, "layer": [1, 25], "neuron": [1, 2], "48": [1, 17], "backpropag": [1, 13, 14], "dive": [1, 2, 15], "The": [1, 2, 5, 6, 8, 9, 11, 14, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30], "chain": [1, 2, 6, 20, 21, 32], "49": [1, 8, 9, 17], "loss": [1, 9, 14], "optim": [1, 6, 11, 13, 14, 30, 32], "focus": [1, 2, 5, 12, 18, 19, 20, 22, 26, 32], "50": [1, 6, 8, 9, 12, 17, 19, 21, 22, 26], "tune": [1, 19, 28, 32], "improv": [1, 2, 8, 9, 17, 19, 21, 24, 28, 32], "hyperparamet": [1, 2, 28], "avoid": [1, 2, 6, 7, 9, 11, 18, 19, 20, 21, 22, 24, 27], "51": [1, 17, 19], "map": [1, 2], "gener": [1, 7, 9, 13, 14, 15, 18, 19, 28, 30, 31, 32], "52": [1, 8, 9, 17, 19, 32], "pool": 1, "spatial": [1, 2], "effect": [1, 2, 7, 9, 11, 12, 13, 18, 20, 24, 25, 26, 28, 30, 31, 32], "53": [1, 8, 17], "task": [1, 2, 5, 8, 11, 12, 18, 20, 21, 25, 27, 30], "filter": [1, 2], "54": [1, 12, 17, 19], "enhanc": [1, 2, 8, 11, 13, 17, 18, 19, 21, 26, 28], "dropout": [1, 2], "batch": [1, 2], "basi": [1, 2, 17, 30], "55": [1, 17, 21, 31], "fine": [1, 2, 28], "extract": [1, 15, 26], "56": [1, 8, 17, 19], "uniqu": [1, 2, 5, 22, 28], "57": [1, 6, 17, 19], "long": [1, 5, 7, 11, 17], "short": [1, 6, 8], "term": [1, 6, 13, 14, 22, 27, 31, 32], "memori": [1, 17, 19], "lstm": 1, "cell": [1, 2, 5, 7, 9, 19, 22, 24, 32], "depend": [1, 2, 5, 7, 8, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31, 32], "58": [1, 8, 17, 19, 21], "time": [1, 7, 9, 12, 13, 15, 17, 18, 20, 24, 30], "59": [1, 8, 17], "seri": [1, 5, 7, 9, 18, 20, 21, 24, 28, 30, 31, 32], "forecast": [1, 2, 30], "60": [1, 6, 8, 12, 17, 19], "util": [1, 9, 11, 13, 20, 24, 30, 31, 32], "natur": [1, 5, 7, 11, 15, 20, 22, 27, 30, 31], "languag": [1, 5, 7, 9, 11], "nlp": [1, 11], "word": [1, 2, 6, 9, 11], "space": [1, 2, 5, 11, 15, 22, 30, 32], "61": [1, 8, 17], "framework": [1, 2, 15], "reward": [1, 2], "make": [1, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17, 20, 22, 24, 25, 26, 30, 31, 32], "62": [1, 8, 17, 20, 21, 22], "markov": 1, "mdp": [1, 2], "rl": 1, "transit": [1, 2], "state": [1, 2, 6, 12, 13, 22, 24], "63": [1, 17], "q": [1, 20, 21, 22], "bellman": [1, 2], "estim": [1, 2, 17, 19, 20, 24, 28, 30, 31, 32], "64": [1, 8, 17], "dqn": 1, "environ": [1, 2, 18, 19, 20, 32], "65": [1, 6, 17, 19], "polici": [1, 18], "ascent": [1, 2], "66": [1, 17], "depth": [1, 27, 28], "67": [1, 8, 17, 19], "adversari": 1, "minimax": [1, 2], "game": [1, 2, 11], "theori": [1, 2, 12, 18, 28], "68": [1, 8, 19], "self": [1, 7, 9], "69": [1, 17], "more": [1, 2, 5, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32], "reconstruct": [1, 2], "latent": [1, 2], "70": [1, 6, 19, 32], "research": 1, "ml": [1, 13, 14, 18, 33], "aih": 1, "latest": [1, 2, 5], "artifici": [1, 2, 11, 20, 22], "intellig": [1, 2, 11], "technolog": 1, "71": [1, 8, 19], "lifecycl": 1, "72": [1, 19], "version": [1, 5], "track": [1, 9, 20], "73": [1, 8], "ci": 1, "cd": 1, "continu": [1, 2, 5, 9, 12, 13, 14, 17, 20, 22, 27, 28, 30, 31], "deliveri": 1, "autom": [1, 2, 7, 11], "valid": [1, 2, 9, 13, 21, 28, 31, 32], "74": [1, 8, 12], "monitor": 1, "mainten": 1, "maintain": [1, 5, 7, 20], "product": [1, 2], "anomali": [1, 2, 20], "drift": [1, 2], "behavior": [1, 2, 6, 9, 13, 20, 21], "75": [1, 12, 17, 19, 21, 22, 31], "tool": [1, 5, 11, 13, 17, 24, 25, 26, 27, 30, 31], "platform": [1, 5], "scalabl": [1, 2], "effici": [1, 2, 7, 8, 9, 11, 13, 17, 18, 22, 28, 32], "76": [1, 8, 12, 19, 21, 22], "load": [1, 9, 11, 17, 19, 24, 25, 26, 27, 28, 31, 32], "queri": [1, 2], "77": [1, 8], "approach": [1, 2, 6, 19, 28, 31], "78": [1, 19], "databas": 1, "manag": [1, 9, 22], "phase": 1, "balanc": [1, 2, 18, 19, 28, 32], "79": [1, 8], "an": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "pipelin": [1, 28, 32], "workflow": [1, 2, 32], "80": [1, 12], "81": 1, "82": [1, 8, 19], "posit": [1, 5, 7, 9, 11, 13, 17, 18, 19, 26, 27, 30], "83": [1, 8, 12, 17], "84": [1, 12], "e": [1, 2, 5, 9, 11, 12, 15, 17, 20, 21, 22, 24, 28, 32], "g": [1, 2, 9, 11, 13, 17, 20, 21, 22, 24, 28, 31, 32], "bert": [1, 2], "gpt": [1, 2], "geometri": [1, 2], "contextu": [1, 2, 19, 20], "85": [1, 32], "domain": [1, 13, 20, 28, 32], "beyond": [1, 2, 26, 28, 30], "vision": [1, 2], "adapt": [1, 2], "issu": [1, 2, 15, 17, 19, 20, 21, 22, 24, 25, 26, 30], "86": [1, 8, 20, 21, 32], "fair": 1, "quantit": [1, 2, 17, 27], "87": 1, "privaci": 1, "secur": 1, "system": [1, 11, 12, 13, 15, 17, 19, 20, 21, 22, 24, 25, 30], "cryptographi": [1, 2, 9], "protect": [1, 2], "88": [1, 8, 19, 32], "explain": [1, 5], "transpar": [1, 20], "need": [1, 2, 6, 7, 9, 12, 17, 19, 20, 21, 22, 28, 32], "explan": [1, 2, 18, 31], "89": [1, 8, 12], "regul": 1, "complianc": [1, 18], "affect": [1, 2, 6, 13, 20, 21, 25, 26, 28], "gdpr": [1, 2], "risk": [1, 2, 18, 32], "assess": [1, 2, 8, 18, 19, 20, 22, 26, 27, 31], "90": 1, "develop": [1, 7, 11, 20, 24], "91": [1, 8, 22], "diagnost": [1, 2], "treatment": [1, 2], "plan": [1, 18], "predict": [1, 2, 9, 11, 13, 15, 18, 19, 20, 24, 27, 28, 31, 32], "health": [1, 2], "92": [1, 8], "fraud": [1, 2], "financi": [1, 2], "93": [1, 12, 19], "custom": [1, 2, 6, 9], "suppli": [1, 2], "demand": [1, 2], "94": [1, 8], "qualiti": [1, 2, 17, 18, 20, 24], "reliabl": [1, 2, 19, 28], "95": [1, 6], "transport": 1, "etc": [1, 11, 30, 32], "broad": [1, 2], "specif": [1, 2, 5, 6, 9, 11, 13, 18, 20, 21, 28, 32], "A": [1, 2, 5, 7, 9, 11, 12, 15, 19, 20, 21, 24, 27, 31, 32], "encompass": 1, "96": [1, 19], "protocol": [1, 2], "encrypt": [1, 2], "97": [1, 8, 9, 19], "identifi": [1, 9, 11, 17, 19, 20, 22, 26, 27, 30], "threat": 1, "vulner": 1, "potenti": [1, 2, 18, 19, 22, 24, 25, 26, 27, 28, 31], "98": [1, 8, 12, 19], "prevent": [1, 14, 18, 20, 21, 22, 30], "pattern": [1, 2, 9, 11, 19, 20, 24, 25, 26, 30], "recognit": [1, 2, 11], "99": [1, 19], "best": [1, 2, 5, 19, 31, 32], "100": [1, 5, 6, 8, 9, 12, 13, 14, 19, 30, 32], "studi": [1, 12, 31], "incid": 1, "real": [1, 2, 14, 20, 28, 30, 31, 32], "forens": [1, 2], "post": [1, 2, 20, 28], "101": [1, 8], "guidanc": [1, 2], "scope": [1, 2, 8, 9], "definit": [1, 2, 9, 12, 14, 19, 32], "feasibl": [1, 2], "102": 1, "104": 1, "throughout": [1, 5, 9], "cours": [1, 2, 11, 12, 17], "problem": [1, 2, 7, 9, 11, 12, 14, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30], "solv": [1, 2, 6, 7, 9, 11, 12, 30], "105": 1, "final": [1, 6, 8, 9, 32], "present": [1, 7, 9, 15, 22, 24, 25, 26, 28, 32], "result": [1, 2, 5, 6, 8, 9, 11, 12, 19, 20, 21, 22, 24, 25, 26, 27, 31, 32], "googl": [2, 5], "edu": 2, "interact": [2, 5, 9, 11, 12, 28, 30, 31, 32], "cover": [2, 12], "realpython": [2, 26, 27], "demonstr": [2, 9, 19, 22, 28, 30], "code": [2, 5, 6, 7, 9, 17, 18, 21, 22, 24, 25, 27, 30, 32], "execut": [2, 5, 7, 8, 9, 32], "comment": [2, 5], "express": [2, 5, 6, 8, 11, 12, 13, 31], "exampl": [2, 5, 6, 9, 15, 21, 31, 32], "numpi": [2, 5, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 27, 28, 30, 32], "np": [2, 9, 11, 12, 13, 14, 15, 17, 19, 20, 21, 28, 30, 32], "number": [2, 5, 6, 8, 11, 12, 13, 15, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 32], "arrai": [2, 9, 11, 12, 15, 17, 30, 32], "w3school": 2, "python_datatyp": 2, "asp": 2, "document": [2, 9, 11, 19, 20, 26, 27, 28, 32], "tutorialspoint": 2, "python_data_structur": 2, "index": [2, 7, 9, 11, 21, 27, 28], "htm": 2, "string": [2, 5, 6, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30, 32], "list": [2, 6, 7, 8, 9, 11, 15, 25, 26, 28], "dictionari": [2, 7, 25], "python_oper": 2, "detail": [2, 9, 15, 19, 22, 27, 31], "comparison": [2, 17, 20, 32], "usag": [2, 7, 17, 18, 19, 20, 27, 28, 31], "check": [2, 6, 7, 8, 9, 13, 17, 19, 20, 21, 24, 27, 28, 31, 32], "practic": [2, 9, 11, 12, 15, 19, 23, 30, 32, 33], "convers": 2, "int": [2, 5, 7, 9], "float_vari": 2, "compar": [2, 5, 6, 18, 20, 21, 22, 24, 26, 28, 30, 31], "dataquest": 2, "io": [2, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28], "python_while_loop": 2, "break": [2, 9, 20, 28], "gloss_python_for_nest": 2, "nest": 2, "iter": [2, 7, 8, 20, 28, 32], "over": [2, 6, 7, 8, 9, 11, 12, 13, 14, 15, 19, 28, 31, 32], "sum": [2, 5, 11, 12, 14, 20, 21, 22, 26, 27, 28, 30, 31], "multi": [2, 17, 19], "counter": 2, "gloss_python_els": 2, "gloss_python_elif": 2, "programiz": 2, "pariti": 2, "modifi": [2, 5, 7, 9, 21], "within": [2, 5, 9, 12, 18, 19, 22, 26, 27, 28, 30], "doc": [2, 31], "org": [2, 5, 13, 15, 17, 19, 25, 27, 28, 31, 32], "es": 2, "html": [2, 19, 25, 26, 27, 28, 31, 32], "offici": 2, "creation": 2, "call": [2, 7, 9, 11, 12, 22, 24, 32], "refer": [2, 5, 6, 8, 11, 12, 30, 31], "guid": [2, 18, 24, 25, 31, 32], "python_modul": 2, "packag": [2, 7, 9, 17, 28, 30], "access": [2, 5, 9, 12, 17, 24], "area": [2, 13, 14, 18, 26], "input": [2, 6, 7, 9, 12, 13, 21, 28, 30, 32], "sqrt": [2, 11, 15, 17, 27], "panda": [2, 5, 9, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "m": [2, 6, 12, 30], "youtub": [2, 15], "watch": [2, 15], "v": [2, 11, 13, 15, 27], "fnk_zzamoss": 2, "khanacademi": [2, 15], "free": [2, 5, 7, 9, 12, 19], "onlin": [2, 30], "exercis": [2, 7, 12, 24, 28, 30], "bvanderlei": 2, "librari": [2, 5, 14, 17, 18, 19, 20, 24, 25, 26, 30], "subtract": [2, 5, 7, 13, 21, 30], "scalar": [2, 12], "dot": [2, 9, 25], "magnitud": [2, 12, 32], "matplotlib": [2, 9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 31, 32], "kyb8iza5au": 2, "mathsisfun": 2, "geeksforgeek": [2, 17, 25, 27, 28], "manipul": [2, 6, 7, 11], "transpos": 2, "invers": 2, "determin": [2, 6, 8, 11, 12, 13, 17, 28, 30, 32], "differenti": [2, 14], "dc": 2, "diff": [2, 13], "intro": [2, 32], "askpython": 2, "sympi": [2, 13, 14], "symbol": [2, 5, 12, 13, 14], "wuvtyaankzm": 2, "composit": 2, "tangent": 2, "line": [2, 5, 7, 8, 9, 12, 17, 19, 22, 24, 25, 26, 31, 32], "ic": 2, "2i44y9hfq4q": 2, "integrand": 2, "simpson": 2, "find": [2, 9, 11, 12, 13, 14, 17, 18, 20, 24, 26, 27, 28, 30, 32], "volum": [2, 11, 13], "done": [2, 7, 9, 18, 31], "lwq1zw": 2, "xhbe": 2, "scipi": [2, 15, 17, 19, 24, 25, 27], "stat": [2, 15, 17, 19, 24, 25], "from": [2, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "median": [2, 15, 17, 19, 21, 26, 31, 32], "standard": [2, 6, 15, 18, 20, 22, 25, 26, 28, 31, 32], "deviat": [2, 15, 21, 22, 25, 26, 28], "boxplot": [2, 21, 26], "hypothesi": [2, 15, 27], "scienc": [2, 5, 9, 12, 14, 18, 24, 26, 28, 30, 32], "mode": [2, 15, 20, 21, 26, 31], "outlier": [2, 17, 19, 20, 21, 24, 25, 26, 27, 31], "determinist": 2, "analyz": [2, 11, 13, 15, 17, 19, 20, 22, 25, 26, 27, 28, 32], "impact": [2, 7, 9, 18, 19, 21, 22, 24, 28], "scikit": [2, 5, 9, 18, 20, 21, 22, 24, 25, 31], "vs": [2, 9, 20, 21, 26, 31, 32], "each": [2, 5, 7, 8, 9, 12, 15, 18, 19, 20, 22, 25, 26, 27, 28, 30, 31, 32], "kaggl": [2, 17, 18, 19, 20, 21, 24], "engin": [2, 12, 13, 14, 17, 18], "One": [2, 13], "between": [2, 6, 7, 8, 9, 11, 12, 13, 14, 18, 19, 20, 21, 22, 24, 27, 28, 31, 32], "cross": [2, 28, 32], "In": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 20, 22, 24, 27, 28, 30, 31, 32], "aspect": [2, 5, 8, 28, 31, 32, 33], "rang": [2, 6, 8, 9, 11, 15, 21, 24, 25, 26, 28, 30], "skew": [2, 17, 19, 20, 25, 26, 27], "galleri": 2, "showcas": 2, "overal": [2, 18, 20, 28], "pearson": [2, 28], "spearman": 2, "heatmap": [2, 19], "wrangl": 2, "hous": [2, 32], "seaborn": [2, 19, 21, 22, 24, 25, 26, 27, 31], "pairplot": [2, 24, 25, 31], "price": [2, 6, 9, 13], "than": [2, 5, 6, 7, 8, 9, 11, 12, 17, 25, 26, 28, 30, 31, 32], "independ": [2, 12, 13, 15, 18, 22, 28, 30, 31, 32], "how": [2, 5, 6, 7, 9, 11, 13, 14, 15, 18, 19, 21, 22, 24, 25, 26, 27, 28, 30, 31], "influenc": [2, 18, 19, 20, 22, 25, 27, 31], "With": [2, 5, 9, 32], "relationship": [2, 11, 13, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 32], "foundat": [2, 4, 6, 10, 11, 14, 15, 16, 17, 18, 25, 33], "accuraci": [2, 18, 21, 22, 25], "efficaci": 2, "limit": [2, 9, 13, 18, 32], "appropri": [2, 18, 20, 21, 24, 25, 30, 31, 32], "deal": [2, 5, 7, 18, 20, 28, 30, 31, 32], "abil": [2, 19], "titan": [2, 20, 21], "outcom": [2, 9, 15, 30, 31], "confus": [2, 9, 18, 19], "datacamp": 2, "provid": [2, 5, 6, 7, 9, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32], "theoret": [2, 24, 28], "path": [2, 18, 19, 22], "assumpt": [2, 20, 24, 27, 28, 31, 32], "conceptu": 2, "masteri": [2, 15], "delv": [2, 6, 22, 25, 26, 27, 28], "underpin": [2, 25, 27], "github": [2, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32], "repositori": 2, "investig": [2, 17, 19, 24, 30], "analyt": [2, 22, 31], "vidhya": 2, "articl": [2, 5, 20, 21], "choos": [2, 9, 14, 18, 20, 21, 24, 25, 26, 27, 28, 32], "nick": 2, "mccullum": 2, "minim": [2, 18, 30, 32], "sse": [2, 30], "built": [2, 5, 28], "beginn": [2, 9], "iri": 2, "also": [2, 5, 6, 8, 9, 11, 14, 18, 19, 20, 24, 25, 26, 28, 32], "group": [2, 6, 17, 18, 19, 26, 28], "point": [2, 5, 7, 9, 11, 13, 14, 15, 18, 19, 20, 24, 25, 26, 27, 30, 32], "recalcul": 2, "format": [2, 9, 17, 30, 31], "abus": 2, "agglom": 2, "divis": [2, 5, 6, 13], "form": [2, 7, 8, 9, 11, 13, 30, 32], "repres": [2, 5, 6, 9, 12, 13, 14, 17, 18, 19, 20, 22, 24, 25, 26, 28, 30, 31, 32], "paramet": [2, 15, 18, 20, 24, 28, 30, 32], "epsilon": [2, 30, 31, 32], "ep": 2, "minpt": 2, "anoth": [2, 5, 9, 11, 27, 28], "found": [2, 5, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30, 32], "renesh": 2, "bedr": 2, "blog": [2, 17, 18, 20, 21, 22, 24, 25, 28], "which": [2, 5, 6, 7, 8, 9, 11, 13, 17, 19, 20, 21, 22, 26, 27, 30, 31, 32], "\u03b5": 2, "vari": [2, 7, 9, 13, 18, 19, 28], "For": [2, 5, 8, 9, 11, 12, 13, 14, 18, 19, 20, 21, 22, 24, 26, 30], "thorough": [2, 13, 15, 24, 27], "excel": [2, 14, 19], "plu": 2, "breast": 2, "cancer": 2, "cifar": 2, "scratch": 2, "necessari": [2, 7, 9, 12, 13, 14, 17, 18, 20, 24, 25, 26, 30, 31, 32], "kindson": 2, "geniu": 2, "particularli": [2, 5, 6, 7, 11, 14, 18, 19, 20, 28, 30, 31, 32], "underli": [2, 19, 21, 24, 28, 31], "benefici": [2, 5, 19, 20, 25, 31], "those": [2, 12, 19, 20, 21, 30, 31], "look": [2, 6, 19, 20, 22, 25, 26, 28, 30, 31], "can": [2, 5, 6, 7, 8, 9, 11, 12, 13, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 31, 32], "decompos": 2, "constitu": 2, "u": [2, 11, 13], "sigma": [2, 15, 17, 18, 30], "\u03c3": [2, 15, 17, 21], "compress": [2, 9, 12], "nois": [2, 20, 26], "To": [2, 9, 11, 12, 13, 19, 20, 21, 30, 32], "recommend": [2, 9, 19, 20], "where": [2, 5, 6, 8, 9, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 27, 28, 30, 31, 32], "ll": [2, 5, 6, 9, 12, 13, 17, 22, 26, 27, 28, 32], "lower": [2, 9, 18, 19, 26, 28, 30, 32], "precursor": 2, "avail": [2, 9, 30], "toward": [2, 19, 30], "often": [2, 5, 6, 7, 8, 9, 11, 12, 13, 17, 20, 26, 28, 30, 32], "have": [2, 5, 6, 9, 11, 12, 13, 19, 20, 21, 22, 28, 30, 31, 32], "discrimin": [2, 21], "class": [2, 7, 17, 18, 22, 28, 31, 32], "bias": [2, 18, 19], "bryn": 2, "mawr": 2, "artificial_neural_network": 2, "ipynb": 2, "relu": 2, "walk": 2, "tensorflow": 2, "kera": [2, 9], "first": [2, 5, 6, 11, 14, 17, 19, 21, 24, 26, 30, 32], "adjust": [2, 11, 21, 28, 30, 31, 32], "relianc": 2, "choic": [2, 5, 7, 9, 20, 27, 28, 32], "crucial": [2, 5, 6, 7, 11, 12, 13, 14, 15, 18, 19, 20, 22, 26, 27, 28, 30, 31], "opendatasci": 2, "emphas": [2, 21], "consid": [2, 8, 9, 13, 14, 17, 19, 20, 21, 25, 26, 27, 30, 31], "size": [2, 9, 11, 12, 18, 19, 24, 28, 30, 32], "varieti": [2, 18], "when": [2, 5, 6, 7, 8, 9, 11, 12, 17, 18, 19, 20, 21, 22, 26, 27, 30, 31, 32], "instanc": [2, 5, 11, 14, 19, 20, 31, 32], "might": [2, 5, 7, 19, 20, 22, 25, 28, 30, 31, 32], "ideal": [2, 13, 18, 20, 21, 22, 27], "larger": [2, 20, 21, 30, 31, 32], "same": [2, 5, 7, 9, 11, 12, 18, 20, 27, 31, 32], "suggest": [2, 19, 25, 27], "most": [2, 7, 8, 9, 17, 19, 20, 22, 24, 27, 28, 30, 32], "target": [2, 7, 19, 20, 21, 27, 28, 30, 31, 32], "output": [2, 6, 9, 12, 13, 22, 24, 28, 30], "larg": [2, 7, 11, 18, 20, 22, 24, 28, 31, 32], "spread": [2, 17, 19, 20, 21, 22, 24, 25, 26], "logarithm": [2, 28], "msle": 2, "mai": [2, 6, 9, 11, 12, 22, 27, 28, 30, 32], "suitabl": [2, 12, 17, 22, 30, 31], "initi": [2, 5, 18, 24, 25, 31], "ad": [2, 9, 11, 12, 25, 28, 30, 32], "rectifi": 2, "unit": [2, 11, 21, 28, 30, 31, 32], "hidden": [2, 21], "quantiti": [2, 9, 11, 12, 14], "especi": [2, 5, 6, 7, 8, 9, 17, 19, 20, 28, 30, 32], "characterist": [2, 18, 19, 20, 22], "learnopencv": 2, "rate": [2, 11, 18, 19, 22, 26], "critic": [2, 24, 26, 28, 32], "signific": [2, 11, 13, 15, 17, 18, 19, 24, 28, 31], "pivot": [2, 11, 13, 14], "pytorch": [2, 9], "immens": 2, "help": [2, 7, 11, 13, 14, 15, 17, 19, 20, 21, 24, 28, 32], "These": [2, 5, 6, 7, 11, 12, 13, 19, 20], "thei": [2, 5, 6, 7, 9, 11, 12, 13, 14, 15, 19, 21, 22, 25, 26, 27, 28, 31, 32], "contribut": [2, 14, 21, 28], "dimens": [2, 12, 13], "produc": [2, 5, 24, 25], "chan": 2, "leverag": [2, 28], "pre": [2, 13, 14, 17], "new": [2, 5, 7, 11, 12, 17, 19, 28, 30, 31, 32], "touch": 2, "exist": [2, 9, 12, 13, 17, 20, 22], "them": [2, 7, 9, 11, 12, 14, 17, 26, 28, 30, 31, 32], "follow": [2, 5, 6, 8, 9, 11, 15, 21, 25, 26, 28, 31, 32], "special": [2, 5, 6, 9, 12], "kind": [2, 12, 22, 31], "complet": [2, 9, 19, 20, 21, 30], "intuit": [2, 6], "ultim": 2, "freecodecamp": 2, "variat": [2, 19], "gate": 2, "challeng": [2, 5, 22, 31], "sequenti": [2, 9], "show": [2, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "extend": [2, 26, 30, 32], "easi": [2, 6, 17, 24, 25], "Into": 2, "friendli": [2, 9], "less": [2, 6, 7, 8, 9, 19, 20, 21, 28, 30, 31], "intimid": 2, "newcom": 2, "agent": 2, "goal": [2, 7, 20, 24, 28], "openai": 2, "gym": [2, 6], "learndatasci": 2, "previous": [2, 5, 28, 30], "mention": 2, "lai": [2, 15], "groundwork": [2, 15, 30], "tradit": [2, 28], "deeper": [2, 6, 28], "mani": [2, 9, 12, 15, 20, 22, 24, 25, 28, 30, 31, 32], "accompani": [2, 9], "instruct": [2, 5], "common": [2, 9, 19, 20, 25, 31, 32], "repurpos": 2, "get": [2, 5, 6, 11, 19, 28, 30, 31, 32], "thing": [2, 7, 9, 11, 32], "two": [2, 5, 7, 9, 11, 12, 13, 17, 21, 22, 25, 26, 27, 31], "simultan": [2, 31], "competit": 2, "respons": [2, 20, 24, 32], "snippet": [2, 28, 30, 32], "translat": [2, 32], "grasp": [2, 6, 13, 19, 27], "text": [2, 5, 11, 18, 28, 30, 32], "denois": 2, "give": [2, 7, 9, 13, 14, 22, 25, 28, 30, 31, 32], "clear": [2, 7, 22, 24, 25, 32], "along": [2, 11, 13, 19, 30, 32], "back": [2, 6, 9, 31], "arxiv": 2, "essenti": [2, 5, 6, 7, 11, 12, 13, 14, 17, 18, 19, 21, 22, 24, 27, 28, 30, 31], "keep": [2, 9, 20, 21, 24, 28, 32], "up": [2, 9, 14, 32], "paper": 2, "vast": [2, 30], "collect": [2, 6, 11, 15], "preprint": 2, "mit": [2, 12], "review": 2, "breakthrough": 2, "written": [2, 8, 9], "novel": 2, "paradigm": 2, "projectpro": 2, "across": [2, 11, 12, 13, 18, 19, 20, 21, 28, 32], "deploy": 2, "container": 2, "kubernet": 2, "ensur": [2, 5, 7, 11, 13, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 31, 32], "robust": [2, 13, 17, 19, 20, 24], "top": [2, 12, 22, 28], "neptun": [2, 28], "landscap": 2, "2023": [2, 21, 28], "cater": 2, "consider": [2, 19, 28, 33], "cloud": [2, 5, 30], "microsoft": 2, "commun": [2, 5, 18, 26, 28], "hub": 2, "host": 2, "codespac": 2, "csv": [2, 9, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "json": [2, 9], "xml": 2, "sourc": [2, 9], "convert": [2, 17, 22, 28, 31, 32], "off": [2, 19, 32], "file": [2, 7, 9, 30], "azur": 2, "cosmo": 2, "db": 2, "storag": 2, "retriev": [2, 5, 7, 9], "log": [2, 9, 26, 28], "streamlin": [2, 32], "sql": 2, "power": [2, 5, 7, 11, 15, 22, 24, 27, 28, 30, 31, 32], "bi": 2, "uva": 2, "dl": 2, "head": [2, 17, 19, 20, 21, 22, 30, 31, 32], "harvard": 2, "llm": 2, "similar": [2, 6, 7, 11, 12, 20, 25, 30, 31], "decod": 2, "examin": [2, 19, 20, 21, 26, 30, 32], "hug": 2, "face": 2, "enabl": [2, 7, 8, 9, 11, 14, 20, 26, 30, 31], "audio": 2, "upon": [2, 9], "broader": [2, 15, 28], "signal": 2, "modif": [2, 9, 18], "outsid": [2, 6, 9, 25, 26, 32], "foster": 2, "opencoursewar": [2, 12], "full": 2, "classroom": 2, "pluralsight": 2, "mitig": 2, "kdnugget": [2, 28], "user": [2, 7, 9], "close": [2, 19, 20, 27, 30], "pertain": 2, "regulatori": 2, "adher": 2, "coursera": [2, 12], "care": [2, 18, 20], "benefit": [2, 11, 31, 32], "stanford": 2, "patient": 2, "visit": 2, "lab": 2, "procedur": [2, 9, 30], "univers": 2, "innov": 2, "extrapol": 2, "though": [2, 9, 32], "capabl": [2, 8, 9, 19], "person": [2, 6], "centric": 2, "modern": 2, "reshap": [2, 30, 32], "cryptograph": 2, "recogn": [2, 13], "ibm": 2, "forb": 2, "driven": [2, 15, 20], "mckinsei": 2, "highlight": [2, 13, 26, 30], "infosecur": 2, "magazin": 2, "report": [2, 18, 20, 27], "probabilist": 2, "viabil": 2, "realist": 2, "edx": 2, "advic": 2, "idea": [2, 9, 13, 31], "engag": [2, 27], "inde": 2, "tip": [2, 5], "sciencedirect": 2, "summar": [2, 9, 15, 24, 25, 26, 30], "synthesi": 2, "wai": [2, 6, 7, 8, 9, 11, 12, 13, 20, 28, 32], "clearli": [2, 24, 26], "data": [4, 5, 8, 9, 12, 14, 25, 26, 27, 29, 31, 32, 33], "3": [4, 5, 6, 8, 9, 12, 14, 19, 30, 31, 32, 33], "4": [4, 5, 7, 9, 12, 14, 17, 30, 31, 32, 33], "5": [4, 5, 6, 7, 8, 12, 14, 15, 17, 25, 26, 28, 30, 32, 33], "what": [5, 6, 7, 8, 9, 19, 22, 25, 28, 30, 31, 32], "machin": [5, 6, 9, 12, 13, 17, 18, 20, 21, 28, 30, 31, 32], "learn": [5, 6, 9, 12, 13, 15, 16, 17, 18, 20, 21, 22, 24, 25, 27, 28, 31, 32], "our": [5, 6, 7, 9, 13, 25, 27, 30, 32], "go": [5, 6, 9, 30], "wide": [5, 11, 19, 26, 28, 30], "due": [5, 11, 19, 22, 25, 28, 32], "readabl": [5, 7, 8, 9], "simplic": [5, 11], "rich": 5, "ecosystem": 5, "invalu": [5, 20], "preprocess": [5, 19, 22, 28, 32, 33], "analysi": [5, 6, 11, 12, 13, 14, 15, 17, 18, 20, 29, 31, 33], "colab": 5, "account": [5, 9, 20], "jupyt": [5, 9, 19, 20, 32], "notebook": [5, 9, 19, 31, 32], "allow": [5, 6, 7, 8, 9, 12, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 32], "browser": 5, "without": [5, 9, 11, 17, 21, 22, 25, 28, 30, 32], "ani": [5, 6, 9, 11, 12, 13, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 31, 32], "setup": 5, "requir": [5, 7, 8, 9, 11, 15, 17, 19, 20, 21, 22, 24, 25, 30, 31], "gpu": 5, "some": [5, 7, 9, 12, 13, 19, 20, 28, 30, 31, 32], "computation": [5, 20, 28, 32], "heavi": 5, "local": [5, 9], "option": [5, 6, 9], "don": [5, 9, 24, 25, 26, 27, 30, 31, 32], "cpu": 5, "want": [5, 7, 13, 30, 32], "acquaint": [5, 27, 30, 32], "anywai": 5, "later": [5, 30], "consist": [5, 18, 19, 20, 21, 28], "contain": [5, 9, 17, 26, 28, 31], "either": [5, 6, 9, 12, 17], "markdown": 5, "rememb": [5, 7, 22, 24, 27, 28], "should": [5, 6, 7, 9, 18, 20, 21, 25, 28, 30, 31], "run": [5, 8, 9, 18, 28], "order": [5, 6, 7, 11, 12, 22, 28, 32], "sinc": [5, 9, 12, 19, 30, 32], "earlier": 5, "howev": [5, 9, 12, 18, 22, 28, 32], "re": [5, 6, 9, 17, 20, 28, 30, 31], "debug": 5, "rerun": [5, 19, 32], "alwai": [5, 6, 7, 9, 13, 19, 20, 21, 28, 30, 31], "appear": [5, 14, 17, 19, 25, 26], "If": [5, 6, 9, 13, 14, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31, 32], "encount": [5, 6, 13, 32], "unexpect": 5, "troubleshoot": 5, "all": [5, 6, 9, 12, 15, 17, 19, 21, 22, 25, 26, 28, 30, 31, 32], "begin": [5, 11, 12, 13], "invalid": [5, 9], "incorrect": [5, 7], "occur": [5, 15, 17, 20, 31], "chang": [5, 7, 9, 11, 20, 21, 22, 27, 30, 31], "haven": 5, "been": [5, 6, 9], "propag": 5, "By": [5, 6, 11, 20, 21, 28], "runtim": 5, "menu": [5, 9], "reflect": [5, 19, 20, 22, 24], "save": [5, 9], "regularli": 5, "autosav": 5, "drive": [5, 13], "good": [5, 19, 30], "habit": 5, "manual": 5, "flexibl": [5, 7, 9], "easili": 5, "perfect": [5, 19, 22], "oper": [5, 7, 9, 10, 18, 20, 21, 32], "print": [5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "after": [5, 6, 7, 9, 12, 18, 20, 21, 22, 28, 31], "next": [5, 7, 15, 17, 19, 20, 21, 22, 24, 25, 30, 32], "block": [5, 7, 9, 32], "whitespac": [5, 8, 9], "indent": [5, 8, 9], "brace": 5, "end": [5, 6, 7, 9, 11, 12, 17, 32], "unind": 5, "amount": [5, 6, 19, 28], "must": [5, 6, 12, 27], "commonli": [5, 6, 8, 12, 13, 17, 20, 24, 27, 28], "x": [5, 6, 8, 9, 12, 13, 14, 17, 18, 19, 21, 24, 25, 27, 28, 30, 31, 32], "0": [5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "here": [5, 6, 7, 9, 13, 19, 22, 27, 30, 32], "true": [5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 24, 26, 27, 31, 32], "meaning": [5, 9, 24, 26, 27, 30, 31], "apart": [5, 9], "tab": 5, "element": [5, 6, 7, 11, 17, 19, 28, 30, 32], "excess": [5, 19], "ignor": [5, 15, 24, 26, 27, 28], "henc": 5, "b": [5, 6, 8, 9, 11, 12, 14, 28, 30], "harder": 5, "read": [5, 6, 8, 25, 31, 32], "lack": [5, 19, 27], "parenthes": [5, 6, 9], "bracket": 5, "lengthi": 5, "total": [5, 6, 9, 14, 17, 18, 19, 26, 28], "c": [5, 8, 9, 11, 12, 13, 32], "d": [5, 13], "f": [5, 6, 7, 8, 9, 13, 14, 15, 21, 22, 24, 25, 26, 30, 31, 32], "backslash": 5, "indic": [5, 9, 11, 13, 18, 19, 21, 26, 27, 28, 30, 31], "describ": [5, 9, 11, 12, 13, 15, 17, 19, 21, 22, 24, 26, 27, 30, 32], "note": [5, 9, 12, 25, 27, 28, 30, 31, 32], "futur": [5, 30], "carri": 5, "out": [5, 6, 9, 19, 20, 26, 30, 32], "primari": [5, 20, 24], "add": [5, 9, 11, 12, 32], "operand": [5, 6], "equal": [5, 6, 9, 12, 15, 17, 21, 22, 26, 28, 30, 31, 32], "8": [5, 7, 8, 9, 10, 11, 12, 15, 17, 20, 22, 24, 30, 31, 32, 33], "right": [5, 6, 9, 11, 12, 13, 18, 20, 21, 24, 26, 28, 30, 31], "left": [5, 6, 12, 13, 26, 28, 30], "2": [5, 8, 9, 12, 14, 19, 30, 31, 32, 33], "multipli": [5, 11, 12], "15": [5, 8, 12, 16, 17, 19, 24, 25, 30, 33], "divid": [5, 17, 18, 19, 21, 26, 30], "return": [5, 6, 7, 12, 17, 28, 31], "float": [5, 9], "floor": 5, "largest": [5, 8], "whole": 5, "smaller": [5, 19, 20, 21, 32], "modulu": 5, "remaind": 5, "exponenti": 5, "rais": [5, 7, 9], "try": [5, 6, 9, 19, 20, 21, 28, 30, 32], "someth": [5, 9], "yourself": [5, 7, 27, 30], "name": [5, 7, 9, 12, 20, 21, 22, 24, 31, 32], "10": [5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 19, 20, 24, 25, 26, 27, 28, 30, 32, 33], "overwrit": 5, "whatev": [5, 9], "held": 5, "shorthand": [5, 6], "increment": 5, "decrement": 5, "equival": [5, 27, 30], "wa": [5, 7, 9, 12, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 32], "would": [5, 9, 15, 19, 20, 21, 22, 24, 25, 28, 30, 31, 32], "now": [5, 6, 9, 30, 31], "becom": [5, 7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30, 32], "6": [5, 7, 9, 10, 12, 13, 14, 15, 17, 22, 27, 30, 32, 33], "13": [5, 8, 12, 16, 17, 19, 24, 33], "store": [5, 6, 7, 9, 25], "todai": [5, 6, 13, 31], "three": [5, 6, 7, 11, 25, 28, 30], "integ": [5, 9, 12, 22], "decim": 5, "14": [5, 7, 8, 11, 12, 16, 17, 22, 24, 33], "001": 5, "charact": [5, 11], "str": [5, 7, 9], "enclos": [5, 9], "quot": 5, "hello": [5, 9], "my_integ": 5, "my_float": 5, "my_str": 5, "displai": [5, 9, 12, 19, 21, 25, 31], "ask": [5, 7], "current": [5, 7, 9, 33], "There": [5, 8, 9, 18, 30], "restrict": 5, "certain": [5, 7, 8, 12, 19, 24], "ha": [5, 6, 7, 9, 11, 12, 13, 15, 17, 19, 20, 22, 26, 28, 30, 31], "guess": [5, 31], "y": [5, 9, 11, 12, 18, 19, 21, 24, 26, 27, 28, 31, 32], "hi": 5, "constant": [5, 31], "possibl": [5, 9, 15, 20, 24, 28, 30], "down": [5, 9, 20, 28], "convinc": [5, 7], "fill": [5, 12, 21, 31], "behav": [5, 20, 21, 32], "concaten": 5, "academi": [5, 11, 12], "introduct": [5, 16, 23, 26, 29, 33], "codecademi": 5, "introduc": [5, 6, 9, 20, 22, 26, 30, 32], "en": [5, 15, 27], "wikipedia": 5, "wiki": 5, "python_syntax_and_semant": 5, "previou": [6, 9], "session": 6, "laid": 6, "basic": [6, 8, 14, 16, 19, 21, 22, 23, 24, 25, 27, 29, 32, 33], "onli": [6, 7, 9, 11, 12, 17, 18, 21, 22, 24, 25, 27, 28, 31, 32], "lesson": [6, 13, 15, 18, 24, 25, 26, 27, 28, 30, 32], "stronger": 6, "appli": [6, 11, 12, 14, 18, 20, 22, 25, 27, 28, 31, 32, 33], "reason": [6, 17, 18, 20, 25, 27, 30], "boolean": 6, "bool": [6, 7], "truth": [6, 8], "fals": [6, 7, 8, 9, 18, 19, 25], "is_rain": 6, "is_sunni": 6, "none": [6, 9, 22, 32], "signifi": 6, "noth": 6, "absenc": [6, 32], "default": [6, 9, 28], "least": [6, 9, 32], "rainbow": 6, "inequ": 6, "numer": [6, 21, 22, 26, 28, 31], "greater": [6, 7], "object": [6, 9, 11, 17, 32], "ident": [6, 12], "membership": 6, "temperatur": [6, 13, 17], "warm": 6, "cat": 6, "letter": [6, 9, 12], "compound": [6, 32], "concis": [6, 7, 8, 11, 26], "n": [6, 9, 11, 12, 13, 15, 17, 18, 19, 22, 24, 25, 27, 30, 32], "cleaner": [6, 7, 32], "part": [6, 7, 9, 12, 17, 30, 32], "mathemat": [6, 9, 11, 12, 16, 25, 33], "preced": 6, "insid": [6, 9, 25, 26, 32], "circuit": [6, 12], "stop": [6, 7], "soon": [6, 8], "think": [6, 7, 9, 12, 13], "why": [6, 11, 18, 25, 27, 30], "doesn": [6, 13, 19, 22, 27, 28], "matter": [6, 11, 12], "similarli": [6, 13, 32], "doe": [6, 7, 9, 12, 15, 19, 27, 28, 32], "second": [6, 9, 14, 17, 26, 30, 32], "known": [6, 7, 8, 11, 30], "even": [6, 7, 17, 18, 22, 25, 30, 31, 32], "becaus": [6, 7, 9, 13, 17, 20, 21, 28, 30, 32], "alreadi": [6, 9], "satisfi": [6, 22, 30, 31], "whether": [6, 7, 11, 13, 22, 28], "scenario": [6, 8, 9, 11, 13, 14, 20], "fallback": 6, "zero": [6, 11, 13, 17, 21, 24, 30, 31, 32], "elig": 6, "discount": 6, "senior": 6, "citizen": 6, "ag": [6, 7, 21, 22, 30, 31], "older": 6, "student": [6, 24, 25], "purchas": 6, "tuesdai": 6, "everyon": 6, "take": [6, 7, 9, 12, 31, 32], "statu": [6, 9], "def": [6, 7, 9, 28, 31], "calculate_discount": 6, "is_stud": 6, "total_purchas": 6, "is_tuesdai": 6, "discount_elig": 6, "final_pric": 6, "2f": [6, 9, 18, 30, 32], "00": [6, 19, 21], "upgrad": 6, "member": 6, "year": 6, "attend": 6, "friend": 6, "automat": [6, 9, 32], "regardless": [6, 7, 31], "four": [6, 17, 28], "repeatedli": 7, "under": [7, 11, 13, 14], "repetit": 7, "backbon": 7, "script": [7, 9], "shorter": 7, "valuabl": [7, 19, 26], "repeat": [7, 9, 18, 20, 30], "lead": [7, 9, 19, 20, 22, 28, 32], "organ": [7, 9, 15], "python": [7, 9, 16, 19, 23, 29, 32, 33], "item": [7, 9, 25], "mutabl": 7, "my_list": 7, "unord": [7, 22], "pair": [7, 9, 22, 30], "my_dict": 7, "alic": 7, "len": [7, 9, 21, 28, 30], "specifi": [7, 9, 11], "beforehand": 7, "count": [7, 8, 9, 15, 17, 19, 21, 22], "warn": [7, 9], "infinit": 7, "Be": [7, 18, 20, 24, 28], "cautiou": [7, 20, 24, 28], "never": [7, 20, 21], "difficulti": 7, "straightforward": [7, 11, 13, 18, 30], "inher": [7, 22], "extern": 7, "backward": [7, 28], "tupl": [7, 9], "prefer": [7, 12, 28, 32], "prone": [7, 30], "argument": 7, "i": [7, 8, 9, 11, 12, 17, 21, 24, 25, 27, 30, 32], "nuanc": [7, 19, 22, 25], "purpos": [7, 20, 26], "exit": 7, "prematur": 7, "met": [7, 8, 32], "serv": 7, "itself": [7, 9, 11, 17, 20], "skip": 7, "move": [7, 13, 24, 28], "onto": [7, 11], "bypass": 7, "bodi": [7, 11], "odd": 7, "9": [7, 8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 22, 24, 25, 31, 32, 33], "finish": 7, "termin": 7, "search": [7, 9], "trigger": 7, "remind": [7, 12], "content": [7, 9, 19, 24], "search_for": 7, "enumer": [7, 9, 21], "entir": [7, 9, 13, 28, 31, 32], "java": 7, "plai": [7, 11, 12, 14, 20], "emploi": [7, 12], "accomplish": 7, "divisor": 7, "is_prim": 7, "num": 7, "answer": [7, 9, 31], "correct": [7, 9, 17, 19, 22, 25, 28, 30], "immedi": [7, 9], "feedback": [7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 30], "num_quest": 7, "num1": 7, "randint": [7, 9, 12], "num2": 7, "correct_answ": 7, "user_answ": [7, 9], "stdinnotimplementederror": [7, 9], "traceback": [7, 9, 22, 24], "recent": [7, 9, 22, 24], "last": [7, 9, 17, 19, 21, 22, 24, 32], "16": [7, 8, 9, 12, 17, 19, 21, 23], "19": [7, 8, 9, 17, 23, 33], "21": [7, 8, 11, 12, 17, 21, 29, 32, 33], "book_100daysml": [7, 9], "venv": [7, 9], "lib": [7, 9], "python3": [7, 9], "11": [7, 8, 9, 11, 12, 16, 19, 21, 24], "site": [7, 9], "ipykernel": [7, 9], "kernelbas": [7, 9], "py": [7, 9, 15, 17, 19, 20, 21, 22, 24, 25, 27, 30], "1260": [7, 9], "raw_input": [7, 9], "prompt": 7, "1258": [7, 9], "_allow_stdin": [7, 9], "1259": [7, 9], "msg": [7, 9], "frontend": [7, 9], "request": [7, 9], "1261": [7, 9], "_input_request": [7, 9], "1262": [7, 9], "1263": [7, 9], "_parent_id": [7, 9], "shell": [7, 9], "1264": [7, 9], "get_par": [7, 9], "1265": [7, 9], "password": [7, 9], "1266": [7, 9], "quizz": 7, "feel": [7, 9], "action": [8, 9, 25], "branch": 8, "therebi": 8, "increas": [8, 19, 22, 30, 32], "do_someth": 8, "voila": 8, "conjunct": 8, "do_something_els": 8, "Not": [8, 11, 12, 21], "mutual": [8, 22], "exclus": [8, 22, 28], "condition1": 8, "condition2": 8, "neither": 8, "nor": 8, "do_another_th": 8, "liken": 8, "style": [8, 32], "switch": 8, "correspond": [8, 12], "taken": [8, 12], "medium": [8, 18, 21, 22, 24, 28], "compact": 8, "ternari": 8, "quick": [8, 13, 31], "singl": [8, 9, 11, 12, 17, 30, 31, 32], "vertic": 8, "align": [8, 18, 20, 28], "classic": 8, "job": [8, 30], "interview": 8, "1": [8, 12, 14, 30, 31, 32, 33], "fizz": 8, "instead": [8, 17, 20, 21], "buzz": 8, "7": [8, 9, 10, 11, 15, 17, 20, 22, 24, 26, 31, 32, 33], "17": [8, 9, 12, 17, 19, 21, 23, 33], "entri": [8, 12, 17, 19], "celsiu": [8, 17], "below": [8, 9, 17, 19, 30, 32], "freez": 8, "inclus": [8, 25, 28], "cold": 8, "moder": [8, 19], "abov": [8, 19, 32], "categori": [8, 17, 20, 22, 24], "predefin": [8, 11], "temp": 8, "000": [8, 17, 32], "sedentari": 8, "499": 8, "lightli": 8, "500": 8, "999": 8, "veri": [8, 9, 13, 19, 31, 32], "distinct": [9, 28, 30], "situat": [9, 22], "reusabl": 9, "better": [9, 15, 17, 19, 20, 21, 22, 24, 25, 28, 30, 31], "modular": 9, "degre": [9, 17, 19, 28, 32], "reus": 9, "keyword": 9, "colon": 9, "ey": [9, 32], "peel": 9, "resum": 9, "some_funct": 9, "pass": [9, 32], "do_math": 9, "chosen": [9, 28, 31], "my_funct": 9, "empti": 9, "convent": 9, "lowercas": 9, "underscor": 9, "match": [9, 12, 32], "familiar": [9, 18, 22, 31], "directli": [9, 20, 30], "mere": [9, 28], "being": [9, 19, 30, 31, 32], "won": 9, "until": [9, 30, 32], "declar": [9, 12], "proper": 9, "john": 9, "mandatori": 9, "overridden": 9, "reorder": 9, "shuffl": [9, 18], "global": 9, "confin": 9, "shadow": 9, "do": [9, 17, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32], "who": 9, "struggl": [9, 19], "explicitli": 9, "regard": 9, "bad": 9, "anti": 9, "just": [9, 11, 12, 13, 14, 28, 30, 32], "see": [9, 28, 30, 32], "didn": 9, "h": [9, 13], "stuff": [9, 31], "append": [9, 11, 28], "ones": 9, "caus": [9, 15, 17, 19, 20, 21, 22, 24, 25, 27, 30], "typeerror": 9, "send": 9, "caller": 9, "unpack": 9, "usual": [9, 12, 31], "section": [9, 26], "ran": 9, "bring": [9, 28], "sometim": 9, "batteri": 9, "web": 9, "goe": [9, 30], "heard": 9, "slow": [9, 11, 13], "circumst": 9, "popular": [9, 30], "few": [9, 18, 19, 21, 24, 25, 30, 31, 32], "constraint": [9, 32], "rust": 9, "speed": [9, 11, 13, 21], "highli": [9, 22, 26, 27, 30, 31], "compil": [9, 24], "glue": 9, "namespac": 9, "home": [9, 30, 32], "linux": 9, "x86_64": 9, "cpython": 9, "311": 9, "gnu": 9, "so": [9, 13, 17, 20, 21, 27, 30, 31, 32], "fact": 9, "directori": 9, "pi": [9, 15], "141592653589793": 9, "pow": 9, "forc": [9, 11], "simpli": [9, 13, 30, 31, 32], "frequent": [9, 13, 17, 20], "pyplot": [9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "plt": [9, 11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "dozen": 9, "exhaust": 9, "given": [9, 11, 13, 15, 19, 30, 31], "alia": 9, "leav": [9, 30], "rest": [9, 22, 31], "sole": [9, 26, 28], "sparingli": 9, "difficult": 9, "trace": 9, "come": [9, 15], "own": [9, 15], "encapsul": [9, 13, 22], "occasion": 9, "ok": 9, "greatli": 9, "star": 9, "great": [9, 32], "caution": 9, "could": [9, 19, 25, 32], "adequ": [9, 20], "As": [9, 28, 32], "homework": [9, 28], "perus": 9, "handi": 9, "lot": 9, "dice_rol": 9, "11290791626756647": 9, "servic": 9, "txt": 9, "dump": 9, "elaps": 9, "deliber": [9, 30], "sleep": 9, "datetim": 9, "calendar": 9, "timestamp": 9, "timezon": 9, "durat": [9, 11], "01": [9, 21, 32], "08": [9, 17, 19, 22], "083772": 9, "regress": [9, 15, 21, 27, 33], "far": [9, 19], "actual": [9, 11, 17, 19, 30, 31, 32], "suppos": 9, "ax": [9, 11, 24, 26, 30, 31], "column": [9, 12, 19, 20, 21, 22, 28, 30, 31], "intercept": [9, 30, 31, 32], "x_data": 9, "x1": [9, 11, 12], "x2": [9, 12], "xn": 9, "y_data": 9, "y1": [9, 11, 12], "y2": [9, 12], "yn": 9, "y_pred": 9, "quantifi": [9, 15, 27, 28], "replac": [9, 20, 22], "synthes": 9, "everyth": 9, "ve": [9, 30], "correctli": [9, 19, 22, 28, 31], "too": [9, 24, 25, 28, 32], "low": [9, 17, 19, 26, 27, 30], "attempt": 9, "made": 9, "onc": [9, 31], "successfulli": [9, 19], "messag": 9, "user_input": 9, "enter": 9, "except": [9, 32], "valueerror": 9, "pleas": [9, 15, 17, 19, 20, 21, 22, 24, 25, 30, 32], "calculate_scor": 9, "range_s": 9, "fewer": [9, 19, 22], "worst": 9, "log2": 9, "worst_case_binary_search": 9, "interpol": 9, "extrem": [9, 17, 19, 20, 24], "guessing_gam": 9, "min_valu": 9, "max_valu": 9, "configur": [9, 18, 31, 32], "number_to_guess": 9, "user_guess": 9, "congratul": 9, "again": [9, 32], "desir": [9, 19], "20": [9, 11, 12, 17, 19, 20, 23, 24, 26, 32, 33], "record": 9, "got": [9, 30], "wrong": 9, "my": 9, "solut": [9, 11, 13, 30, 32], "disk": 9, "bonu": 9, "quickli": 9, "around": [9, 13, 19, 21, 24, 26], "example_quiz": 9, "filenam": 9, "sample_quiz": 9, "capit": [9, 12, 25], "franc": 9, "pari": 9, "wrong_answ": 9, "rome": 9, "london": 9, "open": 9, "w": 9, "load_quiz": 9, "uncom": 9, "quiz_gam": 9, "total_scor": 9, "all_answ": 9, "chr": 9, "start_tim": 9, "strip": 9, "end_tim": 9, "time_taken": 9, "correct_answer_index": 9, "assum": [9, 17, 18, 19, 20, 21, 27, 28, 30, 31], "1f": 9, "18": [9, 12, 17, 23, 33], "pick": [9, 30], "inspir": 9, "edit": 9, "delet": 9, "phone": 9, "email": 9, "interfac": 9, "command": 9, "view": [9, 18, 26], "confirm": [9, 13], "success": [9, 15], "gracefulli": 9, "inventori": 9, "remov": [9, 17, 28, 31], "id": [9, 19, 21, 28], "stock": [9, 13], "cost": [9, 13, 20, 28], "tax": 9, "mathbf": 11, "bmatrix": [11, 12], "v_1": 11, "v_2": 11, "vdot": [11, 12], "v_n": 11, "possess": 11, "length": [11, 13, 21, 28], "denot": [11, 12, 13, 14, 15, 28], "non": [11, 19, 20, 28, 31, 32], "neg": [11, 19, 26, 27, 30, 31], "orient": 11, "rel": [11, 19, 28], "frame": [11, 17, 19], "angl": [11, 30], "coordin": [11, 12], "fulli": 11, "car": [11, 13], "travel": [11, 13], "60kph": 11, "ne": 11, "paramount": 11, "scientif": 11, "disciplin": [11, 12, 15], "versatil": 11, "veloc": [11, 13], "acceler": [11, 13], "displac": 11, "motion": 11, "civil": 11, "electr": [11, 12], "indispens": [11, 15], "classif": [11, 18, 28, 30, 33], "phenomena": [11, 15], "tackl": 11, "place": [11, 18], "background": 11, "color": [11, 13, 14, 15, 18, 20, 21, 22, 24, 26, 28, 30, 31, 32], "easier": [11, 31, 32], "handwritten": 11, "digit": [11, 22], "optic": 11, "ocr": 11, "shape": [11, 12, 17, 19, 26, 27], "commut": [11, 12], "associ": [11, 12, 28], "therefor": [11, 13], "yield": 11, "OR": [11, 12], "x_add": 11, "sgd": 11, "dynam": 11, "progress": 11, "overshoot": 11, "ab": 11, "bx": 11, "mulitpl": 11, "ay": 11, "xa": 11, "ya": 11, "x_scalar_mult": 11, "navig": 11, "robot": 11, "linalg": [11, 12], "arctan2": 11, "radian": 11, "9272952180016122": 11, "sentiment": 11, "mathbb": 11, "dimension": [11, 22, 28, 30, 33], "cdot": [11, 12, 13], "sum_": [11, 12, 17, 25, 30, 32], "x_i": [11, 17, 27, 30], "y_i": [11, 27, 30, 32], "respect": [11, 13, 21, 27, 28, 31], "co": 11, "theta": 11, "bilinear": 11, "orthogon": 11, "perpendicular": 11, "quad": 11, "dot_product": 11, "x1_3d": 11, "y1_3d": 11, "3d": [11, 30], "surfac": 11, "light": 11, "render": [11, 19, 32], "torqu": 11, "rotat": [11, 24, 30], "origin": [11, 12, 14, 20, 21, 30, 31], "mathbi": 11, "vmatrix": 11, "j": [11, 12, 32], "x_1": [11, 30, 31, 32], "x_2": [11, 30, 31], "x_3": 11, "y_1": 11, "y_2": 11, "y_3": 11, "a_1": 11, "a_2": 11, "a_3": 11, "b_1": 11, "b_2": 11, "b_3": 11, "sin": 11, "plane": [11, 30], "neq": 11, "exert": 11, "simplifi": [11, 28, 32], "cross_product": 11, "l2": [11, 32], "_2": 11, "ldot": [11, 32], "vector_v": 11, "l2_norm": 11, "new_posit": 11, "aerospac": 11, "safeti": 11, "stabil": [11, 19, 21], "bridg": 11, "accur": [11, 24, 27, 30, 31], "analys": [11, 17, 19, 20, 24, 25, 30, 32], "big": 11, "quicker": 11, "precis": [11, 13, 18, 19, 21, 22], "abstract": 11, "infrastructur": 11, "quantum": [11, 12], "stem": 11, "approxim": [11, 19, 28], "minut": 11, "linspac": [11, 13, 14, 32], "meshgrid": 11, "circular": 11, "quiver": 11, "xlim": [11, 30], "ylim": [11, 30], "titl": [11, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "xlabel": [11, 13, 14, 18, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32], "axi": [11, 18, 19, 22, 28, 30, 31], "ylabel": [11, 13, 14, 18, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32], "v1": 11, "v2": 11, "v_add": 11, "v_sub": 11, "v_scalar_mult": 11, "xy": [11, 12], "scale_unit": 11, "green": [11, 20, 21, 30], "red": [11, 13, 21, 22, 27, 30, 31, 32], "blue": [11, 14, 20, 21, 22, 30, 31, 32], "khan": [11, 12], "rectangular": 12, "arrang": 12, "row": [12, 17, 21, 22, 24, 31], "x_": [12, 25, 32], "12": [12, 16, 17, 20, 21, 22, 24, 26, 27, 30, 31, 32, 33], "1n": 12, "2n": [12, 32], "ddot": 12, "m1": 12, "m2": 12, "mn": 12, "physic": [12, 13, 14], "moment": [12, 13], "inertia": 12, "tensor": 12, "graph": [12, 13, 14], "among": [12, 27, 28, 30, 32], "kickoff": 12, "fantast": 12, "coupl": 12, "grid": [12, 13, 14, 25], "nonumb": 12, "z1": 12, "subscript": 12, "isn": [12, 30], "nice": 12, "notic": [12, 32], "verifi": 12, "_": 12, "ij": [12, 32], "x1_": 12, "y1_": 12, "m_add": 12, "m_sub": 12, "rather": [12, 30], "l": 12, "obtain": [12, 25, 28, 32], "th": [12, 30], "compat": 12, "inner": 12, "circ": 12, "m_sca": 12, "m_mul": 12, "4x4": 12, "communit": 12, "m_mul1": 12, "m_mul2": 12, "113": 12, "153": 12, "114": 12, "109": 12, "106": 12, "118": 12, "112": 12, "rrr": 12, "hspace": 12, "1cm": 12, "twice": 12, "notat": 12, "transposit": 12, "x_t": 12, "det": 12, "nonzero": 12, "x_inv": 12, "inv": 12, "81474977e": 12, "62949953e": 12, "12589991e": 12, "mat_x": 12, "mat_i": 12, "mat_": 12, "mat_xi": 12, "mat_xy_t": 12, "mat_xy_t2": 12, "2nd": [12, 22], "mat_xy_inv": 12, "194": 12, "322": [12, 32], "264": 12, "405": 12, "690": 12, "668": 12, "895": [12, 20, 21, 22], "1610": 12, "81926058e": 12, "93203101e": 12, "79964834e": 12, "97348241e": 12, "05242171e": 12, "95975384e": 12, "further": [12, 17, 19, 25], "resourc": 12, "link": 12, "materi": 12, "interest": [12, 13, 15, 20, 26, 27, 30], "essenc": [13, 20], "ai": [13, 14, 28, 33], "curios": 13, "willing": 13, "akin": [13, 14], "lim_": 13, "frac": [13, 17, 18, 25, 27, 30, 32], "instantan": 13, "curv": [13, 14, 18], "imagin": [13, 32], "know": [13, 14, 30], "fast": [13, 30], "growth": 13, "popul": [13, 15, 17, 18, 19, 24, 32], "particular": [13, 19], "df": [13, 18, 20, 21, 31], "dx": [13, 14], "2x": 13, "3x": 13, "4x": 13, "expon": [13, 30], "impli": [13, 19, 27, 28], "concern": [13, 28], "sp": [13, 14], "s_t": 13, "s_prime_t": 13, "remain": [13, 20], "fix": [13, 15, 19, 26, 30], "locat": [13, 17, 30], "t_x": 13, "livrari": 13, "t_prime_x": 13, "conveni": 13, "straight": [13, 30], "road": 13, "p": [13, 15, 24, 28], "2t": 13, "3t": 13, "4t": 13, "p_t": 13, "p_prime_t": 13, "rectangl": 13, "width": [13, 21, 26, 28], "a_x": 13, "a_prime_x": 13, "speedomet": 13, "econom": [13, 31], "revenu": 13, "busi": 13, "safe": 13, "sensit": [13, 20, 21, 24, 28, 31, 32], "aid": [13, 27], "formul": [13, 32], "assist": 13, "node": [13, 28], "abc": [13, 14], "sai": [13, 30], "value_at_x": 13, "rate_of_chang": 13, "sub": 13, "lambda": [13, 14, 32], "func_lambda": [13, 14], "lambdifi": [13, 14], "deriv_lambda": 13, "x_val": [13, 14], "y_val": [13, 14], "tangent_lin": 13, "figur": [13, 14, 18, 19, 21, 22, 25, 26, 27, 28, 30, 32], "figsiz": [13, 14, 19, 21, 22, 25, 26, 27, 30, 31, 32], "linestyl": [13, 18, 30], "dash": [13, 30], "scatter": [13, 21, 27, 30, 31, 32], "tangenc": 13, "legend": [13, 14, 18, 20, 21, 24, 28, 30, 31, 32], "distinguish": 13, "interv": [13, 14, 15, 17], "impart": 13, "mark": 13, "stride": 13, "machinelearningmasteri": [13, 18, 20, 21, 22, 27, 28], "gentl": 13, "partial": 13, "openstax": 13, "book": 13, "page": [13, 19, 32], "towardsai": 13, "net": 13, "master": [13, 22, 27], "towardsdatasci": [13, 18, 21, 22, 24], "peopl": [13, 18], "3cd913c5cf33": 13, "deepen": [14, 15, 20, 22, 25, 28], "profound": 14, "profici": [14, 15, 24], "eager": 14, "accumul": 14, "infinitesim": 14, "small": [14, 19, 32], "piec": 14, "much": [14, 28, 30], "a_b": 14, "indefinit": 14, "antideriv": 14, "famili": 14, "whose": [14, 30], "assert": 14, "a_bf": 14, "dxf": 14, "extens": [14, 31], "roc": [14, 18, 19], "deep": [14, 15, 24, 26, 33], "indefinite_integr": 14, "definite_integr": 14, "integral_lambda": 14, "fill_between": 14, "grai": [14, 30], "alpha": [14, 15, 20, 21, 26, 28, 30, 32], "equip": [15, 27], "keen": 15, "interrel": 15, "sens": [15, 19, 22, 28, 30], "event": 15, "infer": [15, 24, 30, 31, 32], "cannot": [15, 30], "certainti": 15, "subset": [15, 18, 19, 28], "imposs": 15, "likelihood": [15, 20], "occurr": [15, 19], "confid": [15, 28], "uniform": 15, "simplest": [15, 30], "everi": [15, 19, 32], "chanc": 15, "character": 15, "\u03bc": [15, 21], "binomi": 15, "bernoulli": 15, "trial": 15, "poisson": 15, "pd": [15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "tmp": [15, 17, 19, 20, 21, 22, 24, 25, 30], "ipykernel_288453": 15, "584559657": 15, "deprecationwarn": [15, 17, 19, 20, 21, 22, 24, 25, 30], "pyarrow": [15, 17, 19, 20, 21, 22, 24, 25, 30], "major": [15, 17, 19, 20, 21, 22, 24, 25, 30], "releas": [15, 17, 19, 20, 21, 22, 24, 25, 30], "arrow": [15, 17, 19, 20, 21, 22, 24, 25, 30], "interoper": [15, 17, 19, 20, 21, 22, 24, 25, 30], "instal": [15, 17, 19, 21, 22, 24, 25, 30, 31], "dev": [15, 17, 19, 20, 21, 22, 24, 25, 30], "54466": [15, 17, 19, 20, 21, 22, 24, 25, 30], "range_": 15, "ptp": 15, "var": [15, 17, 19, 24, 25, 26], "std_dev": [15, 25], "std": [15, 17, 19, 21, 22, 24, 25], "8722813232690143": 15, "mu": [15, 18], "1000": 15, "bin": [15, 20, 24, 25, 26, 28], "hist": [15, 20, 24, 25, 26, 31], "exp": 15, "linewidth": [15, 19], "lambda_": 15, "null": [15, 17, 19, 24], "\u03bc_0": 15, "altern": [15, 22, 24], "mu_0": 15, "05": [15, 28], "t_statist": [15, 24], "p_valu": [15, 24, 28], "ttest_1samp": [15, 24], "reject": 15, "fail": [15, 28], "5222329678670935": 15, "614117254808394": 15, "rigor": 15, "probabilitycours": 15, "prefac": 15, "php": 15, "vfu": 15, "bg": 15, "bertsekas_tsitsiklis_introduction_to_prob": 15, "pdf": 15, "1uw3qmfa9ho": 15, "plul4u3cngp60hi9atjsfglzpbnj7myag6": 15, "morningsid": 15, "libguid": 15, "raw": 17, "clean": 17, "duplic": 17, "discret": [17, 28], "qualit": 17, "nomin": 17, "blood": 17, "ordin": 17, "ratio": 17, "height": [17, 26, 31], "covid": 17, "ipykernel_288486": 17, "2223182689": [17, 19], "datafram": [17, 18, 19, 20, 21, 22, 28, 31], "covid_data": 17, "read_csv": [17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "inspect": [17, 19], "five": [17, 18, 19, 21], "iso_cod": 17, "contin": 17, "total_cas": 17, "new_cas": 17, "new_cases_smooth": 17, "total_death": 17, "new_death": 17, "new_deaths_smooth": 17, "female_smok": 17, "male_smok": 17, "handwashing_facil": 17, "hospital_beds_per_thousand": 17, "life_expect": 17, "human_development_index": 17, "excess_mortality_cumulative_absolut": 17, "excess_mortality_cumul": 17, "excess_mort": 17, "excess_mortality_cumulative_per_million": 17, "afg": 17, "asia": 17, "afghanistan": 17, "02": [17, 21, 31], "2020": [17, 21, 22, 28], "nan": [17, 20, 21, 22], "746": 17, "511": 17, "tail": [17, 19, 26], "5813": 17, "nga": 17, "africa": 17, "nigeria": 17, "06": [17, 20, 25, 28, 32], "2022": 17, "265741": 17, "236": 17, "286": 17, "3155": 17, "949": 17, "539": 17, "5814": 17, "07": [17, 18], "5815": 17, "265816": 17, "5816": 17, "09": 17, "5817": 17, "info": [17, 19], "rangeindex": [17, 19], "5818": 17, "dtype": [17, 19, 20, 21, 22, 28, 31], "int64": [17, 19, 20, 21], "5788": 17, "float64": [17, 19, 20, 22, 31], "5638": 17, "5627": 17, "5596": 17, "total_cases_per_million": 17, "new_cases_per_million": 17, "new_cases_smoothed_per_million": 17, "total_deaths_per_million": 17, "new_deaths_per_million": 17, "new_deaths_smoothed_per_million": 17, "reproduction_r": 17, "5566": 17, "icu_pati": 17, "2610": 17, "icu_patients_per_million": 17, "hosp_pati": 17, "hosp_patients_per_million": 17, "weekly_icu_admiss": 17, "weekly_icu_admissions_per_million": 17, "weekly_hosp_admiss": 17, "934": 17, "weekly_hosp_admissions_per_million": 17, "total_test": 17, "3174": 17, "new_test": 17, "2948": 17, "total_tests_per_thousand": 17, "new_tests_per_thousand": 17, "new_tests_smooth": 17, "4114": 17, "new_tests_smoothed_per_thousand": 17, "positive_r": 17, "3440": 17, "tests_per_cas": 17, "tests_unit": 17, "4156": 17, "total_vaccin": 17, "2104": 17, "people_vaccin": 17, "2051": 17, "people_fully_vaccin": 17, "2004": 17, "total_boost": 17, "1170": 17, "new_vaccin": 17, "1827": 17, "new_vaccinations_smooth": 17, "3658": 17, "total_vaccinations_per_hundr": 17, "people_vaccinated_per_hundr": 17, "people_fully_vaccinated_per_hundr": 17, "total_boosters_per_hundr": 17, "new_vaccinations_smoothed_per_million": 17, "new_people_vaccinated_smooth": 17, "new_people_vaccinated_smoothed_per_hundr": 17, "stringency_index": 17, "5699": 17, "population_dens": 17, "median_ag": 17, "aged_65_old": 17, "aged_70_old": 17, "gdp_per_capita": 17, "extreme_poverti": 17, "2922": 17, "cardiovasc_death_r": 17, "diabetes_preval": 17, "4860": 17, "1913": 17, "4863": 17, "421": 17, "mb": 17, "covid_datanew": 17, "bar": [17, 18, 22, 25, 26, 27, 28, 30], "newcase_mean": 17, "8814": 17, "365761430045": 17, "middl": [17, 19, 26], "sort": [17, 25], "newcase_median": 17, "261": 17, "moderesult": 17, "modal": [17, 26], "thu": [17, 19], "newcase_mod": 17, "805": 17, "\u03c3\u00b2": [17, 21], "newcase_vari": 17, "451321915": 17, "9280954": 17, "451399502": 17, "6421969": 17, "ddof": [17, 19], "newcase_stdev": 17, "stdev": [17, 19], "21246": 17, "164421895": 17, "freedom": [17, 28, 32], "unbias": [17, 18], "mle": 17, "stackoverflow": 17, "62938495": 17, "stand": [17, 28], "alon": 17, "mislead": [17, 22, 24], "covid_newcases_max": 17, "covid_newcases_min": 17, "287149": 17, "iqr": [17, 25, 26], "sever": [17, 19, 20, 31], "fall": [17, 19, 26], "q1": [17, 19, 26], "q3": [17, 19, 26], "parametr": [17, 28], "segment": 17, "sale": 17, "depict": [17, 26], "quantil": [17, 19], "25th": [17, 19], "percentil": [17, 19], "75th": [17, 19], "3666": 17, "3642": 17, "nehalbirla": 17, "vehicl": 17, "cardekho": 17, "quantinsti": 17, "experfi": 17, "clt": 18, "sim": 18, "unknown": 18, "observ": [18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32], "homogen": [18, 19, 28], "subgroup": 18, "proport": [18, 19, 22, 26, 28, 31], "strata": 18, "stratum": 18, "sklearn": [18, 19, 20, 21, 22, 28, 30, 31, 32], "model_select": [18, 19, 21, 28, 30, 31, 32], "train_test_split": [18, 19, 21, 28, 30, 31, 32], "train_set": 18, "test_set": 18, "test_siz": [18, 19, 21, 28, 30, 31, 32], "random_st": [18, 19, 20, 21, 28, 30, 31, 32], "pseudo": 18, "reproduc": 18, "softwar": 18, "talk": 18, "intern": 18, "imbalanc": [18, 19], "stratifiedshufflesplit": 18, "n_split": 18, "train_index": 18, "test_index": 18, "stratum_column": 18, "strat_train_set": 18, "loc": [18, 26, 30], "strat_test_set": 18, "fold": [18, 19], "kfold": 18, "cross_val_scor": [18, 19], "ensembl": [18, 19, 29], "randomforestclassifi": [18, 19], "kf": 18, "df_featur": 18, "df_target": 18, "cv": [18, 19], "stratifiedkfold": 18, "skf": 18, "x_train": [18, 19, 21, 28, 30, 31, 32], "x_test": [18, 19, 21, 28, 30, 31, 32], "y_train": [18, 19, 21, 28, 30, 31, 32], "y_test": [18, 19, 21, 28, 30, 31, 32], "subject": 18, "suit": [18, 30], "download": [18, 19], "wine": [18, 24], "100daysofml_notebook": [18, 21, 22], "accord": [18, 19, 28], "wine_data": [18, 19, 24, 25, 26, 27], "winequ": 18, "standardscal": [18, 19, 21, 28, 31, 32], "labelencod": [18, 19, 22, 28], "fillna": [18, 19, 20, 21, 31], "inplac": [18, 19, 20, 21, 31], "categorical_column": [18, 19], "fit_transform": [18, 19, 20, 21, 22, 28, 31, 32], "scaler": [18, 19, 21, 31, 32], "wine_data_sc": [18, 19], "drop": [18, 19, 22, 28, 31, 32], "accuracy_scor": [18, 19, 28], "confusion_matrix": [18, 19], "recal": [18, 19, 21, 22], "f1": [18, 19], "classification_report": [18, 19], "roc_curv": 18, "auc": [18, 19], "predict_proba": 18, "fpr": 18, "tpr": 18, "threshold": [18, 28], "roc_auc": 18, "darkorang": 18, "lw": 18, "navi": 18, "receiv": 18, "outlin": 18, "confidenti": 18, "conduct": [18, 19, 24, 26, 28, 31], "befor": [18, 20, 21, 22, 24, 27, 28, 32], "unseen": [18, 19, 28, 31, 32], "generaliz": 18, "leak": [18, 31], "vigil": 18, "augment": 18, "datasciencewizard": 18, "49a959c95fa1": 18, "8ef4e3a97562": 18, "analyticsvidhya": [18, 20, 21, 22, 25, 28], "2021": [18, 20, 25], "jfrog": 18, "ipykernel_288519": 19, "wine_qu": [19, 24, 25, 26, 27], "acid": [19, 26], "volatil": 19, "citric": 19, "residu": [19, 25, 26, 30, 32], "sugar": [19, 25, 26], "chlorid": 19, "sulfur": [19, 26], "dioxid": [19, 26], "ph": [19, 25, 26], "sulphat": 19, "alcohol": [19, 24, 25, 26], "076": 19, "9978": 19, "098": 19, "9968": 19, "04": [19, 21], "092": 19, "9970": 19, "075": 19, "9980": 19, "1138": 19, "510": 19, "99574": 19, "1592": 19, "1139": 19, "620": [19, 32], "068": 19, "99651": 19, "1593": 19, "1140": 19, "600": 19, "090": 19, "99490": 19, "1594": 19, "1141": 19, "550": 19, "062": 19, "99512": 19, "1595": 19, "1142": 19, "645": 19, "99547": 19, "1597": 19, "1143": 19, "116": 19, "kb": 19, "copi": [19, 20, 21], "wine_datanew": 19, "winequality_mean": 19, "657": 19, "winequality_median": 19, "winequality_var": 19, "6488": 19, "extent": 19, "somewhat": [19, 32], "heterogen": 19, "alongsid": 19, "holist": 19, "winequality_stdev": 19, "8058": 19, "tend": [19, 26, 32], "wider": 19, "typic": [19, 25, 32], "pronounc": 19, "pictur": 19, "winequality_max": 19, "winequality_min": 19, "maximum": [19, 21, 26], "minimum": [19, 21, 26], "highest": [19, 30], "lowest": [19, 30], "presenc": [19, 21, 22, 25, 26], "exploratori": [19, 25, 26, 28, 33], "reveal": 19, "factor": [19, 27, 28, 31, 32], "upper": [19, 26, 30], "third": [19, 26], "closer": [19, 30, 31], "half": 19, "narrow": [19, 26], "higher": [19, 28, 31, 32], "sn": [19, 21, 22, 24, 25, 26, 27, 31], "correlation_matrix": [19, 24], "corr": [19, 21, 24, 27], "annot": [19, 24, 27], "cmap": [19, 24, 27], "coolwarm": 19, "attribut": [19, 28], "decreas": 19, "6731": 19, "6815": 19, "6852": 19, "4074": 19, "5442": 19, "4947": 19, "5463": 19, "2577": 19, "4849": 19, "chemic": 19, "properti": [19, 28], "trust": [19, 32], "On": [19, 30], "unabl": [19, 32], "nbviewer": [19, 32], "nbsp": [19, 32], "randomforestclassifierifittedrandomforestclassifi": 19, "9782": 19, "strong": [19, 24, 27], "significantli": [19, 20, 22, 26, 27, 28], "outnumb": 19, "tell": [19, 30], "categorical_featur": 19, "x_train_scal": [19, 31], "x_test_scal": [19, 31], "diagon": 19, "No": [19, 20, 22], "misclassif": 19, "misclassifi": 19, "failur": 19, "imbal": 19, "zero_divis": 19, "229": 19, "macro": 19, "avg": 19, "breakdown": 19, "identif": 19, "poor": 19, "were": [19, 32], "resampl": 19, "underrepres": 19, "cross_val_scores_round": 19, "9825": 19, "9737": 19, "9345": 19, "9476": 19, "9605": 19, "9649": 19, "slight": 19, "fairli": 19, "stabl": [19, 31], "overli": [19, 30], "advis": 19, "intermedi": [20, 21, 22, 24, 25], "mar": 20, "missing": 20, "unobserv": 20, "titanic_data": [20, 21, 22], "isnul": [20, 21, 31], "passengerid": [20, 21, 22], "pclass": [20, 21], "sex": [20, 21, 22, 31], "892": [20, 21, 22], "kelli": [20, 21, 22], "mr": [20, 21, 22], "jame": [20, 21, 22], "male": [20, 21, 22], "893": [20, 21, 22], "wilk": [20, 21, 22, 28], "ellen": [20, 21, 22], "femal": [20, 21, 22], "894": [20, 21, 22], "myle": [20, 21, 22], "thoma": [20, 21, 22], "franci": [20, 21, 22], "wirz": [20, 21, 22], "albert": [20, 21, 22], "896": [20, 21, 22], "hirvonen": [20, 21, 22], "alexand": [20, 21, 22], "helga": [20, 21, 22], "lindqvist": [20, 21, 22], "sibsp": [20, 21, 22], "parch": [20, 21, 22], "ticket": [20, 21, 22], "fare": [20, 21, 22], "cabin": [20, 21], "surviv": [20, 21, 22], "330911": [20, 21, 22], "8292": [20, 21, 22], "363272": [20, 21, 22], "0000": [20, 21, 22], "240276": [20, 21, 22], "6875": [20, 21, 22], "315154": [20, 21, 22], "6625": [20, 21, 22], "3101298": [20, 21, 22], "2875": [20, 21, 22], "327": [20, 21], "ipykernel_288555": 20, "245541981": 20, "unduli": 20, "preserv": [20, 21, 22], "embarked_mod": 20, "retain": 20, "distort": [20, 31], "unaffect": 20, "conclus": [20, 24, 26], "684399944": 20, "futurewarn": [20, 21], "col": [20, 21, 22], "knnimput": 20, "n_neighbor": 20, "numeric_column": 20, "select_dtyp": [20, 22], "closest": 20, "exhibit": [20, 30], "captur": [20, 28, 32], "smooth": [20, 26], "inaccur": 20, "expens": 20, "predictor": [20, 27, 30, 31, 32], "poorli": [20, 32], "sophist": [20, 28], "intertwin": 20, "experiment": [20, 28], "enable_iterative_imput": 20, "iterativeimput": 20, "linear_model": [20, 30, 31, 32], "bayesianridg": 20, "iterative_imput": 20, "missing_valu": 20, "max_it": [20, 32], "titanic_data_imput": 20, "bayesian": 20, "incorpor": 20, "prior": 20, "belief": 20, "uncertainti": [20, 28], "posterior": 20, "robin": 20, "fashion": 20, "gaug": 20, "frequenc": [20, 22, 24, 25, 26, 28], "titanic_data_origin": 20, "dropna": 20, "hasn": 20, "alter": [20, 21, 32], "lookout": 20, "unusu": [20, 24, 26], "spike": 20, "weren": 20, "robject": 20, "importr": 20, "pandas2ri": 20, "globalenv": 20, "choosecranmirror": 20, "ind": 20, "magic": 20, "load_ext": 20, "ipython": 20, "install_packag": 20, "remot": 20, "install_github": 20, "njtiernei": 20, "naniar": 20, "r_df": 20, "mcar_test": 20, "consult": 20, "simplilearn": [20, 21], "theanalysisfactor": 20, "seven": 20, "dataaspir": 20, "\u03c3z": 21, "xx": 21, "\u03bc\u03bc": 21, "\u03c3\u03c3": 21, "center": [21, 24, 28], "pro": 21, "con": 21, "bound": [21, 28], "rescal": 21, "xnorm": 21, "xmin": 21, "xmax": 21, "xminxmin": 21, "xmaxxmax": 21, "overpow": 21, "knn": 21, "minmaxscal": 21, "load_iri": 21, "iris_data": [21, 28], "feature_nam": [21, 25], "iris_standard": 21, "min_max_scal": 21, "iris_min_max_sc": 21, "inter": 21, "comprehend": 21, "readi": 21, "iloc": [21, 26, 32], "minmaxscalermin_max_scal": 21, "sepallengthcm": [21, 28], "subplot": [21, 22, 26, 30, 31, 32], "histplot": [21, 26], "kde": [21, 26], "accordingli": 21, "sepalwidthcm": 21, "sepal": [21, 28], "snoop": 21, "petallengthcm": [21, 28], "petalwidthcm": [21, 28], "speci": [21, 28], "setosa": [21, 28], "ipykernel_288580": 21, "2131166956": 21, "dancerworld60": 21, "4bb910900ab7": 21, "awar": [21, 24, 28, 31], "e44df654f185": 21, "nsummari": 21, "nmiss": 21, "418": [21, 22], "000000": [21, 22, 28], "332": 21, "1100": [21, 30], "500000": 21, "265550": [21, 22], "272590": 21, "447368": 21, "392344": 21, "120": 21, "810458": 21, "841838": [21, 22], "181209": 21, "896760": 21, "981429": 21, "170000": 21, "996": 21, "250000": 21, "1204": 21, "750000": 21, "1309": 21, "417": 21, "627188": 21, "385167": 21, "907576": 21, "487218": 21, "895800": 21, "454200": 21, "512": 21, "329200": 21, "1279951594": 21, "x_train_standard": 21, "x_test_standard": 21, "x_train_min_max": 21, "x_test_min_max": 21, "tight_layout": [21, 22, 26, 30, 31, 32], "scalingprint": 21, "nstatist": [21, 22], "334": 21, "262": 21, "333": 21, "269461": 21, "115763": 21, "470060": 21, "404192": 21, "909135": 21, "844961": 21, "655775": 21, "944719": 21, "937113": 21, "054690": 21, "330000": 21, "887500": 21, "340000e": 21, "620000e": 21, "330000e": 21, "233742e": 21, "711995e": 21, "127373e": 21, "722904e": 21, "267524e": 21, "001500e": 21, "001914e": 21, "001505e": 21, "504644e": 21, "036246e": 21, "983123e": 21, "319630e": 21, "367217e": 21, "231816e": 21, "006539e": 21, "658800e": 21, "130032e": 21, "873714e": 21, "073537e": 21, "617915e": 21, "606225e": 21, "136788e": 21, "982518e": 21, "186412e": 21, "201500e": 21, "634731": 21, "393627": 21, "058757": 21, "044910": 21, "072042": 21, "422481": 21, "193680": 21, "118090": 21, "104124": 21, "113315": 21, "273160": 21, "015395": 21, "352451": 21, "028213": 21, "511035": 21, "125000": 21, "063436": 21, "alexisbcook": 21, "primarili": 22, "intrins": 22, "gender": 22, "rank": 22, "school": 22, "bachelor": 22, "satisfact": 22, "unsatisfi": 22, "neutral": 22, "pose": 22, "cherbourg": 22, "queenstown": 22, "southampton": 22, "3rd": 22, "c85": 22, "c123": 22, "e46": 22, "curs": [22, 28], "elimin": [22, 28, 32], "treat": 22, "linearli": 22, "spars": [22, 32], "category_encod": 22, "ce": 22, "binaryencod": 22, "titanic_binary_encod": 22, "onehotencod": 22, "titanic_one_hot_encod": 22, "titanic_one_hot_encoded_df": 22, "toarrai": 22, "get_feature_names_out": 22, "pclass_encod": 22, "hierarchi": 22, "leakag": 22, "dummi": 22, "trap": 22, "multicollinear": [22, 27, 31, 32], "mind": [22, 24, 30, 32], "fictiti": 22, "pairwis": [22, 24, 25], "mostli": 22, "preval": 22, "1s": 22, "mix": 22, "passeng": 22, "sink": 22, "ipykernel_288616": 22, "3916798240": 22, "modulenotfounderror": 22, "modul": [22, 33], "ndata": 22, "nuniqu": 22, "363": 22, "nbinari": 22, "value_count": 22, "nameerror": [22, 24], "embarked_c": 22, "embarked_q": 22, "embarked_": 22, "nlabel": 22, "b57": 22, "b59": 22, "b63": 22, "b66": 22, "freq": 22, "270": 22, "244019": 22, "110048": 22, "645933": 22, "430019": 22, "313324": 22, "478803": 22, "aiskunk": 22, "d6296697a40f": 22, "547707acf4e5": 22, "305f3361fd02": 22, "uncov": 24, "trend": [24, 25, 33], "draw": [24, 26, 30, 32], "adopt": 24, "ethic": [24, 33], "ipykernel_288649": 24, "955872667": [24, 25], "spot": 24, "mistak": [24, 32], "erron": 24, "summari": [24, 25, 30], "ts": [24, 25, 27], "wise": [24, 26, 31], "preliminari": 24, "carefulli": 24, "overplot": 24, "violinplot": [24, 25], "diverg": 24, "scheme": 24, "hard": 24, "vmin": 24, "vmax": 24, "diverging_palett": 24, "220": 24, "200": 24, "set_xticklabel": 24, "get_xticklabel": 24, "horizontalalign": 24, "657042869641295": 24, "6493527188260838": 24, "8058242481000952": 24, "asymmetri": [24, 26], "tailed": 24, "2867917004538591": 24, "3146639385893346": 24, "nearli": 24, "enough": 24, "claim": 24, "hypothes": [24, 25, 27], "ii": 24, "popmean": 24, "811761283140333": 24, "0619222323076622e": 24, "compel": 24, "manner": 24, "coincid": 24, "spuriou": 24, "briefli": [24, 26], "main": 24, "seller": 24, "appendix": [24, 26], "visualis": 24, "8151e63ce8f0": 24, "boadziedaniel": 24, "890dc0e79799": 24, "datasciencedojo": 24, "ipykernel_288689": 25, "heavili": 25, "mean_valu": 25, "median_valu": 25, "mode_valu": 25, "oversimplifi": 25, "realiti": [25, 30], "complic": 25, "stori": 25, "symmetri": [25, 26], "interquartil": [25, 26], "whisker": [25, 26], "brief": 25, "clariti": 25, "sure": 25, "narr": 25, "meaningless": 25, "analysis_result": 25, "variance_valu": 25, "std_dev_valu": 25, "nstat": 25, "stat_nam": 25, "stat_valu": 25, "442111402741325": 25, "1711473380358497": 25, "0821956098764445": 25, "3110148731408575": 25, "02454362762448039": 25, "15666405977275194": 25, "5321522309711284": 25, "8385121764551762": 25, "3559174666826799": 25, "market": 25, "hcbravo": 25, "introdatasci": 25, "bookdown": 25, "econometricstutor": 25, "expand": [26, 32], "deepli": 26, "chart": 26, "symmetr": 26, "evenli": 26, "longer": 26, "peak": 26, "unimod": 26, "bimod": 26, "multimod": 26, "spiki": 26, "hide": 26, "value1": 26, "value2": 26, "valuen": 26, "skyblu": 26, "freedman": 26, "diaconi": 26, "disregard": 26, "quartil": 26, "span": 26, "q2": 26, "side": [26, 31], "reli": [26, 28, 30], "descriptive_stat": 26, "methodolog": 26, "plotli": 26, "machinelearningplu": 26, "oreilli": 26, "9781491912126": 26, "ch04": 26, "interconnected": 27, "strength": [27, 32], "direct": 27, "wherea": [27, 32], "monoton": 27, "rho": 27, "d_i": 27, "r_": 27, "rg": 27, "rg_x": 27, "rg_y": 27, "pinpoint": 27, "pearson_corr": 27, "spearman_corr": 27, "cm": 27, "causat": 27, "meet": [27, 28], "corr_matrix": 27, "surpris": 27, "thereof": 27, "deliver": 27, "stage": [27, 30], "thoughtfulli": 27, "geo": 27, "fu": 27, "berlin": 27, "de": 27, "soga": 27, "inferenti": 27, "sound": 28, "heart": 28, "elev": 28, "summat": 28, "unpredict": 28, "ss": 28, "aa": 28, "randomli": 28, "incorrectli": 28, "faster": [28, 31], "intens": 28, "jump": 28, "150": 28, "virginica": 28, "versicolor": 28, "petal": 28, "disord": 28, "decid": 28, "criterion": 28, "puriti": 28, "decisiontreeclassifi": 28, "clf_entropi": 28, "y_pred_entropi": 28, "clf_gini": 28, "y_pred_gini": 28, "importances_entropi": 28, "feature_importances_": 28, "importances_gini": 28, "9777777777777777": 28, "agre": 28, "worth": 28, "redund": 28, "tweak": 28, "prune": 28, "joint": 28, "properli": 28, "tricki": 28, "invari": 28, "suffer": 28, "causal": [28, 30], "misinterpret": 28, "feature_select": 28, "mutual_info_classif": 28, "x_normal": 28, "mi": 28, "08486414": 28, "49537028": 28, "24562179": 28, "9858617": 28, "99351315": 28, "df1": 28, "df2": 28, "shapiro": 28, "leven": 28, "bartlett": 28, "hoc": 28, "factori": 28, "selectkbest": 28, "f_classif": 28, "k_best_featur": 28, "score_func": 28, "pvalues_": 28, "scores_": 28, "6f": 28, "588": 28, "235294": 28, "119": [28, 32], "264502": 28, "364461": 28, "1179": 28, "034328": 28, "959": 28, "324406": 28, "systemat": 28, "forward": 28, "justifi": 28, "statsmodel": 28, "api": 28, "sm": 28, "label_encod": 28, "forward_select": 28, "significance_level": 28, "initial_featur": 28, "tolist": 28, "best_featur": 28, "remaining_featur": 28, "new_pval": 28, "new_column": 28, "ol": 28, "add_const": 28, "pvalu": 28, "min_p_valu": 28, "idxmin": 28, "selected_featur": 28, "pure": 28, "accuracy_entropi": 28, "accuracy_gini": 28, "deem": 28, "argsort": [28, 32], "barh": 28, "ytick": 28, "features_to_keep_entropi": 28, "features_to_keep_gini": 28, "refin": 28, "technic": 28, "realm": [28, 30], "clf_entropy_deep": 28, "max_depth": 28, "y_pred_entropy_deep": 28, "clf_gini_deep": 28, "y_pred_gini_deep": 28, "victorzh": 28, "mlearn": 28, "82c2123bd548": 28, "codex": 28, "cd9f99a26e0d": 28, "advanc": [29, 30, 33], "pip": [30, 31], "unlabel": 30, "cornerston": 30, "importantli": 30, "contrast": 30, "counterpart": 30, "upcom": 30, "y_intercept": 30, "entail": 30, "establish": 30, "slope": 30, "indpend": 30, "hat": 30, "beta": 30, "_1": 30, "_0": 30, "isol": [30, 32], "still": [30, 32], "consequ": 30, "foot": 30, "_i": 30, "2_i": 30, "wors": 30, "linearregress": [30, 31, 32], "intercept_": [30, 32], "coef_": [30, 31, 32], "marker": 30, "o": 30, "vline": 30, "ymin": 30, "ymax": 30, "nsse": 30, "fontsiz": 30, "bbox": 30, "dict": 30, "facecolor": 30, "yellow": 30, "inferior": 30, "inferior_slop": 30, "inferior_intercept": 30, "inferior_predict": 30, "inferior_ss": 30, "purpl": 30, "shown": 30, "scatterplot": 30, "yet": 30, "dimenion": 30, "clinic": 30, "subspac": 30, "ambient": 30, "human": 30, "meaningfulli": 30, "teach": 30, "bend": 30, "cancel": 30, "penal": [30, 32], "2r": 30, "farther": 30, "pm": 30, "thank": 30, "strictli": [30, 31], "inclin": 30, "mine": 30, "static": 30, "anim": 30, "confabul": [30, 31], "against": 30, "publicli": 30, "toi": 30, "housing_data": 30, "squarefeet": 30, "bedroom": 30, "bathroom": 30, "850": 30, "200000": 30, "suburban": 30, "900": 30, "205000": 30, "urban": 30, "1200": 30, "210000": 30, "rural": 30, "950": 30, "215000": 30, "220000": 30, "ipykernel_288722": 30, "737031205": 30, "aim": 30, "reserv": 30, "wasn": 30, "memor": 30, "2d": 30, "suffici": 30, "footag": 30, "sq": 30, "ft": 30, "107": 30, "6641786": 30, "103044": 30, "81439951799": 30, "datapoint": 30, "x_n": [31, 32], "environment": 31, "practition": 31, "beta_0": [31, 32], "beta_1x_1": [31, 32], "beta_2x_2": [31, 32], "beta_nx_n": [31, 32], "beta_1": [31, 32], "beta_2": 31, "beta_n": [31, 32], "hold": 31, "homoscedast": [31, 32], "inflat": 31, "vif": 31, "peek": [31, 32], "hope": 31, "achiev": [31, 32], "incom": 31, "spending_scor": 31, "hopefulli": 31, "ye": 31, "customer_data": [31, 32], "x_var": 31, "y_var": 31, "reg": 31, "fig": 31, "suptitl": 31, "versu": 31, "spend": 31, "eventu": 31, "rare": 31, "x_test_scaled_df": 31, "set_titl": 31, "explanatori": 31, "disproportion": [31, 32], "penalti": [31, 32], "undesir": 31, "punish": 31, "mean_squared_error": [31, 32], "r2_score": [31, 32], "r2": [31, 32], "3183": 31, "330047035957": 31, "13751568541102366": 31, "34198373": 31, "53651751": 31, "put": 31, "predict_original_scale_datafram": 31, "input_df": 31, "input_sc": 31, "50000": 31, "crunch": 31, "31964941598494": 31, "diabet": 31, "toy_dataset": 31, "abl": 31, "load_diabet": 31, "as_fram": [31, 32], "bmi": 31, "bp": 31, "s1": 31, "s2": 31, "s3": 31, "s4": 31, "s5": 31, "s6": 31, "038076": 31, "050680": 31, "061696": 31, "021872": 31, "044223": 31, "034821": 31, "043401": 31, "002592": 31, "019907": 31, "017646": 31, "001882": 31, "044642": 31, "051474": 31, "026328": 31, "008449": 31, "019163": 31, "074412": 31, "039493": 31, "068332": 31, "092204": 31, "085299": 31, "044451": 31, "005670": 31, "045599": 31, "034194": 31, "032356": 31, "002861": 31, "025930": 31, "089063": 31, "011595": 31, "036656": 31, "012191": 31, "024991": 31, "036038": 31, "034309": 31, "022688": 31, "009362": 31, "005383": 31, "036385": 31, "003935": 31, "015596": 31, "008142": 31, "031988": 31, "046641": 31, "151": 31, "141": 31, "206": 31, "135": 31, "fun": [31, 32], "statolog": 31, "astut": 32, "dure": 32, "perfectli": 32, "mx": 32, "steer": 32, "unlimit": 32, "arbitrarili": 32, "unlik": 32, "beta_2x_1": 32, "beta_nx_1": 32, "polynomialfeatur": 32, "demo": 32, "seed": 32, "exactli": 32, "newaxi": 32, "linear_regressor": 32, "y_pred_linear": 32, "poly_features2": 32, "x_poly2": 32, "poly_regressor2": 32, "y_pred_poly2": 32, "poly_features3": 32, "x_poly3": 32, "poly_regressor3": 32, "y_pred_poly3": 32, "poly_features5": 32, "x_poly5": 32, "poly_regressor5": 32, "y_pred_poly5": 32, "r2_linear": 32, "r2_poly2": 32, "r2_poly3": 32, "r2_poly5": 32, "yi": 32, "sorted_axi": 32, "x_1x_2": 32, "2x_2": 32, "appar": 32, "autocorrel": 32, "violat": 32, "drawn": 32, "expans": 32, "bundl": 32, "forget": 32, "preprocessor": 32, "poli": 32, "machineri": 32, "although": 32, "deploi": 32, "reach": 32, "via": 32, "coef": 32, "x_plot": 32, "y_plot": 32, "x27": 32, "pipelineifittedpipelin": 32, "polynomialfeaturespolynomialfeatur": 32, "linearregressionlinearregress": 32, "00193104": 32, "3848762": 32, "00349368": 32, "16571691": 32, "32345315": 32, "absolut": 32, "shrink": 32, "neglig": 32, "littl": 32, "ordinari": 32, "beta_j": 32, "l1": 32, "illustr": 32, "lasso_poli": 32, "10000": 32, "55260439": 32, "72240286": 32, "90811749": 32, "66350745": 32, "19943027115730638": 32, "arbitrari": 32, "shrunk": 32, "trade": 32, "opposit": 32, "mainli": 32, "ridge_poli": 32, "05626925": 32, "75667935": 32, "06069885": 32, "96459941": 32, "14654769263455236": 32, "california": 32, "thought": 32, "art": 32, "starter": 32, "fetch_california_h": 32, "fetch": 32, "medinc": 32, "houseag": 32, "averoom": 32, "avebedrm": 32, "aveoccup": 32, "latitud": 32, "longitud": 32, "3252": 32, "984127": 32, "023810": 32, "555556": 32, "122": 32, "3014": 32, "238137": 32, "971880": 32, "2401": 32, "109842": 32, "2574": 32, "288136": 32, "073446": 32, "496": 32, "802260": 32, "6431": 32, "817352": 32, "073059": 32, "558": 32, "547945": 32, "8462": 32, "281853": 32, "081081": 32, "565": 32, "181467": 32, "standardscalerstandardscal": 32, "ridgeridg": 32, "2980353830641": 32, "472": 32, "3621683634644": 32, "concret": 32, "fraction": 32, "dollar": 32, "20046": 32, "6812": 32, "192201": 32, "022284": 32, "1392": 32, "877437": 32, "70k": 32, "53k": 32, "scientiast": 33, "week": 33, "supervis": 33, "unsupervis": 33, "reduct": 33, "capston": 33, "project": 33, "join": 33, "invit": 33, "v4dsssc5": 33}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"100": [0, 2, 33], "dai": [0, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32, 33], "machin": [0, 1, 2, 11, 14, 33], "learn": [0, 1, 2, 11, 14, 29, 30, 33], "challeng": [0, 1, 8, 33], "overview": [0, 2, 17, 22, 30, 33], "cours": [0, 4, 10, 16, 23, 29, 33], "structur": [0, 2, 4, 7, 8, 9, 10, 16, 23, 29, 33], "modul": [0, 1, 2, 4, 9, 10, 16, 23, 29], "1": [0, 1, 2, 4, 5, 7, 9, 10, 11, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28], "introduct": [0, 1, 2, 4, 10, 11, 12, 13, 14, 15, 17, 21, 22, 24, 25, 28, 30, 31, 32], "python": [0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31], "basic": [0, 1, 2, 4, 5, 7, 9, 10, 11, 12, 13, 15, 17, 20, 30], "mathemat": [0, 1, 2, 4, 10, 13, 14, 15, 18, 21, 22, 27, 30], "week": [0, 1, 2, 4, 9, 10, 16, 23, 29], "2": [0, 1, 2, 4, 6, 7, 10, 11, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28], "data": [0, 1, 2, 6, 7, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 30], "preprocess": [0, 1, 2, 16, 17, 18, 21, 23, 31], "exploratori": [0, 1, 2, 16, 23, 24], "analysi": [0, 1, 2, 16, 19, 21, 22, 23, 24, 25, 26, 27, 28, 30], "3": [0, 1, 2, 7, 11, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "4": [0, 1, 2, 8, 11, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "supervis": [0, 1, 2, 29, 30], "regress": [0, 1, 2, 20, 28, 29, 30, 31, 32], "classif": [0, 1, 2, 19, 29], "5": [0, 1, 2, 9, 11, 13, 18, 19, 20, 21, 22, 24, 29], "6": [0, 1, 2, 11, 19, 20, 21, 24, 29], "unsupervis": [0, 1, 2, 30], "dimension": [0, 1, 2], "reduct": [0, 1, 2], "7": [0, 1, 2, 12, 19, 21], "9": [0, 1, 2, 14], "deep": [0, 1, 2, 22, 25], "foundat": [0, 1, 21, 30], "10": [0, 1, 2, 15], "12": [0, 1, 2, 18, 19], "advanc": [0, 1, 2, 11, 18, 20, 24, 26, 28, 32], "current": [0, 1, 2], "trend": [0, 1, 2], "13": [0, 1, 2, 20], "14": [0, 1, 2, 21], "practic": [0, 1, 6, 13, 18, 20, 21, 22, 24, 25, 26, 27, 28], "aspect": [0, 1], "15": [0, 1, 2, 22], "17": [0, 1, 2, 25], "8": [0, 1, 2, 13, 19, 21], "appli": [0, 1, 2, 13, 21, 24], "ai": [0, 1, 2, 9], "ethic": [0, 1, 2], "consider": [0, 1, 18, 20, 21, 22], "18": [0, 1, 2, 26], "19": [0, 1, 2, 27], "capston": [0, 1, 2], "project": [0, 1, 2, 5, 6, 7, 8, 9, 11], "20": [0, 1, 2, 28], "21": [0, 1, 2, 30], "join": 0, "our": 0, "commun": 0, "social": [0, 33], "media": [0, 33], "contact": [0, 9, 33], "daili": [1, 2, 8], "curriculum": [1, 2], "numer": [1, 2, 4, 17], "oper": [1, 2, 4, 6, 11, 12], "concept": [1, 2, 10, 13, 14, 15, 28, 30, 31], "eda": [1, 2, 23, 24, 25], "ensembl": [1, 2], "method": [1, 2, 20, 28, 30], "neural": [1, 2], "network": [1, 2], "11": [1, 2, 17], "convolut": [1, 2], "cnn": [1, 2], "recurr": [1, 2], "rnn": [1, 2], "reinforc": [1, 2], "topic": [1, 2, 11], "mlop": [1, 2], "16": [1, 2, 24], "etl": [1, 2], "process": [1, 2], "transform": [1, 2], "industri": [1, 2], "sector": [1, 2], "applic": [1, 2, 9, 11, 13, 14], "cybersecur": [1, 2], "resourc": [2, 5, 6, 7, 8, 11, 13, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 31, 32], "jupyt": 2, "notebook": 2, "lesson": [2, 8], "syntax": [2, 5, 9], "variabl": [2, 5, 13, 20, 25], "type": [2, 6, 7, 17, 20, 21, 22], "control": [2, 7, 8], "loop": [2, 7], "condit": [2, 8], "statement": [2, 7, 8, 9], "function": [2, 9, 13], "linear": [2, 11, 12, 30, 31], "algebra": [2, 11, 12], "vector": [2, 11], "matric": [2, 12], "matrix": [2, 12, 19, 27], "calculu": [2, 13, 14], "deriv": [2, 13], "integr": [2, 14, 20], "fundament": [2, 14], "theorem": [2, 14, 24], "probabl": [2, 15], "statist": [2, 15, 17, 19, 20, 21, 22, 24, 26], "relev": [2, 15], "distribut": [2, 15, 24, 26], "handl": [2, 20], "miss": [2, 20], "normal": [2, 21], "scale": [2, 17, 21], "us": [2, 13, 14, 17, 20, 21, 27, 28, 30], "encod": [2, 22], "categor": [2, 22], "split": [2, 18, 19, 20, 21, 30], "train": [2, 18, 20, 21, 30], "test": [2, 9, 18, 20, 21, 24, 28, 30], "set": [2, 5, 20, 21], "visual": [2, 11, 20, 21, 22, 24, 25, 27, 30], "implement": [2, 11, 13, 14, 15, 20, 21, 22, 26, 28, 30, 31], "descript": [2, 13, 15, 24, 26], "techniqu": [2, 18, 19, 20, 21, 22, 24, 25, 28, 32], "correl": [2, 19, 27], "featur": [2, 22, 28], "select": [2, 28], "import": [2, 9, 11, 13, 15, 17, 21, 28, 30], "22": [2, 31], "multipl": [2, 11, 12, 31], "23": [2, 32], "polynomi": [2, 32], "lasso": [2, 32], "ridg": [2, 32], "24": 2, "model": [2, 18, 19, 20, 30, 31], "evalu": [2, 18, 20, 31], "metric": [2, 31], "25": 2, "address": 2, "overfit": 2, "underfit": 2, "26": 2, "logist": 2, "27": 2, "k": 2, "nearest": 2, "neighbor": 2, "nn": 2, "algorithm": 2, "28": 2, "support": 2, "svm": 2, "nonlinear": 2, "29": 2, "decis": [2, 28], "tree": 2, "rule": [2, 12, 13], "base": [2, 20], "30": [2, 28], "naiv": 2, "bay": 2, "classifi": 2, "31": 2, "32": 2, "bag": 2, "random": [2, 20, 28], "forest": [2, 28], "33": 2, "boost": 2, "adaboost": 2, "34": 2, "gradient": 2, "gbm": 2, "xgboost": 2, "35": 2, "Their": 2, "36": 2, "cluster": 2, "37": 2, "mean": [2, 24, 25], "differ": [2, 13, 17, 30], "38": 2, "hierarch": 2, "39": 2, "densiti": 2, "dbscan": 2, "40": 2, "gaussian": 2, "mixtur": 2, "gmm": 2, "expect": 2, "maxim": 2, "41": 2, "pca": 2, "42": 2, "43": 2, "singular": 2, "valu": [2, 9, 19, 25], "decomposit": 2, "svd": 2, "Its": 2, "44": 2, "t": 2, "sne": 2, "45": 2, "other": 2, "46": 2, "understand": [2, 7, 9, 13, 15, 17, 20, 21, 22, 26, 27, 28, 31], "perceptron": 2, "47": 2, "feedforward": 2, "activ": [2, 11, 12, 13, 17, 21, 22, 24, 25, 26, 27, 28], "48": 2, "backpropag": 2, "49": 2, "loss": 2, "optim": 2, "50": 2, "tune": 2, "perform": [2, 19, 20], "51": 2, "layer": 2, "52": 2, "pool": 2, "architectur": 2, "53": 2, "imag": 2, "54": 2, "55": 2, "transfer": 2, "56": 2, "57": 2, "long": 2, "short": 2, "term": 2, "memori": 2, "lstm": 2, "58": 2, "build": [2, 30], "sequenc": 2, "59": 2, "time": 2, "seri": 2, "60": 2, "util": 2, "natur": [2, 28], "languag": 2, "nlp": 2, "61": 2, "62": 2, "markov": 2, "63": 2, "q": 2, "64": 2, "dqn": 2, "65": 2, "polici": 2, "66": 2, "depth": [2, 18, 19, 25, 26], "67": 2, "gener": [2, 20], "adversari": 2, "gan": 2, "68": 2, "attent": 2, "mechan": 2, "69": 2, "autoencod": 2, "70": 2, "research": 2, "emerg": 2, "ml": [2, 9], "71": 2, "lifecycl": 2, "72": 2, "version": [2, 8], "experi": 2, "track": 2, "73": 2, "ci": 2, "cd": 2, "74": 2, "monitor": 2, "mainten": 2, "75": 2, "tool": 2, "platform": 2, "76": 2, "extract": 2, "77": 2, "78": 2, "load": [2, 18, 20, 21, 22], "databas": 2, "manag": 2, "79": 2, "an": 2, "pipelin": 2, "80": 2, "technolog": 2, "81": 2, "82": 2, "self": 2, "posit": 2, "83": 2, "84": 2, "85": 2, "domain": 2, "86": 2, "bia": 2, "fair": 2, "87": 2, "privaci": 2, "secur": 2, "system": [2, 9], "88": 2, "explain": 2, "transpar": 2, "89": 2, "regul": 2, "complianc": 2, "90": 2, "make": [2, 28], "91": 2, "healthcar": 2, "92": 2, "financ": 2, "93": 2, "retail": 2, "94": 2, "manufactur": 2, "95": 2, "transport": 2, "educ": 2, "etc": 2, "96": 2, "97": 2, "identifi": 2, "threat": 2, "vulner": 2, "98": 2, "detect": 2, "prevent": 2, "99": 2, "case": 2, "studi": 2, "incid": 2, "101": 2, "plan": 2, "102": 2, "104": 2, "develop": [2, 9], "105": 2, "final": [2, 18], "present": 2, "errata": 3, "up": [5, 20], "your": [5, 7, 8, 9, 28], "environ": 5, "hand": [5, 6, 11, 17, 21, 24, 25, 26, 27], "On": [5, 6, 11, 17, 21, 24, 31, 32], "arithmet": [5, 7, 25], "further": [5, 6, 7, 8, 11, 13, 15, 28], "more": 6, "about": 6, "logic": [6, 7], "comparison": [6, 21], "calcul": [6, 12, 13, 19, 26], "solut": [6, 7, 8, 19, 25, 26], "problem": [6, 8, 13], "why": [7, 17, 20], "collect": 7, "The": [7, 12, 13, 15, 31, 32], "while": 7, "rang": [7, 17, 19], "object": [7, 13, 14, 15, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28], "break": 7, "continu": 7, "els": 7, "claus": 7, "combin": 7, "boolean": 7, "exampl": [7, 11, 13, 17, 20, 22, 28, 30], "program": [7, 9], "prime": 7, "number": [7, 9], "checker": 7, "quiz": [7, 9], "task": [7, 24, 26], "If": 8, "thi": 8, "Then": 8, "That": 8, "otherwis": 8, "do": [8, 28], "code": [8, 11, 20, 26, 28], "block": [8, 18], "last": 8, "resort": 8, "save": 8, "word": 8, "succinct": 8, "fizzbuzz": 8, "similar": 8, "altern": 8, "temperatur": 8, "analyz": [8, 21, 30], "step": [8, 11, 12, 13, 15, 18, 20, 21, 22, 26, 28], "counter": 8, "write": 9, "first": 9, "paramet": 9, "argument": 9, "arg": 9, "return": 9, "get": 9, "new": 9, "fast": 9, "via": 9, "standard": [9, 17, 19, 21, 24], "librari": [9, 11, 13, 15, 21, 22], "highlight": 9, "everi": 9, "must": 9, "know": 9, "numpi": [9, 17], "mini": 9, "guess": 9, "game": 9, "prompt": 9, "simpl": [9, 30], "book": 9, "warehous": 9, "order": [9, 17], "food": 9, "shop": 9, "cash": 9, "regist": 9, "what": [11, 12, 13], "represent": 11, "repres": 11, "addit": [11, 12, 17, 18, 20, 21, 22, 24, 25, 26, 27, 28, 31, 32], "subtract": [11, 12], "scalar": 11, "One": [11, 22], "x": 11, "magnitud": 11, "direct": 11, "dot": [11, 12], "product": [11, 12, 13], "definit": [11, 30], "geometr": 11, "interpret": [11, 19, 26, 28], "properti": [11, 12], "cross": [11, 18, 19], "norm": 11, "real": [11, 13], "world": [11, 13], "comput": [11, 27], "graphic": [11, 13], "simul": 11, "2d": 11, "movement": 11, "physic": 11, "engin": 11, "scienc": [11, 15], "summari": [11, 17, 19, 21, 22], "conclud": 11, "thought": 11, "field": 11, "beginn": 11, "necessari": [11, 15, 21, 22], "creat": [11, 12, 26], "grid": 11, "defin": [11, 13], "plot": [11, 20, 24, 25, 26], "format": 11, "displai": [11, 13, 17], "master": [12, 24, 26], "core": 12, "complex": 12, "element": 12, "wise": [12, 19], "transpos": 12, "invers": 12, "flip": 12, "revers": 12, "instruct": [12, 24], "prerequisit": [13, 14, 15, 18, 20, 21, 22, 24, 25], "ar": [13, 17], "rate": 13, "chang": 13, "slope": 13, "tangent": 13, "line": [13, 30], "notat": 13, "formula": [13, 20, 28], "power": 13, "result": [13, 28], "constant": 13, "sum": 13, "quotient": 13, "A": [13, 22, 28], "view": 13, "best": [13, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30], "conclus": [13, 15, 19, 25], "expand": [15, 22], "uncertainti": 15, "inferenti": [15, 24], "goal": 17, "workflow": 17, "setup": 17, "In": [17, 18, 19, 25, 26], "abov": [17, 30], "we": 17, "column": 17, "mode": [17, 24, 25], "could": 17, "you": 17, "non": 17, "would": 17, "varianc": [17, 19, 24], "deviat": [17, 19, 24], "between": [17, 30], "panda": 17, "quartil": [17, 19], "interquartil": [17, 19], "explor": [18, 19, 20, 21, 28], "valid": [18, 19], "theoret": [18, 30], "background": 18, "principl": [18, 27], "stratifi": 18, "roll": 18, "homework": [18, 19, 20, 24, 25, 26, 27], "assign": [18, 19, 20, 24, 25, 26, 27], "access": 18, "dataset": [18, 19, 20, 21, 22, 26, 27, 28, 30], "note": 18, "leakag": [18, 20, 21], "qualiti": [19, 25, 26, 27], "wine": [19, 25, 26, 27], "iqr": 19, "notabl": 19, "accuraci": [19, 28], "review": 19, "follow": 19, "overal": 19, "observ": 19, "report": [19, 24, 25, 26], "class": 19, "score": [19, 21], "imput": 20, "fill": 20, "ag": 20, "median": [20, 24, 25], "how": 20, "knn": 20, "mnar": 20, "Not": 20, "approach": 20, "augment": 20, "impact": 20, "histogram": [20, 24, 25, 26], "scatter": 20, "two": [20, 30], "littl": 20, "s": [20, 27, 28], "mcar": 20, "rpy2": 20, "instal": 20, "r": 20, "packag": 20, "tip": 20, "discern": 20, "comprehens": [21, 24, 26], "z": 21, "min": 21, "max": 21, "iri": [21, 28], "post": [21, 22], "analyt": [21, 28], "assess": [21, 28], "effect": 21, "implic": 22, "binari": 22, "high": 22, "cardin": 22, "hot": 22, "nomin": 22, "label": 22, "ordin": 22, "context": 22, "cabin": 22, "embark": 22, "pclass": 22, "dive": [22, 25], "titan": 22, "identif": 22, "b": 22, "c": [22, 30], "boxplot": [24, 25], "violin": [24, 25], "pair": [24, 25], "heatmap": [24, 27], "skew": 24, "kurtosi": 24, "sampl": 24, "central": [24, 25], "limit": 24, "hypothesi": 24, "tendenc": 25, "averag": 25, "middl": 25, "most": 25, "frequent": 25, "compar": 25, "measur": 25, "templat": 25, "dispers": 25, "find": 25, "discuss": 25, "box": 26, "detail": [26, 28], "requir": [26, 28], "compil": 26, "signific": 27, "pearson": 27, "spearman": 27, "coeffici": 27, "rank": 27, "common": 27, "pitfal": 27, "With": 28, "part": 28, "entropi": 28, "sum_": 28, "i": 28, "n": 28, "p_i": 28, "log_2": 28, "inform": 28, "gain": 28, "informationgain": 28, "v": 28, "frac": 28, "s_v": 28, "gini": 28, "impur": 28, "vs": 28, "when": 28, "which": 28, "conceptu": 28, "think": 28, "minut": 28, "filter": 28, "mutual": 28, "don": 28, "ts": 28, "carefulli": 28, "consid": 28, "anova": 28, "f": 28, "wrapper": 28, "stepwis": 28, "pseudo": 28, "embed": 28, "purpos": 30, "explan": 30, "equat": [30, 31], "y": 30, "mx": 30, "hyperplan": 30, "relat": 30, "dimens": 30, "fit": 30, "least": 30, "squar": 30, "scikit": 30, "matplotlib": 30, "hous": 30, "predict": 30, "price": 30, "excercis": 30, "reader": [30, 31, 32], "kei": 31, "exercis": [31, 32], "For": [31, 32], "make_pipelin": 32}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file