해결된 질문
작성
·
216
·
수정됨
0
선생님 안녕하세요! 선생님께서 지금시간 기준으로 지금까지 올려주신 강의를 모두 듣고나서 원래 갖고있던 궁금증이 많이 해소되었습니다!! 감사합니다 ㅎㅎ 그래도 좀더 궁금한것이 있어 여쭤봅니다 😃
만약 작업형1에서 앞에서 몇 프로 데이터 활용이 아닌, 뒤에서 몇 프로 활용이면 어떻게 해야할까요??
만약 뒤에서 70%라면, df.iloc[int(len(df) * 0.3):, :]로 하면 될까요?? 그간 앞에서만 나왔는데 뒤에서부터 잘라내는 문제가 나올것을 생각해 여쭤봅니다
기출6 작업형1에서 3번에 연도를 찾는 문제를 만약 datetime형식으로 바꾸게 된다면
df['날짜'] = pd.to_datetime(df['날짜'], format='%Y년%m월') 로 해보았는데 에러가 떠서 혹시 date형식으로 바꾸려면 어떻게 해야할지 궁금합니다!
선생님께서 분산분석 때 df.melt() 처리에 대해 말씀해주신 것을 확인했는데요. melt()작업이 필요한 때가 정확히 어떤 경우일까요? 일원분산분석 편처럼 독립,종속변수가 명확히 나와있지 않을 때 하면 될까요??
분류문제와 회귀문제를 구별하는 것을 지금까지 평가지표로 구별했는데 평가지표가 안나올수도있을까요?? 또는 제출 예시를 보고 0.xxx 등의 확률 등이 아닌 숫자가 크고 다양하게 나온다면 회귀문제로 생각해도 될까요??
선생님께서 캐글에 올려주신 작업형3을 공부해보고 있는데요! 그중에 포아송분포 관련 질문드립니다!
- 하루에 적어도 2명의 고객이 잡지를 구매할 확률 : print(1 - poisson.cdf(1, lambda)) 로 풀이를 적어주셨는데 cdf(1, lambda)인 이유는 적어도 (2명 - 1)을 해서 그런걸까요??
lightgbm을 인코딩 처리 없이 사용할 수 있다고 하셨는데 .astype('category') 사용 없이 인코딩 등의 사전처리를 하고나서 사용하여도 성능에는 문제가 없을까요?? 랜덤포레스트와 해당 모델을 시험에서 사용하고싶어서요!
선생님께서 캐글에 올려주신 작업형1을 풀고 있는데요!
result = df['StartTime'].dt.date.value_counts().index[0]
print(result.strftime('%Y-%m-%d'))
여기서 만약 result값으로 2011-01-01 이라는 답을 알았다면 이제는 이렇게 프린트문으로 하지 않고 바로 답안을 제출해도 될까요?? 그리고 value_counts는 무조건 숫자를 내림차순으로 정렬해서 보여주는지도 여쭤봅니다!
선생님께서 보너스 강의로 작업형3의 C()를 묶는 것에 대해 말씀해주셨는데, 로지스틱회귀와 회귀문제의 경우 문자로된 범주형이거나 숫자로 되어있지만 명시가 되어있거나 누가봐도 범주형인 부분을 묶으라고 하셨는데요! 회귀분석 파트의 범주형 강의에서는 C()를 묶는 등의 과정을 거치지 않고 그냥 적어도 된다고 하신걸로 이해했는데 어떻게 해야 할까요?
답변 1
1
1 네 맞습니다. df.iloc[int(len(df) * 0.3):, :]는 뒤에서 70%입니다.
2 포멧이 잘못된건 아닐까요? "%Y년 %m월" 사이에 띄어쓰기가 있는 형태입니다.
3 df.melt()는 분산분석에 해당하는 것이 아니라 데이터 전처리 부분에 해당합니다. 데이터가 일렬로 제공되지 않고 컬럼별로 퍼져있다면 일렬로 재정렬을 해줄 때 사용해요! 다시 말하면 여러 변수가 각각의 열에 있을 때 하나의 열로 합치고 싶을 때 유용합니다. 이 부분은 작업형1에 가까워서 아마도 작업형3은 바로 적용가능한 데이터가 주어지지 않을까 싶습니다.
4 평가지표가 안나오는건 문제에 문제가 있는 상황이에요!. 네 연속형이라면 회귀로 판단해 주세요
5 1 - poisson.cdf(1, lambda)는 하루에 최소 2명의 고객이 잡지를 구매할 확률을 계산합니다. 여기서 poisson.cdf(1, lambda)는 최대 1명의 고객이 구매할 확률을 나타내므로, 2명 이상일 확률을 구하기 위해 1에서 빼줍니다.
6 네 문제 없습니다.
7 네 print하지 않고 답만 작성하면됩니다. value_counts는 내림차순 정렬 맞음!
8 문자여서 자동처리라고 말했어요 :)
수치형이면서 범주형인 값에 'C()' 함수를 사용하는 것은 해당 변수를 범주형으로 명시적으로 처리하도록 모델에게 지시하는 것입니다. 예를 들어, '1', '2', '3'과 같은 수치가 실제로는 '소형', '중형', '대형'과 같은 범주를 나타내는 경우에 해당합니다.
작업형2를 예를 들어 모델을 만들 때 범주형 변수가있다면 인코딩처리를 했었어요!
작업형3에서 사용하는 ols(회귀), logit(로지스틱회귀)는 범주형 변수가 있다면 자동으로 이를 (원핫인코딩)처리 해줍니다. 하지만 여전히 숫자일 인 범주형 변수 그러니깐 1등급, 2등급으로 작성된 것이 아니라 1, 2로 장성된 변수는 별도 범주형 변수로 인식시켜줘야 해요
이때 C()를 사용합니다.
분산분석에서는 독립변수가 범주형 변수이니 숫자만 C()로 묶어도 되고, 습관적으로 독립변수 모두를 각각 C()로 묶어도 됩니다.
그 동안 작업형2에서는 범주형 변수가 숫자더라도 그냥 나뒀습니다. 레이블 인코딩과 별반 다를 것이 없어서요! 그런데 작업형3은 p값 등의 정답이 있는 문제여서 정확하게 처리할 필요가 있어요
네 맞습니다.
1 숫자지만 범주형일 때 원핫인코딩에 포함하려면 해도 됩니다.
2 네, 문제를 명확하게 하려면 범주형을 알려줄 것 같은데 알려주지 않는다면 변수에 대한 설명을 잘 읽어봐주세요!
3 네 가능합니다.
우와 감사합니다 선생님 ㅠㅠ 아리쏭했던 부분들이 다 이해가 갔습니다!!
범주형 변수에 대해 확실하게 이해했는지 여쭙고 싶은데요!
1.작업형2는 만약 수치형인데 범주형이면 이건 따로 인코딩 필요 X
2.작업형3의 로지스틱회귀와 회귀의 경우 범주형이지만 숫자라면 C() 명시(숫자가 아닌 범주형도 C() 명시 가능)
3.작업형3의 분산분석의 경우 독립변수들 모두 C()로 명시 가능
이렇게 이해했는데 맞을까요?!