From 2ed492a2bec606de4c852c7857598a5db0256d19 Mon Sep 17 00:00:00 2001 From: hathawayj Date: Wed, 3 Jan 2024 21:59:53 +0000 Subject: [PATCH] deploy: d29d4ac7a3755824998dc45ff294d83db63e2b78 --- index.html | 2 +- sitemap.xml | 2 +- slides/index.html | 2 +- slides/introduction/day01/index.html | 2 +- slides/introduction/day02/index.html | 2 +- slides/introduction/index.html | 4 +-- slides/p5/d1/clean_workflow.png | Bin 33117 -> 0 bytes slides/p5/d1/index.html | 16 --------- slides/p5/d1/index.xml | 1 - slides/p5/d2/clean_workflow.png | Bin 33117 -> 0 bytes slides/p5/d2/index.html | 48 --------------------------- slides/p5/d2/index.xml | 1 - slides/p5/d3/clean_workflow.png | Bin 33117 -> 0 bytes slides/p5/d3/index.html | 36 -------------------- slides/p5/d3/index.xml | 1 - slides/p5/d4/index.html | 10 ------ slides/p5/d4/index.xml | 1 - slides/p5/index.html | 7 ---- slides/p5/index.xml | 1 - slides/p6/d2/index.html | 4 +-- slides/p6/d3/index.html | 2 +- slides/p6/d4/index.html | 2 +- slides/p6/index.html | 2 +- 23 files changed, 12 insertions(+), 134 deletions(-) delete mode 100644 slides/p5/d1/clean_workflow.png delete mode 100644 slides/p5/d1/index.html delete mode 100644 slides/p5/d1/index.xml delete mode 100644 slides/p5/d2/clean_workflow.png delete mode 100644 slides/p5/d2/index.html delete mode 100644 slides/p5/d2/index.xml delete mode 100644 slides/p5/d3/clean_workflow.png delete mode 100644 slides/p5/d3/index.html delete mode 100644 slides/p5/d3/index.xml delete mode 100644 slides/p5/d4/index.html delete mode 100644 slides/p5/d4/index.xml delete mode 100644 slides/p5/index.html delete mode 100644 slides/p5/index.xml diff --git a/index.html b/index.html index 5f32f50c..436e70bb 100644 --- a/index.html +++ b/index.html @@ -3,4 +3,4 @@

CSE 250: Data Science Programming

Using pandas, Altiar, scikit-learn, and NumPy to program with data

-
\ No newline at end of file +
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 49a56f1e..8e8947bc 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://byuistats.github.io/DS250-Cannon/slides/introduction/day02/2020-09-17T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d4/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p5/d4/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/syllabus/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/git_github_ds/pull_merge/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/introduction/day01/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d3/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p5/d3/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/pandas_altair/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-1/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/python-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p5/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d2/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p5/d2/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/json_missing/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-2/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p5/d1/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/machine-learning/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-3/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/relational_data/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/ml_sklearn/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-4/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-5/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/sql-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/munging/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-6/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/vs-code/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/altair/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/git_github/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/markdown/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/quarto-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/git_github_ds/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/faq/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slack/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/2020-10-06T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/final_coding_challenge/sp22/https://byuistats.github.io/DS250-Cannon/categories/https://byuistats.github.io/DS250-Cannon/final_coding_challenge/https://byuistats.github.io/DS250-Cannon/contact/https://byuistats.github.io/DS250-Cannon/tags/ \ No newline at end of file +https://byuistats.github.io/DS250-Cannon/slides/introduction/day02/2020-09-17T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d4/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/syllabus/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/git_github_ds/pull_merge/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/introduction/day01/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d3/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/pandas_altair/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-1/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/python-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/p6/d2/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/json_missing/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-2/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/machine-learning/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-3/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/relational_data/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/ml_sklearn/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-4/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-5/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/sql-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/munging/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/project-6/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/vs-code/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/altair/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/git_github/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/markdown/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/quarto-for-data-science/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/course-materials/git_github_ds/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/introduction/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/2020-10-12T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/faq/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/projects/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/skill_builders/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slack/2020-09-15T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/slides/2020-10-06T10:42:26+06:00https://byuistats.github.io/DS250-Cannon/final_coding_challenge/sp22/https://byuistats.github.io/DS250-Cannon/categories/https://byuistats.github.io/DS250-Cannon/final_coding_challenge/https://byuistats.github.io/DS250-Cannon/contact/https://byuistats.github.io/DS250-Cannon/tags/ \ No newline at end of file diff --git a/slides/index.html b/slides/index.html index b84fcae9..2d0868e7 100644 --- a/slides/index.html +++ b/slides/index.html @@ -3,5 +3,5 @@
\ No newline at end of file diff --git a/slides/introduction/day01/index.html b/slides/introduction/day01/index.html index e816b5ce..59caca76 100644 --- a/slides/introduction/day01/index.html +++ b/slides/introduction/day01/index.html @@ -2,7 +2,7 @@
\ No newline at end of file diff --git a/slides/introduction/day02/index.html b/slides/introduction/day02/index.html index c0ce4fd0..468ec85e 100644 --- a/slides/introduction/day02/index.html +++ b/slides/introduction/day02/index.html @@ -2,6 +2,6 @@
\ No newline at end of file diff --git a/slides/introduction/index.html b/slides/introduction/index.html index c4a6e905..d259dcbb 100644 --- a/slides/introduction/index.html +++ b/slides/introduction/index.html @@ -2,6 +2,6 @@

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/d1/clean_workflow.png b/slides/p5/d1/clean_workflow.png deleted file mode 100644 index ed2364c68dd7eff6613b6de6bde87b8523a87269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33117 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 Gum2At<(+W= diff --git a/slides/p5/d1/index.html b/slides/p5/d1/index.html deleted file mode 100644 index 2ae5f57f..00000000 --- a/slides/p5/d1/index.html +++ /dev/null @@ -1,16 +0,0 @@ -Day 1: The war with Star Wars

Day 1: The war with Star Wars

Welcome to class!

Spiritual Thought

Announcements

  1. Project 4 thoughts
    • Feature Importances - Sorted Bar Graph, not unsorted tables
    • Suppress warnings
    • And the winner is…

The Star Wars data

Load the Star Wars data

# %%
-import pandas as pd 
-import altair as alt
-import numpy as np
-
-url = 'https://github.com/fivethirtyeight/data/raw/master/star-wars-survey/StarWars.csv'
-
-dat = pd.read_csv(url)
-
-

???

What do the data look like?

Take the time to understand how the current data is organized.

First things first…

Each group should answer these questions:

  1. Where are the column names?
  2. What does each row represent?
  3. What does each column represent?

What do we want the data to look like?

Each group should answer these questions:

  1. What is the goal of this project, and how does that affect what we want from the data?
  2. What do we want each row to represent?
  3. What do we want each column to look like? Pick a few columns from the dataset and try creating an example in excel.

Cleaning data takes time

Maybe not 80% of your time, but it does take time!

Data science is frequently about doing bespoke analysis which means creating and labelling unique datasets. No matter how cleanly formatted or standardized a dataset is, it likely needs some work.

I would argue that spending time working with data to transform, explore and understand it better is absolutely what data scientists should be doing. This is the medium they are working in. Understand the material better and you’ll get better insights. ref


Structure your project, structure your thinking

Tableau on tidying data

  1. Think about your data holistically
  2. Know the basic structure of your data
  3. Keep track of your steps
  4. Spot check throughout

Compartmentalize and organize your scripts and data


What are codecs and encodings?


The .str functions in pandas

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/d1/index.xml b/slides/p5/d1/index.xml deleted file mode 100644 index ea67e107..00000000 --- a/slides/p5/d1/index.xml +++ /dev/null @@ -1 +0,0 @@ -Day 1: The war with Star Wars on DS250https://byuistats.github.io/DS250-Cannon/slides/p5/d1/Recent content in Day 1: The war with Star Wars on DS250Hugo -- gohugo.ioen-usJ. Hathaway and BYU-I ©Fri, 01 May 2020 11:02:05 +0600 \ No newline at end of file diff --git a/slides/p5/d2/clean_workflow.png b/slides/p5/d2/clean_workflow.png deleted file mode 100644 index ed2364c68dd7eff6613b6de6bde87b8523a87269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33117 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 Gum2At<(+W= diff --git a/slides/p5/d2/index.html b/slides/p5/d2/index.html deleted file mode 100644 index 6cb64fd1..00000000 --- a/slides/p5/d2/index.html +++ /dev/null @@ -1,48 +0,0 @@ -Day 2: Star Wars and strings

Day 2: Star Wars and strings

Welcome to class!

Announcements

What’s something you’re grateful for today?


The .str functions in pandas


.str.strip()

s = pd.Series(['1. Ant.  ', '2. Bee!\n', '3. Cat?\t', '4. Beat?\t', np.nan])
-
-s.str.strip()
-
-s.str.strip('123.!? \n\t')
-
-s.str.strip('1234.!? \n\t')
-
-

.str.replace()

s.str.replace('Ant.', 'Man')
-s.str.replace('a', 8)
-s.str.replace('a', '8')
-s.str.replace('a', '8', case = False)
-s.str.replace('a|e', '8', case = False)
-
-s.str.replace('\d', '', case = False)
-
-

.str.split()

s2 = pd.Series(['1-20', '21-50', '51-80', '81-100', np.nan])
-s3 = pd.Series(
-    [
-        "this is a regular sentence",
-        "https://docs.python.org/3/tutorial/index.html",
-        np.nan
-    ]
-)
-
-s2.str.split()
-s3.str.split()
-s2.str.split(pat="-")
-

.str.join() or .str.cat()

two_columns = s2.str.split("-", expand = True).rename(
-   columns = {0: 'minimum', 1: 'maximum'})
-
-two_columns.fillna("").agg("__".join, axis = 1)
-
-two_columns.minimum.str.cat(two_columns.maximum, sep = "__")
-
-

Fixing the column names

Here is some code to get you started:

url = 'https://github.com/fivethirtyeight/data/raw/master/star-wars-survey/StarWars.csv'
-
-starwars_data = pd.read_csv(url, encoding = "ISO-8859-1", skiprows = 2, header = None)
-starwars_cols = pd.read_csv(url, encoding = "ISO-8859-1", nrows = 2, header = None)
-
-starwars_cols.iloc[0,:].str.upper().str.replace(" ", "!")
-

Validating statistical summaries

len(), .query(), and .value_counts() will be your friends.


Validating visuals

You’re going to make a lot of bar charts!

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/d2/index.xml b/slides/p5/d2/index.xml deleted file mode 100644 index cc82763b..00000000 --- a/slides/p5/d2/index.xml +++ /dev/null @@ -1 +0,0 @@ -Day 2: Star Wars and strings on DS250https://byuistats.github.io/DS250-Cannon/slides/p5/d2/Recent content in Day 2: Star Wars and strings on DS250Hugo -- gohugo.ioen-usJ. Hathaway and BYU-I ©Fri, 01 May 2020 11:02:05 +0600 \ No newline at end of file diff --git a/slides/p5/d3/clean_workflow.png b/slides/p5/d3/clean_workflow.png deleted file mode 100644 index ed2364c68dd7eff6613b6de6bde87b8523a87269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33117 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 Gum2At<(+W= diff --git a/slides/p5/d3/index.html b/slides/p5/d3/index.html deleted file mode 100644 index 41f9b787..00000000 --- a/slides/p5/d3/index.html +++ /dev/null @@ -1,36 +0,0 @@ -Day 3: Validating data, cleaning columns

Day 3: Validating data, cleaning columns

Welcome to class!

Announcements

Spiritual Thought

Let’s validate some data!

Pick something from the Star Wars article you want to validate (“double check”).


Moving from categories to values.

  1. Create an additional column(s) that converts the income ranges to a number.
  2. Create an additional column(s) that converts the age ranges to a number.
  3. Create an additional column(s) that converts the school groupings to a number.

Validating visuals

You’re going to make a lot of bar charts!


Getting started on Question 3

One-hot encoding

Project 5 asks you to “one-hot encode all columns that have categories” and “convert all yes/no responses to 1/0 numeric”.

The get_dummies method can be used to create one-hot encoded variables. The pd.get_dummies documentation is a great place to start.

After reading the documentation, study the code below and get started on Grand Question #3.

#%%
-# When we use machine learning to predict salary,
-# let's only look at people that have seen at least
-# one star wars film
-starwars = starwars.query('have_seen_any == "Yes"')
-
-# Discuss - what's a better way to filter out people 
-# who haven't seen star wars?
-
-# %%
-# Format columns for machine learning
-
-# Let's try this first: convert categories to "one-hot" encodings
-shot_first_onehot = pd.get_dummies(starwars.shot_first)
-shot_first_onehot
-
-# What the difference between code above,
-# and this? Which one is better?
-shot_first_onehot = pd.get_dummies(starwars.shot_first, drop_first=True)
-shot_first_onehot
-
-# %%
-# 'get_dummies()' can also be used to convert yes/no answers to 0/1
-
-episode_i = pd.get_dummies(starwars.seen_film_i__the_phantom_menace)
-episode_i
-
-# %%
-episode_i.value_counts()
-

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/d3/index.xml b/slides/p5/d3/index.xml deleted file mode 100644 index 1c428234..00000000 --- a/slides/p5/d3/index.xml +++ /dev/null @@ -1 +0,0 @@ -Day 3: Validating data, cleaning columns on DS250https://byuistats.github.io/DS250-Cannon/slides/p5/d3/Recent content in Day 3: Validating data, cleaning columns on DS250Hugo -- gohugo.ioen-usJ. Hathaway and BYU-I ©Fri, 01 May 2020 11:02:05 +0600 \ No newline at end of file diff --git a/slides/p5/d4/index.html b/slides/p5/d4/index.html deleted file mode 100644 index 816ad575..00000000 --- a/slides/p5/d4/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Day 4: May the ML columns be with you

Day 4: May the ML columns be with you

Welcome to class!

Spiritual Thought

Announcements


Getting the data ready for machine learning.


What are machine learning algorithms expecting to see?

We need to handle missing values and categorical features before feeding the data into a machine learning algorithm, because the mathematics underlying most machine learning models assumes that the data is numerical and contains no missing values. To reinforce this requirement, scikit-learn will return an error if you try to train a model using data that contain missing values or non-numeric values when working with models like linear regression and logistic regression. ref

We have some options when converting categorical features (columns) to numeric.

  • If the category contains numeric information (like a range of numbers) we can convert it to a numeric variable by taking the minimum, average, or maximum of the range.
  • Factorization: If the category is an “ordinal” variable (meaning, there is an order to the categories) we can assign each category to an integer. (For example, good = 1, better = 2, best = 3.)
  • One-hot Encoding or Dummy Variables: If the category is a “nominal” variable (without an order) then we need to use one-hot encoding (sometimes called “dummy variable encoding").
  • If the category is some version of True/False or Yes/No then we can simply convert the values to zeros and ones.

What’s our game plan for the Star Wars columns?

1. Break into Groups

Strategize + Code + Share

  • Group 1: How are you going to turn Age, Income and Education into numbers?
  • Group 2: How are you going to encode
    • Who Shot First
    • Gender
    • Location
    • All the Yes/No responses
  • Group 3: How are you going to deal with the character rankings?

2. Combine all the factors into one big X dataframe

3. Define Y as those making > $50k

First: Limit the data to only people who answered “Yes” to the question “Have you seen any of the 6 films in the Star Wars franchise?”.

Then: Use the table below as a guide to prepare your data for machine learning.

ColumnOriginal FormatConvert To
agecategory (ordinal, age ranges)number
incomecategory (ordinal, income ranges)number
educationcategory (ordinal, name of degree)number
shot_firstcategory (nominal)one-hot
gendercategory (nominal)one-hot
locationcategory (nominal)one-hot
fan_star_warsYes/No0/1
expanded_universeYes/No0/1
fan_exapandedYes/No0/1
fan_star_trekYes/No0/1
seen_iYes/No (name of movie/NaN)0/1
seen_iiYes/No (name of movie/NaN)0/1
seen_iiiYes/No (name of movie/NaN)0/1
seen_ivYes/No (name of movie/NaN)0/1
seen_vYes/No (name of movie/NaN)0/1
seen_viYes/No (name of movie/NaN)0/1
movie rankingsnumber-
character rankingscategory (ordinal)one-hot or factorize

What functions can we use to convert the categorical columns to numeric?

Question: When and why would we drop the first column when we convert a category using pd.get_dummies()?

Answer: Whenever your algorithm needs to calculate a matrix inverse.

The one-hot encoding creates one binary variable for each category.


The problem is that this representation includes redundancy. For example, if we know that [1, 0, 0] represents “blue” and [0, 1, 0] represents “green” we don’t need another binary variable to represent “red”, instead we could use 0 values for both “blue” and “green” alone, e.g. [0, 0].


This is called a dummy variable encoding, and always represents C categories with C-1 binary variables. In addition to being slightly less redundant, a dummy variable representation is required for some models.


For example, in the case of a linear regression model (and other regression models that have a bias term), a one hot encoding will case the matrix of input data to become singular, meaning it cannot be inverted and the linear regression coefficients cannot be calculated using linear algebra. For these types of models a dummy variable encoding must be used instead.

Source


Predicting income.

Grand Question 4 wants us to “build a machine learning model that predicts whether a person makes more than $50k”.

Aka, what is our “outcome” or “response” that we want to predict?

dat_ml.income > 50000
-

Remember not to include the answer (income) in your features!

x = dat_ml.drop(['income'], axis = 1)
-

The response needs to be saved as a 0/1 variable (at least, for binary classification algorithms).

y = (dat_ml.income > 50000) / 1
-

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/d4/index.xml b/slides/p5/d4/index.xml deleted file mode 100644 index 62b4a327..00000000 --- a/slides/p5/d4/index.xml +++ /dev/null @@ -1 +0,0 @@ -Day 4: May the ML columns be with you on DS250https://byuistats.github.io/DS250-Cannon/slides/p5/d4/Recent content in Day 4: May the ML columns be with you on DS250Hugo -- gohugo.ioen-usJ. Hathaway and BYU-I ©Fri, 01 May 2020 11:02:05 +0600 \ No newline at end of file diff --git a/slides/p5/index.html b/slides/p5/index.html deleted file mode 100644 index 0e97e110..00000000 --- a/slides/p5/index.html +++ /dev/null @@ -1,7 +0,0 @@ -Week 10-11: Project 5 - Star Wars

Week 10-11: Project 5 - Star Wars

A significant portion of a data scientist’s job is data cleaning. during these two weeks we will not hide the data munging from you. We will practice data cleaning using a Star Wars survey from FiveThirtEight. Survey data is notoriously difficult to handle. Even when the data is recorded cleanly the options for ‘write in questions’, ‘choose from multiple answers’, ‘pick all that are right’, and ‘multiple choice questions’ makes storing the data in a tidy format difficult.

J. Hathaway and BYU-I ©

\ No newline at end of file diff --git a/slides/p5/index.xml b/slides/p5/index.xml deleted file mode 100644 index 354f1f4c..00000000 --- a/slides/p5/index.xml +++ /dev/null @@ -1 +0,0 @@ -Week 10-11: Project 5 - Star Wars on DS250https://byuistats.github.io/DS250-Cannon/slides/p5/Recent content in Week 10-11: Project 5 - Star Wars on DS250Hugo -- gohugo.ioen-usJ. Hathaway and BYU-I ©Fri, 01 May 2020 11:02:05 +0600 \ No newline at end of file diff --git a/slides/p6/d2/index.html b/slides/p6/d2/index.html index 1896c0b8..e4f8d929 100644 --- a/slides/p6/d2/index.html +++ b/slides/p6/d2/index.html @@ -3,5 +3,5 @@

Day 1: Git and Github

Welcome to class!

Spiritual Thought

Announcements

  1. Project 5 Comment

    • Feature Importance and Model discussion
  2. The last day of DSS is next Wednesday, Dec 6th at 6:00PM in STC 394

  3. Extra credit for creating and uploading cheat sheet (2 points for projects or checkpoints)

  4. Coding Challenge date?

  5. The technical aspects of Project 6 will be done mostly in class. Resume prep/MD outside


Git and GitHub

“Web developers’ social media platform”

This is GitHub, the world’s largest code repository platform online. A platform used by some 50 million software developers to host their coding projects, most of them open-source — meaning others can access their codes and modify them to create better versions if they feel like.


Most of the internet is produced or hosted on GitHub in the form of code. “What Gmail is to email, GitHub is to writing software,” says Kiran Jonnalagadda, cofounder of HasGeek, a platform to build and discover peer groups. Source

  • Don’t: post code for assignments that hundreds of other students have done.
  • Do: post unique code using skills from your classes.

I would also recommend using private repos to manage your course work.


Is it going to hurt?

Answer: Yes.

It feels weird at first but quickly becomes second nature. If you plan on taking more data science classes, you should know that DS 350 students are required to submit all coursework via GitHub. This is a major topic in class and office hours for the first two weeks. Then we practically never discuss it again.

More bad news. Do you use GitHub to work with other people or to coordinate your own work from multiple computers? If so, after you recover from the initial setup, Git will crush you again with merge conflicts. And this is not one-time pain, this could be a dull ache for a long time.

Managing a project via Git/GitHub is much like the Google Doc scenario and enjoys many of the same advantages. It is definitely more complicated than collaborating on a Google Doc, but this puts you in the right mindset. Source


Step 1: Download and install

Follow steps 1-4 of this tutorial.

Then:

  1. Request access tothe BYU-I Resumes page at Request Access
  2. Respond to the auto-generated email
  3. Wait a few minutes for authorization
  4. Join our GitHub organization - byuids-resumes.

If you are on a Mac, you may need:

Step 2: Create a repository from the resume template and connect to the BYUI


Step 3: Publish your resume to GitHub Pages

  • Go to settings for your repo.
  • Scroll down to the GitHub Pages section.
  • Under source select the box which says None and pick master.
  • Now select the /docs folder and click save.
  • Copy your site URL at the top of the /settings/pages location.
  • Add your link to the About section of your repository.
  • Edit the readme.md in the base repo to not show the resume directions.

Step 4: Clone repo into VS Code

Analytics Vidhya reading


Step 5: Make your resume look good

Examples:

You may also find these articles helpful:

J. Hathaway and BYU-I ©

\ No newline at end of file +active">Day 1: Git and Github
  • Week 1: Introduction
  • Day 1: Git and Github

    Welcome to class!

    Spiritual Thought

    Announcements

    1. Project 5 Comment

      • Feature Importance and Model discussion
    2. The last day of DSS is next Wednesday, Dec 6th at 6:00PM in STC 394

    3. Extra credit for creating and uploading cheat sheet (2 points for projects or checkpoints)

    4. Coding Challenge date?

    5. The technical aspects of Project 6 will be done mostly in class. Resume prep/MD outside


    Git and GitHub

    “Web developers’ social media platform”

    This is GitHub, the world’s largest code repository platform online. A platform used by some 50 million software developers to host their coding projects, most of them open-source — meaning others can access their codes and modify them to create better versions if they feel like.


    Most of the internet is produced or hosted on GitHub in the form of code. “What Gmail is to email, GitHub is to writing software,” says Kiran Jonnalagadda, cofounder of HasGeek, a platform to build and discover peer groups. Source

    • Don’t: post code for assignments that hundreds of other students have done.
    • Do: post unique code using skills from your classes.

    I would also recommend using private repos to manage your course work.


    Is it going to hurt?

    Answer: Yes.

    It feels weird at first but quickly becomes second nature. If you plan on taking more data science classes, you should know that DS 350 students are required to submit all coursework via GitHub. This is a major topic in class and office hours for the first two weeks. Then we practically never discuss it again.

    More bad news. Do you use GitHub to work with other people or to coordinate your own work from multiple computers? If so, after you recover from the initial setup, Git will crush you again with merge conflicts. And this is not one-time pain, this could be a dull ache for a long time.

    Managing a project via Git/GitHub is much like the Google Doc scenario and enjoys many of the same advantages. It is definitely more complicated than collaborating on a Google Doc, but this puts you in the right mindset. Source


    Step 1: Download and install

    Follow steps 1-4 of this tutorial.

    Then:

    1. Request access tothe BYU-I Resumes page at Request Access
    2. Respond to the auto-generated email
    3. Wait a few minutes for authorization
    4. Join our GitHub organization - byuids-resumes.

    If you are on a Mac, you may need:

    Step 2: Create a repository from the resume template and connect to the BYUI


    Step 3: Publish your resume to GitHub Pages

    • Go to settings for your repo.
    • Scroll down to the GitHub Pages section.
    • Under source select the box which says None and pick master.
    • Now select the /docs folder and click save.
    • Copy your site URL at the top of the /settings/pages location.
    • Add your link to the About section of your repository.
    • Edit the readme.md in the base repo to not show the resume directions.

    Step 4: Clone repo into VS Code

    Analytics Vidhya reading


    Step 5: Make your resume look good

    Examples:

    You may also find these articles helpful:

    \ No newline at end of file diff --git a/slides/p6/d3/index.html b/slides/p6/d3/index.html index bdccfd81..07d3f5d2 100644 --- a/slides/p6/d3/index.html +++ b/slides/p6/d3/index.html @@ -3,6 +3,6 @@

    Day 2: Commit, push, fork, and merge

    Welcome to class!

    Announcements


    Practice with Git

    GQ3: add, commit, push and a little pull

    Let’s save the changes we’ve made to our resume.


    GQ4: Fork and merge

    Get into groups of 2 or 3. Then follow the steps below:

    1. fork the other student’s resume repository.
    2. Now clone that forked repository to your computer.
    3. On your local version of the forked repository, do the following:
      A. Create a new file called feedback.md +active">Day 2: Commit, push, fork, and merge
    4. Day 1: Git and Github
    5. Week 1: Introduction

    Day 2: Commit, push, fork, and merge

    Welcome to class!

    Announcements


    Practice with Git

    GQ3: add, commit, push and a little pull

    Let’s save the changes we’ve made to our resume.


    GQ4: Fork and merge

    Get into groups of 2 or 3. Then follow the steps below:

    1. fork the other student’s resume repository.
    2. Now clone that forked repository to your computer.
    3. On your local version of the forked repository, do the following:
      A. Create a new file called feedback.md B. Make a few recommendations or notes in the feedback.md file that will help the other student improve his or her resume
      C. add, commit, push your edits
      D. Go to the forked repo on GitHub and check if the feedback.md file shows up online
    4. Now, create a pull request to get your edits into the other student’s original repo.

    Once you’ve given another student feedback, accept any pull requests submitted to your own repo. Continue to edit and improve your resume based on the feedback you received.


    GQ5: Fork into byuids-resumes

    Fork your own resume repository into the BYU-I Data Science Resumes group.

    If you change your resume after you create this fork, you will have to submit a pull request to make sure the final version of your resume shows up in the group.

    These instructions will help you create a pull request.


    \ No newline at end of file diff --git a/slides/p6/d4/index.html b/slides/p6/d4/index.html index e6124f65..a0e7f314 100644 --- a/slides/p6/d4/index.html +++ b/slides/p6/d4/index.html @@ -3,5 +3,5 @@

    Day 3: Resume Fork and Merge

    Remember from last class: pull, add, commit, push.


    Making edits in another user’s repo

    Breakout Room Activity

    Each student in the breakout room is going to provide feedback on another student’s resume. The breakout room should begin with a group discussion about the work you’ve each done on your resume and any questions the group has. Then follow the steps below.

    1. fork the other student’s resume repository.
    2. Now clone that forked repository to your computer.
    3. On your local version of the forked repository, do the following;
      A. Create a new file called edits.md and save it in the main folder or the repository.
      B. Make a few recommendations or notes in the edits.md file that will help the other student improve his or her resume.
      C. add, commit, push your edits.
      D. Go to the forked repo on GitHub and check if the edits.md file shows up online.
    4. Now, create a pull request to get your edits into the other student’s original repo.

    Once you’ve given another student feedback, accept any pull requests submitted to your own repo. Continue to edit and improve your resume based on the feedback you received.


    Creating a fork in byuids-resumes

    Fork your own resume repository into the BYU-I Data Science Resumes group.

    If you change your resume after you create this fork, you will have to submit a pull request to make sure the final version of your resume shows up in the group.

    These instructions will help you create a pull request.


    Open time to finalize your resume

    Day 3: Resume Fork and Merge

    Remember from last class: pull, add, commit, push.


    Making edits in another user’s repo

    Breakout Room Activity

    Each student in the breakout room is going to provide feedback on another student’s resume. The breakout room should begin with a group discussion about the work you’ve each done on your resume and any questions the group has. Then follow the steps below.

    1. fork the other student’s resume repository.
    2. Now clone that forked repository to your computer.
    3. On your local version of the forked repository, do the following;
      A. Create a new file called edits.md and save it in the main folder or the repository.
      B. Make a few recommendations or notes in the edits.md file that will help the other student improve his or her resume.
      C. add, commit, push your edits.
      D. Go to the forked repo on GitHub and check if the edits.md file shows up online.
    4. Now, create a pull request to get your edits into the other student’s original repo.

    Once you’ve given another student feedback, accept any pull requests submitted to your own repo. Continue to edit and improve your resume based on the feedback you received.


    Creating a fork in byuids-resumes

    Fork your own resume repository into the BYU-I Data Science Resumes group.

    If you change your resume after you create this fork, you will have to submit a pull request to make sure the final version of your resume shows up in the group.

    These instructions will help you create a pull request.


    Open time to finalize your resume

    \ No newline at end of file diff --git a/slides/p6/index.html b/slides/p6/index.html index d2bc580f..ff69f15d 100644 --- a/slides/p6/index.html +++ b/slides/p6/index.html @@ -3,5 +3,5 @@

    Week 12-13: Project 6 - Github

    GitHub is the communication tool for Data Scientists and developers. As students, you will want to curate your creative work on GitHub using Git. GitHub is the place to share your original work, not your homework assignments. Many people store their personal websites, blogs, and project websites on GitHub. Our textbook and course are hosted on GitHub, and you can see J. Hathaway’s or Ryan Hafen’s personal Data Science websites that are hosted on GitHub as well. You will be making your public resume that will be hosted on GitHub for this project.

    In the process of this project, we will be learning the process of Git and the tools of GitHub. We will use the Git process to have others in our class to edit our resumes. Take the process seriously (pick a suitable username and write a good resume), and you will have the beginning of your social presence in the DS/CS space.

    Grand Questions

    1. Join the BYUI Data Science Resumes GitHub organization and use the template repository to make a resume repository under your repositories. A good name might be LASTNAME-Resume.
    2. Clone your repository to your computer and build a first draft of your resume.
    3. Push your results to GitHub and have another student fork your repository to make edits.
    4. Accept the proposed changes from the student review and finish your final version.
    5. Make sure your resume is forked by BYU-I Data Science Resumes

    Week 12-13: Project 6 - Github

    GitHub is the communication tool for Data Scientists and developers. As students, you will want to curate your creative work on GitHub using Git. GitHub is the place to share your original work, not your homework assignments. Many people store their personal websites, blogs, and project websites on GitHub. Our textbook and course are hosted on GitHub, and you can see J. Hathaway’s or Ryan Hafen’s personal Data Science websites that are hosted on GitHub as well. You will be making your public resume that will be hosted on GitHub for this project.

    In the process of this project, we will be learning the process of Git and the tools of GitHub. We will use the Git process to have others in our class to edit our resumes. Take the process seriously (pick a suitable username and write a good resume), and you will have the beginning of your social presence in the DS/CS space.

    Grand Questions

    1. Join the BYUI Data Science Resumes GitHub organization and use the template repository to make a resume repository under your repositories. A good name might be LASTNAME-Resume.
    2. Clone your repository to your computer and build a first draft of your resume.
    3. Push your results to GitHub and have another student fork your repository to make edits.
    4. Accept the proposed changes from the student review and finish your final version.
    5. Make sure your resume is forked by BYU-I Data Science Resumes
    \ No newline at end of file