Pandas, Matplotlib 및 Python을 사용하여 이상값을 감지하는 방법

3064 단어
안녕하세요 여러분, 이 튜토리얼에서는 Matplotlib 및 Pandas Machine Learning 라이브러리를 사용하여 데이터 세트에서 이상값을 감지하고 제거하는 방법을 다룰 것입니다.

여기에 표시된 코드의 전체 버전이 train.csv 데이터 파일(아래 자습서의 데이터가 사용됨)과 함께 포함된 GitHub 리포지토리가 있습니다. House Prices Advanced GitHub Repo

먼저, 그려지는 두 변수가 OverallQual과 SalePrice인 산점도에 모든 데이터 포인트를 표시해 보겠습니다. 이는 다음 코드 스니펫을 사용하여 수행할 수 있습니다.

plot, ax = plt.subplots(1, 1, figsize = (12, 5))
sns.scatterplot(data = train_data, x = "OverallQual", y = "SalePrice", c = ["blue"], ax = ax)


생성된 결과 그래프는 다음과 같습니다.



그림 1: 초기 산점도 그래프

다음으로 위의 그래프에서 이상값을 식별하는 작업을 해보겠습니다.

plot, ax = plt.subplots(1, 2, figsize = (12, 5))
outliers = (train_data["OverallQual"] == 10) & (train_data["SalePrice"] <= 250000)
sns.scatterplot(data = train_data, x = "OverallQual", y = "SalePrice", c = ["red" if is_outlier else "blue" for is_outlier in outliers], ax = ax[0])
train_data.drop(train_data[(train_data["OverallQual"] == 10) & (train_data["SalePrice"] <= 250000)].index, inplace = True)
sns.scatterplot(data = train_data, x = "OverallQual", y = "SalePrice", ax = ax[1], c = ["blue"])
plt.show()


위 코드에 대한 설명은 다음과 같습니다.
  • plt.subplots(1, 2, figsize = (12, 5)): 하나의 Matplotlib 그래프 안에 두 개의 하위 그림을 만들고 있습니다. 첫 번째 매개변수는 행 수이고 두 번째 매개변수는 열 수를 정의합니다.
  • outliers = ...: 여기에서 특정 기준을 사용하여 데이터 세트의 이상값을 식별합니다. 즉, (train_data["OverallQual"] == 10) 및 (train_data["SalePrice"] <= 250000)
  • 첫 번째 sns.scatterplot: 여기서는 이상값이 빨간색으로 강조 표시된 원본 데이터를 표시할 첫 번째 산점도를 정의합니다. 빨간색 강조 표시는 c 옵션의 조건문으로 인해 발생합니다("red"if is_outlier else "blue"for is_outlier in outliers)
  • 다음으로 pandas.DataFrame.drop() 메서드(공식 문서에서 이 메서드에 대한 자세한 내용)를 통해 데이터 세트에서 이상값을 제거합니다.
  • 두 번째 sns.scatterplot: 이상값이 제거된 데이터를 표시할 두 번째 산점도를 정의합니다.
  • plt.show(): 이 메서드는 방금 지정한 그래프를 표시합니다.

  • 위의 코드 스니펫을 실행한 결과 그래프는 다음과 같습니다.



    그림 2: 이상값을 빨간색으로 표시하는 첫 번째 그래프, 이상값을 제거한 데이터를 표시하는 두 번째 그래프

    이것이 Matplotlib, Pandas 및 Python을 사용하여 데이터 세트에서 이상값을 제거하는 한 가지 방법입니다! 따라와 주셔서 감사합니다.

    결론

    그럼 이번 포스팅은 여기까지! 이 기사를 따라 주셔서 감사합니다. 질문이나 우려 사항이 있는 경우 언제든지 이 게시물에 의견을 게시해 주시면 시간이 나면 연락드리겠습니다.

    이 기사가 도움이 되었다면 공유하고 GitHub에서 저를 팔로우하고 저와 연결하고 제 를 구독하십시오.

    이 기사가 도움이 되었으면 공유하고 Twitter 및 GitHub에서 저를 팔로우하고 LinkedIn에서 저와 연결하고 제 YouTube 채널을 구독하십시오.

    좋은 웹페이지 즐겨찾기