게시글
질문&답변
2022.07.02
'import numpy as np' 추가
질문이 완성되지 않은 것 같습니다~
- 0
- 1
- 219
질문&답변
2022.07.02
결측값 처리
결측치의 %가 크다고 항상 컬럼을 삭제하지는 않습니다. 가능한 타당한 값으로 대체하는 것이 필요한데, 일단 평균치로 대체한 후에 머신러닝 모델의 성능이 개선되는지를 직접 확인해보는 방법이 있겠습니다. 항상 가장 중요한 것은 모델의 성능이 개선되는지를 보고 선택 여부를 판단하는 것입니다. 문제에 따라서 결과가 다르기 때문입니다. 또한 일괄적으로 평균치를 취하는 방법 외에도 개선된 방법들이 있습니다. 예를 들어 다른 변수를 보고 좀더 근접한 값으로 추정할 수 있겠지요. 예를 들어 키라면 나이를 보고 연령대별 평균을 사용한다든지 하는 방법입니다. 결측치가 카데고리 변수라면 원핫 인코딩을 한 후에 결측치는 모두 0으로 인코딩하는 방법도 있습니다. 이는 특히 모델로 랜덤포레스트 모델을 사용할 때 유용합니다. 결측치가 있는 샘플은 트리 분류에서 다루지 않는 방법입니다. 답이 되었는지요?
- 0
- 1
- 432
질문&답변
2021.07.16
n_step 값에 대하여
좋은 질문입니다. n_steps를 불필요하게 크게 키우면 오래전의 과거 데이터가 예측에 도움이 안되고 잡음으로 동작하기 때문입니다. 선형모델에서는 모든 입력 값들의 가중합을 사용하는데 불필요한 신호에 곱해지는 계수가 모두 0이 되지 않는 한 어떤 형태로든 (0이 아닌) 가중치가 존재하게 됩니다. 이와 같이 불필요한 신호들이 랜덤하게 (예측에 도움이 되지 않게) 더해지면 이것이 잡음으로 동작하게 되고 따라서 성능이 떨어지는 것입니다.
- 0
- 1
- 330
질문&답변
2021.07.14
dir*.csv가 안됩니다.
dir 다음에 한칸 띄어쓰기입니다
- 0
- 1
- 226
질문&답변
2021.07.13
In[42] 14:50 코드 질문
안녕하세요. 41번 셀에서 coef_의 구조가 "2차원" 어레이입니다. [[ 가 두개임. 여기서 [0] 인덱싱을 하면 [ 가 하나인 1차원 어레이 즉, 벡터를 얻습니다. (2차원이 아닌) 1차원 데이터라야 데이터 프레임 results의 한 컬럼 값들로 채우는데 문제가 없습니다.(한 줄 짜리 데이터 구조라야 함). 그래서 [0] 인덱싱을 한 것입니다. 그리고 columns의 순서와 해당 컬럼(변수)의 coef_ 의 순서는 모델이 알아서 차례를 기억합니다. inplace=True는 sort_value의 실행 결과를 단순히 출력해 주는데 그치지 않고 원본 데이터인 result에 결과를 반영하여 변경해두라는 뜻입니다. 수고하세요~
- 0
- 1
- 149
질문&답변
2021.07.13
로그변환에 대하여
안녕하세요. 어떤 변수들은 로그변환한 값을 사용해야 성능이 좋아집니다. (분류 및 예측 모두). 로그변환의 대상이 되는 데이터는 금전에 관한 것, 생물학적 반응에 관한 것 등입니다. 귀로듣는 사운드의 경우도 로그변환이 필요합니다. 로그변환을 하는 이유는 입력과 출력의 관계가 선형적이 되서 "설명"을 더 잘 할 수 있기 때문입니다. 지하실 면적처럼 면적이 크다고 면적에 비례해서 집 값이 올라가는 것이 아니라 큰 값을 약화시키는 것이 더 모델의 성능을 개선시키는 사례도 있습니다. 이러한 사례는 경험과 시행착오로 찾는 것입니다. (데이터의 확률 분포를 보고 가능한 정규 분포 모양을 따르는지 보고 관찰합니다..
- 0
- 1
- 464
질문&답변
2021.07.13
6 시그마 이상 outlier
안녕하세요. 6 시그마는 예를 든 것입니다. 매우 드물게 발생할 확률을 말할때 상징적으로 6 시그마를 (표준편차)를 말합니다. 경우에 따라서 3이나 4를 선택할 수도 있습니다. 이상치의 정도는 상황에 따라 정하기 나름입니다~
- 0
- 1
- 381
질문&답변
2021.07.12
Titanic 데이터셋 PClass cateogrical -> one hot encoding
좋은 질문입니다. 클래스가 1, 2, 3 정도로 갯수가 적으면 모델(프로그램)이 카테고리 변수로 인식하여 운좋게 잘 동작할 수도 있습니다. 그런데 클래스가 10개라고 하면 1~10의 숫자가 양을 나타내는지 카테고리를 나타내는지 컴퓨터가 구분할 수가 없습니다. 기본적으로는 양으로 인식하게 되고 오동작을 하게 됩니다. 클래스2가 클래스1보다 뭔가 두 배 많은 것을 나타내지는 않겠지요. 국적을 구분할 때도 국가 번호가 양을 나타낸다고 볼 수 없습니다. 따라서 카테고리 변수는 원한 인코딩을 꼭 해주어야 합니다. 단 카테고리가 2개를 구분할 때는 편의상 0/1을 나타내는 한 컬럼(변수)만 써도 동일하게 동작합니다. 더 궁금한 내용 있으면 질문해주세요~
- 0
- 1
- 263
질문&답변
2021.07.11
표준 스케일링관련 문의
안녕하세요. 데이터를 표준 스케일링하더라도 원래 데이터의 확률분포함수 (pdf)는 모양이 그대로 유지됩니다. 예를 들어, 원래 데이터가 uniform 분포이면 스케일링을 하더라도 uniform 모양을 그대로 유지합니다. 즉, pdf 모양이 정규분포처럼 바뀌는 것이 아니라, 원래 데이터 값들을 이동시켜 평균이 0, 표준편차가 1이 되도록 위치만 바꾸는 것입니다. 일부 서적에서 표준 스케일링을 하면 정규분로 변경되는 것처럼 쓰고 있으나, 이는 틀린 말입니다. 표준 스케일링과 정규분포와는 아무 상관이 없는 것입니다. 데이터의 확률 분포(모양)는 그대로 유지하면서 평균이 0, 표준편차가 1이 되도록 위치 이동만 하는 것입니다. 스케일링을 사용하는 이유는 여러 컬럼의 값들이 너무 크거나 작은 값들을 동시에 사용하면 분석(머신러닝 모델)이 잘 되지 않기 때문입니다. (모든 성적을 100점 만점으로 통일시키는 것과 같은 효과입니다). 궁금한 사항 있으면 질문해주세요~
- 0
- 1
- 230
질문&답변
2021.07.11
6:14초 dataframe 스케일링한 후 컬럼 추가에 대한 질문
안녕하세요. 위의 코드는 정상으로 동작해야 하나 간혹 파이썬 버전에 따라 오류가 나기도 합니다. 코드의 동작을 설명드리면, 아래의 부분은 (1000, 2) 크기의 어레이(ndarray)를 얻습니다 (스케일링 결과치). scale.fit_transform(df["height","weight"]) 아래 코드는 df에 ['h_sc','w_sc'] 라는 이름의 컬럼을 두개 새로 만들면서 위에서 얻은 (1000,2) 어레이로 내용을 채우라는 뜻입니다. df[['h_sc','w_sc']]= ... 현재 발생하는 오류 메시지는 ['h_sc','w_sc'] 라는 컬럼명이 미리 존재하지 않았다는 것입니다. 원래 새로운 이름의 컬럼이 두개 추가가 되어야 하나, 한번에 한 컬럼만 추가되는 경우도 있습니다. 아래와 같이 한번에 한 컬럼씩 스케일링해 보세요. df[['h_sc']]=scale.fit_transform(df[['height']]) df[['w_sc']]=scale.fit_transform(df[['weight']]) 동작하지 않으면 다시 질문 바랍니다.
- 0
- 1
- 629