[Kgg]Tabular Playground Series (Dec. 2021)

Tabular_Playground_Series_Dec(2021)




origin of dictation


이어지는 포스팅 :
Kgg_TPS 02

Description of competition

data overview

TPS12_overView

Kaggle에서 매달 1일에 data scientists의 Featured competitions을 위해 beginner- friendly로 제공하는 대회


The study area includes four wilderness areas located in
the Roosevelt National Forest of northern Colorado.
Each observation is a 30m x 30m patch.
You are asked to predict an integer classification for the forest cover type(FCT).


The seven types are:

1 - Spruce/Fir
2 - Lodgepole Pine
3 - Ponderosa Pine
4 - Cottonwood/Willow
5 - Aspen
6 - Douglas-fir
7 - Krummholz

The training set (15120 observations) contains both features and the Cover_Type.
The test set contains only the features.
You must predict the Cover_Type for every row in the test set (565892 observations).


Data Fields


Elevation - 미터 단위 고도
Aspect - 방위각의 종횡비 (위치)
Slope - 경사 기울기
Horizontal_Distance_To_Hydrology - 해수면까지의 수평거리
Vertical_Distance_To_Hydrology - 해수면까지의 수직거리
Horizontal_Distance_To_Roadways - 도로와의 수평 거리
Hillshade_9am (0 to 255 index) - 여름, 오전 9시 Hillshade
Hillshade_Noon (0 to 255 index) - 여름, 정오 Hillshade
Hillshade_3pm (0 to 255 index) - 여름, 오후 3시 Hillshade
Horizontal_Distance_To_Fire_Points - 산불 발화점까지 수평거리

Wilderness_Area

: 야생지역
- 4 개의 columns (토양 유형 지정)
+ 0 = 없음
+ 1 = 있음

Soil_Type

: 토양 유형 지정
- 40 개의 columns
+ 0 = 없음
+ 1 = 있음


Cover_Type

FCT 지정
br> - 7 개 columns

+ 0 = 없음

+ 1 = 있음



The wilderness areas are:



1 - Rawah Wilderness Area
2 - Neota Wilderness Area
3 - Comanche Peak Wilderness Area
4 - Cache la Poudre Wilderness Area


The soil types are:


1 Cathedral family - Rock outcrop complex, extremely stony.

2 Vanet - Ratake families complex, very stony.

3 Haploborolis - Rock outcrop complex, rubbly.

4 Ratake family - Rock outcrop complex, rubbly.

5 Vanet family - Rock outcrop complex complex, rubbly.

6 Vanet - Wetmore families - Rock outcrop complex, stony.

7 Gothic family. Na

8 Supervisor - Limber families complex.

9 Troutville family, very stony.

10 Bullwark - Catamount families - Rock outcrop complex, rubbly.

11 Bullwark - Catamount families - Rock land complex, rubbly.

12 Legault family - Rock land complex, stony.

13 Catamount family - Rock land - Bullwark family complex, rubbly.

14 Pachic Argiborolis - Aquolis complex.

15 unspecified in the USFS Soil and ELU Survey. (Na)

16 Cryaquolis - Cryoborolis complex.

17 Gateview family - Cryaquolis complex.

18 Rogert family, very stony.

19 Typic Cryaquolis - Borohemists complex.

20 Typic Cryaquepts - Typic Cryaquolls complex.

21 Typic Cryaquolls - Leighcan family, till substratum complex.

22 Leighcan family, till substratum, extremely bouldery.

23 Leighcan family, till substratum - Typic Cryaquolls complex.

24 Leighcan family, extremely stony.

25 Leighcan family, warm, extremely stony.

26 Granile - Catamount families complex, very stony.

27 Leighcan family, warm - Rock outcrop complex, extremely stony.

28 Leighcan family - Rock outcrop complex, extremely stony.

29 Como - Legault families complex, extremely stony.

30 Como family - Rock land - Legault family complex, extremely stony.

31 Leighcan - Catamount families complex, extremely stony.

32 Catamount family - Rock outcrop - Leighcan family complex, extremely stony.

33 Leighcan - Catamount families - Rock outcrop complex, extremely stony.

34 Cryorthents - Rock land complex, extremely stony.

35 Cryumbrepts - Rock outcrop - Cryaquepts complex.

36 Bross family - Rock land - Cryumbrepts complex, extremely stony.

37 Rock outcrop - Cryumbrepts - Cryorthents complex, extremely stony.

38 Leighcan - Moran families - Cryaquolls complex, extremely stony.

39 Moran family - Cryorthents - Leighcan family complex, extremely stony.

40 Moran family - Cryorthents - Rock land complex, extremely stony.

  • 경사(Slope) : 어떤 지점의 지반이 수평을 기준으로 몇도 기울어져 있는가
    • θ(theta) 로 표현
    • 각이 클 수록 지반의 경사가 급하고 각이 0이면 평편한 지반
  • 향(Aspect): 지반의 경사면이 어디를 향하는가
    • 북: 0도, 동: 90도, 남: 180도, 서: 270도.
    • 완전히 평편할 경우 GIS 시스템마다 다른 값, Null 가능, (-1과 같은 값이 적당)

Ref.


Evaluation

TPS12_Evaluation

각각의 ID 를 cover type 과 Matching하여 file format 형태를 만들어 제출 하면 됩니다.

NLP_text_classification

##Kaggle _ API

  1. !pip Install Kaggle : Kaggle 설치
  2. google.colab에 kaggle.json files upload
    1. Saving kaggle.json to kaggle.json
    2. User uploaded file “kaggle.json” with length 66 bytes
    3. kaggle.json file에는 뭐가 들어있을까 너무 궁금하다.
  3. !kaggle competitions download -c nlp-getting-started
    1. 케글 대회 자료를 다운받기. (-c nlp-getting-started 이게 뭘까)
  4. data path 설정하기

##data 둘러보기

  1. data frame을 만들기 위해 Pandas와 numpy를 import후 각 file을 data set을 Load해 준다.
  2. data set 확인
    1. .head()로 대략적인 data set 확인
    2. .shape로 각 data set의 크기 확인
    3. .info()로 각 data frame의 정보 확인

##EDA
EDA

: 수집한 data를 다양한 각도에서 관찰하고 이해하는 과정

: 통계적 방법으로 자료를 직관적으로 바라보는 과정

  • data의 분포 및 값을 검토함으로써 데이터가 표현하는 현상을 더 잘 이해하고, 잠재적 문제를 발견 할 수 있다.
  • 문제를 발견하여 기존의 가설을 수정하거나 새로운 가설을 세울 수 있다.
  1. data visualiztion을 위해 matplotlib.pyplot과 seaborn 설치
    1. missing_colunms = [“keyword”, “location”]
    2. 각 data set에서 null인 columns를 가져온다.
  2. matplotlib.pyplot으로 bar plot 그리기
    MP_EDA

##Feature Engineering
##Mideling
##algorithm logistic regression

to prepare kaggle Competition

#Kaggle Competition 준비하기

Kaggle Note 에서 작성됨.

  1. files and Library import
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt

import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go
import plotly.figure_factory as ff
from plotly.subplots import make_subplots
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected=True)
pio.templates.default = "none"
# import plotly.offline as py
# py.offline.init_notebook_mode()

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))

import warnings
warnings.filterwarnings("ignore")

result

/kaggle/input/kaggle-survey-2018/SurveySchema.csv /kaggle/input/kaggle-survey-2018/freeFormResponses.csv /kaggle/input/kaggle-survey-2018/multipleChoiceResponses.csv /kaggle/input/kaggle-survey-2017/freeformResponses.csv /kaggle/input/kaggle-survey-2017/schema.csv /kaggle/input/kaggle-survey-2017/RespondentTypeREADME.txt /kaggle/input/kaggle-survey-2017/multipleChoiceResponses.csv /kaggle/input/kaggle-survey-2017/conversionRates.csv /kaggle/input/kaggle-survey-2020/kaggle_survey_2020_responses.csv /kaggle/input/kaggle-survey-2020/supplementary_data/kaggle_survey_2020_methodology.pdf /kaggle/input/kaggle-survey-2020/supplementary_data/kaggle_survey_2020_answer_choices.pdf /kaggle/input/kaggle-survey-2021/kaggle_survey_2021_responses.csv /kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_methodology.pdf /kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_answer_choices.pdf /kaggle/input/kaggle-survey-2019/survey_schema.csv /kaggle/input/kaggle-survey-2019/multiple_choice_responses.csv /kaggle/input/kaggle-survey-2019/other_text_responses.csv /kaggle/input/kaggle-survey-2019/questions_only.csv

  1. dataframe create
1
2
3
4
5
df17= pd.read_csv("/kaggle/input/kaggle-survey-2017/multipleChoiceResponses.csv", encoding="ISO-8859-1")
df18= pd.read_csv("/kaggle/input/kaggle-survey-2018/multipleChoiceResponses.csv", )
df19= pd.read_csv("/kaggle/input/kaggle-survey-2019/multiple_choice_responses.csv", )
df20= pd.read_csv("/kaggle/input/kaggle-survey-2020/kaggle_survey_2020_responses.csv", )
df21= pd.read_csv("/kaggle/input/kaggle-survey-2021/kaggle_survey_2021_responses.csv", )
  1. data 확인하기
1
2
3
4
5
df21 = df21.iloc[1:, :]
#df21.value_counts()
#df21.count

df21.head()

df21.head

  1. data 1개씩 표로 만들어서 불러오기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
country = (
df21['Q3']
.value_counts()
.to_frame()
.reset_index()
.rename(columns={'index':'country', 'Q3':'Count'})
.sort_values(by=['country'], ascending=False)
)

Wage = (
df21['Q25']
.value_counts()
.to_frame()
.reset_index()
.rename(columns={'index':'Wage', 'Q25':'Count'})
.sort_values(by=['Wage'], ascending=True)
)

Wage

Problem

나라별 임금을 확인 하기 위해
temp에 나라이름과 임금에 대해 넣었다.
C_ls : country list라는 List를 만들어 나라 별로 임금을 뽑을 수 있었다.

1
2
3
4
5
6
# India, Russia, China
temp = df21[['Q3','Q25']]

print(temp['Q3'].unique())

C_Ls = temp['Q3'].unique() #나라이름 뽑아주기

Unique함수

1
2
3
4
5

tempR = temp[temp['Q3'] == str(C_Ls[0])].value_counts()


# 이 경우에는 temp가 가공 할 수 없는 templet이기 때문에 plot을 그릴 수가 없다.

temp_noncalculable




trouble shooting

1
2
3
4
5
6
7
8
9
10
11
12
13
#선생님
temp= df21[['Q3','Q25']]
temp = temp.groupby(['Q3','Q25'])
.size()
.reset_index()
.rename(columns = {0:"Count"})

C_Ls = temp['Q3'].unique()

for i in range(1,len(df21['Q3'])):
temp2 = temp[temp['Q3'] == str(C_Ls[i])]
fig = px.bar(temp2, x='Q25', y='Count',title=C_Ls[i])
fig.show()

선생님의 도움을 받아 for문 안에 나라 이름을 넣어서

모든 나라의 임금을 확인 할 수 있었다.

모든 나라의 임금을 확인 했는데, 차별이 심한 나라를 찾기 힘들었다.

뭐때문에 이 graph를 그리려고 했는지 잃어버렸다.

  1. 한국에서 돈 잘 벌려면 어떤 직업, 어떤 … 을 해야 하는가
  2. 한국보다 평균임금이 더 많은 나라는?
  3. 한국 보다 평균임금이 더 많은 나라는 뭐가 다를까?
  4. 임금에 대한 것을 버려야 할까…

이런 재미있는 Issue에 대해 Note를 만들어 보려고 했는데 ㅎㅎ

코딩 실력이 안된당 흐흐 대회에서 잘 하려는 마음보다는 코드를 더 잘 읽고, 쓰는데 집중하자. ㅠㅠ

D-17 (대회 종료까지)

대회 종료 final version

How Popular is kaggle in Africa?

1. Introduction

1.1 Introduction

800 사용자가 사용하고 있는 글로벌 온라인 커뮤니티 케글. 194개의 나라에서 사용중.

2017년부터 머신러닝과 data 과학자들을 대상으로 설문을 했는데, 본 저자는 아프리카 나라들의 참여를 알아보고자 한다.

Historical overview 이용




1.2 Table of Contents

  1. How does Africa compares with rest of the world?

    1. (Region(Q3)) 응답자 수(Africa/전체, 2021): bar-H
    2. (Region(Q3)) Africa에서 kgg사용증가 : bar
  2. Which African countries are kaggle-aware?

    1. (Q3) kgg을 사용하는 Africa나라 (2021): plotly_choroplethMap
    2. (Q3) kgg 사옹 증가 나라별 in Africa : heatmap
    3. (Q3) 조사에 참여한 나라 비율 in Africa (2021): Pie-Chart(donut)
  3. Demography : Age and Gender

    1. (Q1) age / (Q2) gender (Africa/전체, 2021): bar /bar-H
    2. (Q2, Q2, Q2, Q1, Genderselect) African 여성 비율 : bar
  4. Education, Jobs and Experience

    1. (Q4)학력/ (Q5)직업/ (Q6)경력 (Africa/전체, 2021): bar-H
  5. Programming Languages & IDE’s

    1. (Q7-13)프로그래밍 언어 선호 (Africa/전체, 2021): heatmap
    2. (Q9-13)IDE (Africa/전체, 2021): bar-H
    3. (Q8)추천 프로그래밍 언어 (Africa/전체, 2021): bar-H
  6. Machine Learning: Experience, Framework and Algorithms

    1. (Q15)Muchine Learning 경력 (Africa/전체, 2021): bar-H
    2. (Q16-18)Muchine Learning 플랫폼 (Africa/전체, 2021): bar-H
    3. (Q17-12)Muchine Learning 알고리즘 (Africa/전체, 2021): bar-H
    4. (Q18-7)computer vision Methods (Africa/전체, 2021): Heatmap
    5. (Q19-6)자연언어 처리방법 (Africa/전체, 2021): Heatmap
    6. (Q14-12)visualizations Library (Africa/전체, 2021): Heatmap
  7. Computing Resources

    1. (Q11)hardware platform (Africa/전체, 2021): bar-H
    2. (Q13)TPU 사용빈도 (Africa/전체, 2021): bar-H
    3. (Q12-6)특별한 하드웨어 (Africa/전체, 2021): Heatmap
    4. (Q27_A 12)온라인 플렛폼 (Africa/전체, 2021): bar-H
    5. (Q28)클라우드 플렛폼 (Africa/전체, 2021): bar-H
    6. (29_A, 5)클라우드 만들때 쓰는 기본 resource? (Africa/전체, 2021): bar-H
    7. (32_A, 12빅데이터 만들때 (Africa/전체, 2021): bar-H
    8. (Q33)가장많이 쓰는 big data 생성 프로그램 (Africa/전체, 2021): bar-H
  8. Employment and role at work

    1. (Q20) 최근 고용주 (Africa/전체, 2021): bar-H
    2. (Q24)일할때 중요한 활동 (Africa/전체, 2021): Heatmap
    3. (Q25) 급여 피라미드 (Africa/전체, 2021): dual bar-H
  9. Learning Platform and Media

    1. (Q40) data science 배우는 플랫폼 (Africa/전체, 2021): bar-H
    2. (Q42-12) 가장 좋아하는 DS Topics 미디어 소스 (Africa/전체, 2021): Heatmap
  10. Summary

  11. Reference

    특정 연도를 넣지 않은 부분은 historical data




2. Import

2.1 dataFrame & visualization Module

1
2
3
4
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt

Numpy

dataframe

Pandas

dataframe

seaborn

Seaborn은 Metplotlib를 기본으로 생상테마와 통계용 차트 기능을 추가한 시각화 패키지

기본적인 시각화 기능은 Matplotlib, 통계는 Statsmodels에 의존한다.

Ref. seaborn tutorial/En


matplotlib

matplotlib.pyplot 모듈은 명령어 스타일로 동작하는 함수의 Library.

함수를 이용하여 그래프를 만들고, grid를 조정하고, Label도 꾸미는 등을 할 수 있다.

Ref. matplotlib.pyplot



2.2 plotly

1
2
3
4
5
6
7
8
9
10
11
12
13
14

import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go
import plotly.figure_factory as ff

from plotly.subplots import make_subplots #특정한 차트를 만들기 위해 넣어줌
from plotly.offline import init_notebook_mode, iplot #offLine에서도 돌아갈 수 있게 해줌

init_notebook_mode(connected=True)
pio.templates.default = "none"

# import plotly.offline as py
# py.offline.init_notebook_mode()

Plotly

plotly Livrary 전체를 pio로 받아옴.
그 중에서

를 받아 왔다.

  • plotly에서 G를 그리는 방법은 2가지가 있는다.
    • px : 템플릿을 통해 제작
    • go : 그래프를 하나하나 설정하며 제작

plotly_python

plolty-tutorial-guide/Ko

  • offline plotly

offline plotly

1
2
3
4
5
6
7
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))

import warnings
warnings.filterwarnings("ignore")
  • data input 하는 방법.
    여러개의 csv file을 경로를 지정 해주어 한번에 넣어주는 code

1
2
3
4
5
df17= pd.read_csv("/kaggle/input/kaggle-survey-2017/multipleChoiceResponses.csv", encoding="ISO-8859-1")
df18= pd.read_csv("/kaggle/input/kaggle-survey-2018/multipleChoiceResponses.csv", )
df19= pd.read_csv("/kaggle/input/kaggle-survey-2019/multiple_choice_responses.csv", )
df20= pd.read_csv("/kaggle/input/kaggle-survey-2020/kaggle_survey_2020_responses.csv", )
df21= pd.read_csv("/kaggle/input/kaggle-survey-2021/kaggle_survey_2021_responses.csv", )

연도 별로 dataFrame을 씌워서 csv file을 dfyy객체에 Loading해 준다.

kaggle study


Sumarry

kaggle_Comp


  1. Demographics & Geographics
    • (Q1) Age-bar
    • (Q2) Gender-pie
    • (Q3)countries-scatter+line
  2. Education & Occupation
    • (Q4) Age-bar_h
    • (Q5) Role-bar_h
    • (Q20) Industry-bar_h
  3. knowledge & skills
    • (Q6) Experience : 52% 넘는 응답이 3년이상 코딩과 프로그래밍을 했다. -bar vertical (위)
    • (Q17) Algorithms : Linear or Logistic Regression 55% 과 Decision tree or Random Forests, respectively 66% 사용. - bar horizon (옆)
    • (Q7) Languages : python 84%, SQL 41% 사용 -bar horizon
    • (Q8) Recommend_Leng: programming에 추천하는 언어는 81%가 python -Treemap
    • (Q9) F_EG /w Q7 가장 많이 쓰는 IDE : jupyter Notebook26.2%, VSCODE 13.92% - bar horizon
  4. Platforms & Media4. Platforms & Media
    • (Q11) Platform: 많이 쓰는 컴퓨터 플랫폼은 랩탑이 66% -Scatter + line
    • (Q27_A)cloud_platform: 아마존 14%, 구글클라우드 12%, 마쏘 아줠 9% - bar horizon
    • (Q40) courses: DS들이 많이 쓰는 course 플랫폼 Coursera 20, Kaggle 18%-Treemap
    • (Q42) media : DS topic report를 위해 많이 쓰는 media는 kaggle 44%, youTube 40%, blog 31% -scatter + line
    • Takeaways : typical Kaggle DS in 2021 :HTML picture n line n text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


# This Python 3 environment, PKG Load
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files : "../input/"
# Running : Shift+Enter

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))

# ~ 20GB ,/kaggle/temp/



/kaggle/input/kaggle-survey-2021/kaggle_survey_2021_responses.csv
/kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_methodology.pdf
/kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_answer_choices.pdf
The Typical Kaggle Data Scientist in 2021



Remade By @YoonHwa-P

HTML code는 Markdown 형식으로 넣을 수 있게 해 준다.

scr : 구글 팟케스트에서 바로 연결하여 사용.

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
import numpy as np
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go

import warnings
warnings.filterwarnings('ignore')



시각화, 계산을 위해 Pandas, Numpy, seaborn을 이용 할 것이고, 동적보드를 만들기 위해 plotly를 이용 하였다.

plotly 중에서 Express와 Graph_objects를 가져와서 사용 할 예정인듯.

plotly-express

The Plotly Express API in general offers the following features:

Every PX function returns a** plotly.graph_objects.Figure object**, so you can edit it using all the same methods like update_layout and add_trace.

input으로 Express를 사용 한다면 Graph_objects가 동적 plotly 를 만드는 것 같다. : update 하거나 trace를 가능 하게 하는듯.

실제 필사할 data에서는 어떤 data가 있는지 확인 해 보지 않았지만,
나는 배우는 입장이니 어떤 data가 있는지, 어떤 head가 있는지 확인 해 보도록 한다.

맨 위에 가보면 Note가 생성 될때

/kaggle/input/kaggle-survey-2021/kaggle_survey_2021_responses.csv
/kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_methodology.pdf
/kaggle/input/kaggle-survey-2021/supplementary_data/kaggle_survey_2021_answer_choices.pdf

위와같은 file dir을 알려준다. 이제, pandas로 이 files를 로딩 시켜 주면된다.

Ref. Kaggle활용.국문

1
2
3
4
5
6
7
8
df = pd.read_csv("../input/kaggle-survey-2021/kaggle_survey_2021_responses.csv")
df = df.iloc[1:, :] #이건 왜 선택 해 놓은 것일까요?
df.head()

df.info()



<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25973 entries, 1 to 25973
Columns: 369 entries, Time from Start to Finish (seconds) to Q38_B_OTHER
dtypes: object(369)
memory usage: 73.1+ MB

df에 pd.read_csv로 csv file을 읽어 옵니다.

역시 pd인 df객체에 iloc을 이용하여 [ 1행부터 : , : ] iloc를 선택 해 놓았다.

  1. 행번호(row number)로 선택하는 방법 (.iloc)
  2. label이나 조건표현으로 선택하는 방법 (.loc)

Ref. loc를 이용한 행 선택



0. Introduction

This notebook will explore the fascinating results obtained from the survey conducted by Kaggle in September 2021. Over 25,000 data scientists and ML engineers participated, providing information on their backgrounds and experience in their occupations.

To increase readability, this report is divided into four sections:

  1. Demographics & Geographics
  2. Education & Occupation
  3. Knowledge & Skills
  4. Platforms & Media


Introduction
이 노트북은 25000 data scientist들과 ML Engineer들의 kaggle에서 경험 한것을 조사한 data를 매력적인 결과로 탐험 하게 될 것이다.
(대충)

; Introduction 에서 이 notebook의 성격, data의 간간한 정보, 목차 등을 설명.


모든 글은 Markdown을 이용한 css 로 작성 된 것 같다.


혹시,
css
에 대하여 더 알아보고 싶으면, 이 문서를 참조 하자.