inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 파이썬 머신러닝 완벽 가이드

회귀) subplot 을 선형회귀 직선 표현(p.303_구판)

374

김상민

작성한 질문수 2

0

안녕하세요!
선생님 강의 잘 듣고 있습니다.


회귀 파트 학습을 하면서 코드 실행을 하는데 하기의 코드 부분이 이해가 되지 않습니다.. 

fig, axs = plt.subplots(figsize =(16,8), ncols=4, nrows=2)

lm_features = ['RM','ZN','INDUS','NOX','AGE','PTRATIO','LSTAT','RAD']

for i, feature in enumerate(lm_features):

    row = int(i/4)

    col = i%4

sns.regplot(x=feature, y='PRICE',data=bostonDF, ax = axs[row][col])

* row , col 을 각각 정의한 부분이 이해가 어렵습니다. int(i/4), i%4 가 각각 어떤식으로 형성되는가입니다.

더하여 enumerate 함수만 상기 for 구문에 쓰일 수 있는지도 궁금합니다.(for in 구문은 안되는지)



머신러닝 배워볼래요? python 통계

답변 2

1

권 철민

안녕하십니까,

위 코드는 8개의 컬럼들에 대해서 개별적인 regression plot을 2행 x 4열 grid 선상에 표현하기 위함입니다.

먼저 for 문에 사용된 enumerate()에 대해서 말씀드리겠습니다. enumerate(list)는 인자로 iterable 한 객체, 예를 들어 list([]) 객체를 인자로 받아서, iterate loop 횟수와 list내의 개별 값을 반환합니다.

for i, feature in enumerate(lm_features):

    print(i, feature)

    row = int(i/4)

    col = i%4

의 코드라면 아래와 같은 값을 반환하게 됩니다. 

0, RM

1, ZN

2, INDUS

....

7, RAD

즉 i는 ['RM','ZN','INDUS','NOX','AGE','PTRATIO','LSTAT','RAD'] 8개의 원소가 있는 list에 대해서  for for loop indexing 값 0 ~ 7 까지 8개의 숫자값을 차례로 가지게 되는 것입니다. 

그리고 row는 2행 x 4열 grid 그림판의 행 위치를 나타냅니다. 2행이므로 0~1 까지의 index 값을 의미합니다. col은  4열이므로 0~3 까지의 index값을 의미합니다.

i가 0 일 때는 row는 0이며 col역시 0 입니다. 따라서 sns.regplot(x=feature, y='PRICE',data=bostonDF, ax = axs[row][col]) 에서 axs[row][col]은 axs[0][0] 이므로 1행 1열에 RM 컬럼의 regplot을 그립니다.

i가 1일 때는 row = int(i/4) 이므로 소수점은 모두 int 변환하여 0이 되므로 row는 역시 0이나 col은 i%4 이므로 1입니다. 따라서 axs[0][1]이고 1행 2열에 ZN의 regplot을 그리게 됩니다.

i가 3일때까지 row = int(i/4) 이므로 소수점은 모두 int 변환하여 0이 되므로 row는 0이며, col만 계속 변합니다.

i가 4가 되면 비로서 row가 1로 바뀝니다. i가 4면 row = int(4/4) 이므로 1이 됩니다. col은 4%4 이므로 0 이 됩니다. 즉 2행 1열에 AGE의 regplot을 그립니다.

동일하게 i가 7까지 계속 수행해 보면 row는 1에서 계속 고정되며 col은 계속 변경됩니다.

이처럼 row = int(i/4), col = i%4 로 하면 4라는 고정된 컬럼 갯수 기반으로 동적으로 할당될 grid의 행과 열을 계산해 줄 수 있습니다.

감사합니다.

0

김상민

상세한 답변 정말 감사합니다. 명확하게 이해하였습니다!!

안녕하세요 열심히 수강중인 학생입니다

0

62

2

정수 인덱싱

0

68

2

넘파이 오류

0

85

2

11강 numpy의 axis 축 질문 드립니다.

0

85

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

79

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

70

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

84

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

117

2

좋은 강의 감사합니다.

0

72

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

100

2

분류 평가 정확도 예측

0

76

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

99

1

카카오톡 채널 있나요

0

107

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

189

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

172

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

148

2

실루엣 스코어..

0

86

2

float64 null 값 처리 방법

0

103

2