Data Science and Data Proicessing

Python을 사용한 데이터 전처리

데이터를 이해하기 쉽게 만들기

Image for post
~의 사진루크 체서의 위에Unsplash

고품질 데이터가 더 나은 예측으로 이어진다는 사실을 고려할 때 데이터 전처리는 데이터 과학 및 기계 학습의 기본 단계가되었습니다. 데이터 처리의 중요성에 대해 이야기하고 다양한 접근 방식을 순서대로 논의합니다.

데이터 전처리 란?

원시 데이터를 이해할 수있는 형식으로 변환하는 기술입니다. 실제 데이터 (원시 데이터)는 항상 불완전하며 특정 오류가 발생할 수 있으므로 모델을 통해 데이터를 전송할 수 없습니다. 이것이 모델을 통해 데이터를 보내기 전에 데이터를 전처리해야하는 이유입니다.

내가 따라온 단계는 다음과 같습니다.

  1. 라이브러리 가져 오기
  2. 데이터 세트 읽기
  3. 데이터 세트를 독립 및 종속으로 분할
  4. 결 측값 처리
  5. 범주 형 값 처리
  6. 표준화 / 기능 확장

1 단계 : 라이브러리 가져 오기

첫 번째 단계는 일반적으로 프로그램에 필요한 라이브러리를 가져 오는 것입니다. 라이브러리는 기본적으로 호출 및 사용할 수있는 모듈 모음입니다. 여기서 우리는

판다: 데이터 조작 및 데이터 분석을 위해 팬더를 사용합니다.
Numpy: Python을 사용한 과학 컴퓨팅을위한 기본 패키지입니다.

2 단계 : 데이터 세트 가져 오기

대부분의 데이터 세트는 .csv (쉼표로 구분 된 값) 형식으로 제공됩니다. 데이터 세트를 프로그램과 동일한 폴더에 보관하고 다음과 같은 방법을 사용하여 읽는 것이 중요합니다.read_csv라이브러리에서 찾을 수 있습니다.판다.

3 단계 : 데이터를 독립 및 종속 기능으로 분할

독립 변수 (X)와 종속 변수 (Y)를 만들어 데이터 세트에 특성 행렬을 만들겠습니다. 열을 읽으려면 다음을 사용합니다.iloc판다[행 선택, 열 선택]이라는 두 개의 매개 변수를 사용합니다.

: 매개 변수로 데이터의 모든 행을 선택합니다. 열의 경우 마지막 열을 제외한 모든 열이 선택됨을 의미하는 -1이 있습니다.

Image for post
~의 사진미리 암 제시어의 위에Unsplash

4 단계 : 결 측값 처리

때때로 우리는 데이터 세트에서 일부 데이터가 누락 된 것을 발견합니다. 누락 된 값은 성능 매트릭스 및 예측의 품질을 저하 시키므로 신중하게 처리해야합니다. 어떤 모델도 이러한 NULL 또는 NaN 값을 자체적으로 처리 할 수 ​​없으므로 처리해야합니다. 먼저 데이터 세트에 null 값이 있는지 여부를 확인해야합니다. isnull () 메소드를 사용하여이를 수행 할 수 있습니다.

누락 된 값을 처리하는 방법에 대한 올바른 결정을 내리면 강력한 데이터 모델이 생성되므로 분석가가 직면 한 가장 큰 문제 중 하나입니다. 결 측값을 대치하는 다양한 방법을 살펴 보겠습니다.

행 삭제

가장 일반적으로 사용되는 방법입니다. null 값이있는 행과 누락 된 값의 60 % 이상이있는 경우 특정 열을 삭제합니다. 이 방법은 해당 열이 해당 특성이 모델 예측에 대해 덜 중요하거나 중요하지 않은 모델의 예측에 영향을 미치지 않는 경우에만 사용됩니다.

평균 / 중앙값 / 모드로 바꾸기

이 방법은 수치 데이터로 구성된 기능에 적용 할 수 있습니다. 특성의 평균, 중앙값 또는 최빈값을 계산하고이를 누락 된 값으로 바꿀 수 있습니다. 이 방법은 행과 열을 제거하는 것에 비해 더 나은 결과를 제공합니다.

범주 형 데이터 처리

때때로 우리의 데이터는 텍스트 형식입니다. 텍스트 형식으로 카테고리를 찾을 수 있습니다. 모델이 수학 방정식과 계산을 기반으로하기 때문에 기계가 텍스트를 이해하고 처리하는 것은 복잡해집니다. 따라서 데이터를 숫자로 인코딩해야합니다.

이를 위해 우리는scikit-learn의 LabelEncoder작업에 사용할.해당 클래스의 객체를 생성합니다. 객체 labelencoder_X를 호출합니다.fit_transformLabelEncoder 클래스의 메서드가 도움이 될 것입니다.

이제 텍스트가 숫자로 대체되었습니다. 카테고리가 세 개 이상인 경우 다른 카테고리에 정수를 계속 할당하여 혼란을 유발합니다. 4 개의 범주가 있고 첫 번째 범주에 0을 할당하고 마지막 범주에 3을 할당한다고 가정합니다. 그러나 1은 0보다 크고 3은 1보다 크기 때문에 모델의 방정식은 3이 0보다 우선 순위가 가장 높다고 생각합니다. 이 문제를 해결하기 위해 n 개의 범주에 대해 n 개의 열이있는 더미 변수를 사용합니다.OneHotEncoder.

우리는 다른 클래스를 가져올 것입니다scikit의 OneHotEncoder가 학습합니다.우리는 해당 클래스의 객체를 생성하고 열의 인덱스 값을 취하고 OneHotEncoding에도 fit_transform ()을 사용하는 categorical_features라는 매개 변수를 고려할 것입니다.

ColumnTransformer를 사용하면 입력을 별도로 변환하고 생성 된 기능을 연결하여 단일 공간을 형성 할 수 있습니다. 이기종 데이터 변환에 유용합니다.

기능 확장

독립 변수의 값을 표준화하는 데 사용됩니다. 변수의 범위를 제한하여 쉽게 비교할 수 있도록하는 방법입니다.

왜 필요한가요?

대부분의 기계 학습 모델은 유클리드 거리를 기반으로합니다. 훨씬 큰 값에 비해 낮은 값의 제곱 차이는 거의 존재하지 않는 것처럼 처리됩니다. 우리는 그런 일이 일어나기를 원하지 않습니다. 그렇기 때문에 모든 변수를 동일한 척도로 변환해야합니다.

대부분의 기계 학습 모델은 유클리드 거리를 기반으로합니다. (x2-x1)의 제곱근 값이 (y2-y1)보다 크면 (y2-y1)은 무시됩니다. 우리는 이런 일이 일어나기를 원하지 않습니다. 그렇기 때문에 모든 변수를 동일한 척도로 변환해야합니다. 이를 수행 할 수있는 두 가지 방법이 있습니다.

표준화

정규화를 통해 0.0에서 1.0 사이의 특성 값을 조정합니다.

Image for post

표준화

평균이 0이고 표준 편차가 1이되도록 특성을 확장합니다.

Image for post

scikit 전처리 라이브러리에서 StandardScaler를 가져 와서 해당 클래스의 객체를 만들어야합니다.

이제 X_train 세트를 맞추고 변형 할 때입니다. 훈련 및 테스트 세트에 표준 스케일러를 적용 할 때. 훈련 세트에만 맞추고 변환해야합니다. 테스트 세트의 경우 변환해야합니다. 테스트 세트에 맞출 필요가 없습니다. 이렇게하면 모든 값이 표준화 된 척도로 변환됩니다.

제 기사를 읽어 주셔서 감사합니다. 여러분의 의견을 듣게되어 기쁩니다. 최신 기사에 대한 업데이트를 받으려면 Medium에서 저를 팔로우하십시오. 당신은 또한 나와 연결할 수 있습니다Linkedin트위터.Machine Learning 및 Deep Learning에 대한 내 블로그를 확인하십시오.

+ Recent posts