제퍼넷 로고

데이터 과학자, 코딩 방법을 알아야합니다

시간

데이터 과학자, 코딩 방법을 알아야합니다

코딩 방법을 알아야합니다. 코드뿐만 아니라 좋은 코드를 작성해야합니다.


By 타일러 포크 맨, Branded Entertainment Network의 AI 책임자



님이 촬영 한 사진 로만 신케비치 on Unsplash

 

나는 당신이 무슨 생각을하는지 압니다.“물론 나는 코딩하는 법을 압니다. 당신은 미쳤나요?”

매일 수백 줄의 Jupyter 노트북에 수많은 코드를 작성합니다. 분명히 코딩 할 수 있습니다. 기계 학습 모델을 수동으로 또는 Excel에서 학습하는 것과는 다릅니다 (가능하지만).

그래서 내가 무슨 뜻일까요?

나는 이것을 당신에게 깨뜨리는 것이 싫지만, 대부분의 코딩 데이터 과학자들은 내가 정말로 프로그래밍이라고 생각하지 않을 것입니다. 프로그래밍 언어를 도구로 사용하여 데이터를 탐색하고 모델을 구축합니다. 그러나 당신이 만드는 프로그램은 그것이 일을 끝내는 한 당신이 정말로 많이 생각하는 것이 아닙니다.

귀하의 코드는 일반적으로 지저분하고 순차적으로 실행되지 않을 수도 있습니다 (노트북 덕분에). 단위 테스트를 작성한 적이 없으며 재사용 가능한 좋은 함수를 작성하는 방법에 대한 지식이 거의 없습니다.

그러나 데이터 과학이 실제 제품에 점점 더 많이 포함됨에 따라 코드 유형은이를 차단하지 못할 것입니다. 나쁜 코드를 믿을 수없고 믿을 수없는 코드를 제품에 넣는 것은 엄청난 양의 기술적 부채와 나쁜 사용자 경험으로 이어집니다.

"좋아요.하지만 저는 소프트웨어 엔지니어가 아니라 데이터 과학자입니다."라고 말합니다. 나는 모델을 만들고 코드를 정리하는 것이 다른 사람의 문제입니다. 일부 회사에서는 작동 할 수 있지만 현재로서는 데이터 과학자가 더 나은 코드를 작성하는 방법을 배우는 것이 훨씬 더 나은 패턴이라고 생각합니다. 엘리트 수준의 소프트웨어 엔지니어가 될 수는 없지만 데이터 과학자는 신뢰할 수있는 코드를 작성하고 작업을 통해 프로덕션에 투입 할 수 있습니다.

기능으로 시작

 
코드 수준을 높이는 방법을 배울 때는 함수 작성 방법부터 시작하십시오. 대부분의 코드는 일련의 함수 (또는 잠재적 인 클래스) 일 뿐이며 꽤 좋은 함수를 작성하는 방법을 배울 수 있다면 코드 품질을 향상시키는 데 큰 도움이 될 것입니다.

최소한의 기능은 다음과 같아야합니다.

  1. 한 가지만 해
  2. 문서 보유
  3. 좋은 변수 이름 사용

깨끗한 함수를 작성하는 방법에 대한 전체 책이 있지만이 세 항목은 시작하기에 좋은 곳입니다.

한 가지 이상의 일을하려는 것처럼 느껴지는 기능이 있어서는 안됩니다. 함수가 너무 많이 수행 할 수 있다는 징후 :

  • 단일 화면 길이 또는 대략 30 줄의 코드 (내 경험상)보다 깁니다.
  • 함수가하는 일이 많기 때문에 명확하게 이름을 지정하기가 어렵습니다.
  • 실제로 별도의 함수로 분리되어야하는 if / else 블록 내에 많은 코드가 포함되어 있습니다.

코드를 이해, 관리 및 테스트하기 쉽게 만들기 때문에 한 가지 작업 만 수행하는 함수가 중요합니다 (나중에 테스트에서 자세히 설명).

프로덕션으로 출시되는 모든 함수에는 문서 문자열이 있어야하며 해당 문자열은 함수가 수행하는 작업을 설명하고 입력 매개 변수에 대한 정보를 제공하며 잠재적으로 함수 사용 방법에 대한 몇 가지 간단한 예를 제공해야합니다. 당신은 잘 문서화 된 함수를 가지고 있고 다른 사람들이 당신의 코드를 이해하는 데 훨씬 더 쉽게 시간을 보낼 수있을 때 자신에게 감사 할 것입니다.

마지막으로 이해하기 쉽고 유용한 변수 이름을 사용하십시오. 너무 많은 데이터 과학자들이 "a", "a1", "a2"와 같은 변수 이름을 사용하는 것에 만족하지 않습니다. 짧고 도움이되지 않는 변수 이름은 실험 할 때 입력하는 것이 더 빠르지 만 코드를 프로덕션에 넣을 때는 변수 이름이 다른 사람들이 코드를 이해하는 데 도움이되는지 확인하십시오.

인쇄 문 제거

 
데이터 과학자는 종종 print 문을 사용하여 무슨 일이 일어나고 있는지에 대한 정보를 표시합니다. 그러나 프로덕션에서 이러한 인쇄 문은 더 이상 필요하지 않은 경우 제거하거나 로그 문으로 변환해야합니다.

로깅은 코드에서 정보와 오류를 전달하는 방법이어야합니다. 로깅을 더 간단하게 만들기 위해 살펴볼 좋은 Python 라이브러리는 Loguru입니다. 로깅에 대한 대부분의 성가신 부분을 자동으로 처리하며 print 문을 사용하는 것과 훨씬 더 비슷합니다.

스타일 가이드 사용

 
프로그래밍의 스타일 가이드는 많은 사람들이 동일한 코드로 작업하는 것을 더 쉽게 만드는 데 사용되지만 해당 코드는 대부분 한 사람이 코딩 한 것처럼 보입니다.

왜이 일을 하는가?

일관된 스타일을 사용하면 코드를 훨씬 쉽게 탐색하고 이해할 수 있습니다. 스타일 가이드를 사용할 때 얼마나 쉽게 버그를 발견 할 수 있는지 놀랍습니다. 표준 코드 작성 방법을 준수하면 해당 코드와 다른 코드를 더 쉽게 탐색 할 수 있습니다. 즉, 코드를 이해하기 위해 코드의 형식을 푸는 데 많은 시간을 할애 할 필요가 없으며 대신 코드가 수행하는 작업과 제대로 수행되는지 여부에 집중할 수 있습니다.

PEP 8은 아마도 파이썬에서 가장 널리 사용되는 스타일 가이드 일 것입니다. 그러나 거기에는 많은 것이 있습니다. 스타일 가이드의 또 다른 인기있는 소스는 내부 스타일 가이드를 공개 한 Google입니다.

중요한 것은 당신이 하나를 선택하고 그것에 충실하려고 노력하는 것입니다. 이를 더 쉽게 만드는 한 가지 방법은 IDE에서 스타일 오류를 확인하고 스타일 가이드를 따르지 않을 경우 코드가 푸시되지 않도록하는 스타일 검사를 설정하는 것입니다. 코드를 자동으로 포맷하는 자동 포맷터를 사용하여 추가로 커밋 할 수도 있습니다. 이를 통해 원하는대로 코드를 작성할 수 있으며 실행시 표준에 맞게 코드 형식이 자동으로 지정됩니다. Python에서 인기있는 것은 Black입니다.

테스트 작성

 
대부분의 데이터 과학자들은 테스트를 시작하는 방법을 모르기 때문에 테스트를 두려워한다는 것을 알았습니다.

사실, 많은 데이터 과학자들이 제가 이미 임시 테스트라고 부르는 것을 실행합니다. 저는 데이터 과학자가 노트북에서 새로운 기능에 대해 몇 가지 "정상 검사"를 신속하게 실행하는 것이 일반적이라는 것을 알고 있습니다. 몇 가지 간단한 테스트 케이스를 통과하고 함수가 예상대로 실행되는지 확인합니다.

소프트웨어 엔지니어는이를 프로세스 단위 테스트라고합니다.

그러나 유일한 차이점은 데이터 과학자가 임시 테스트를 삭제하고 계속 진행한다는 것입니다. 대신에, 당신은 그것들을 저장하고 코드가 푸시되기 전에 매번 실행되는지 확인하여 아무것도 손상되지 않았는지 확인해야합니다.

Python 사용을 시작하려면 pytest를 사용합니다. pytest를 사용하면 테스트를 쉽게 만들고 한 번에 모두 실행하여 통과하는지 확인할 수 있습니다. 시작하는 간단한 방법은 "tests"라는 디렉토리를 만들고 해당 디렉토리 내에 "test"로 시작하는 Python 파일을 포함하는 것입니다. 예를 들어 "test_addition.py"가있을 수 있습니다.

# content of test_addition.py
def add(x, y): return x + y
def test_add(): assert add(3, 2) == 5


일반적으로 실제 함수는 다른 Python 파일에 있고이를 테스트 모듈로 가져옵니다. 또한 Python 추가를 테스트 할 필요가 없지만 이것은 매우 간단한 예입니다.

이러한 테스트 모듈 내에서 함수의 모든 "건전성 검사"를 저장할 수 있습니다. 일반적으로 일반적인 사례뿐만 아니라 경계 사례 및 잠재적 오류 사례도 테스트하는 것이 좋습니다.


참고 : 다양한 유형의 테스트가 있습니다. 단위 테스트는 데이터 과학자가 테스트를 시작하는 데 가장 좋은 테스트라고 생각합니다.


코드 검토 수행

 
마지막으로 더 나은 코드를 작성하기 위해해야 ​​할 일 중 가장 중요한 것은 코드 리뷰입니다.

코드 검토는 도메인에서 코드 작성에 능숙한 다른 사람이 코드를 메인 브랜치에 커밋하기 전에 검토하는 것입니다. 이 단계를 통해 모범 사례를 따르고 잘못된 코드 나 버그를 포착 할 수 있습니다.

코드를 검토하는 사람은 적어도 코드 작성에 능숙해야하지만, 다른 사람이 코드를 검토하도록하는 것은 여전히 ​​매우 유익 할 수 있습니다.

게 으르는 것은 꽤 인간적이며 그 게으름이 우리 코드에 스며들게하는 것은 쉽습니다. 누군가가 여러분의 코드를 검토 할 것이라는 것을 아는 것은 좋은 코드를 작성하는 데 시간을 할애하는 데 큰 동기가됩니다. 또한 개선 할 수있는 가장 좋은 방법입니다. 경험이 풍부한 동료가 코드를 검토하고 개선 방법에 대한 팁을 제공하는 것은 값을 매길 수 없습니다.

코드를 검토하는 사람들이 쉽게 이해할 수 있도록 새 코드의 양을 작게 유지하십시오. 작고 빈번한 코드 검토가 잘 작동합니다. 드물고 엄청난 코드 리뷰는 끔찍합니다. 아무도 검토해야하는 1,000 줄의 코드를 받고 싶어하지 않습니다. 이러한 리뷰는 사용자가 한 번에 많은 코드를 실제로 이해하는 데 필요한 시간을 할애 할 수 없기 때문에 더 나쁜 피드백을 제공하는 경향이 있습니다.



코딩 레벨 업

 
이 기사가 시간을내어 더 나은 코드를 작성하는 방법을 배우는 데 영감을 주었으면합니다. 반드시 어렵지는 않지만 개선을 위해 시간과 노력이 필요합니다.

이 5 가지 제안을 따르면 코드 품질이 크게 향상 될 것입니다.

당신의 미래 자신과 동료들은 당신에게 감사 할 것입니다.

내 체크 아웃 무료 코스 기계 학습 모델을 배포하는 방법에 대해 설명합니다.

 
바이오 : 타일러 포크 맨 Branded Entertainment Network의 AI 책임자입니다. Tyler 's 무료 사본 받기 놀라운 데이터 과학 프로젝트를 만들기위한 5 단계 프로세스.

실물. 허가를 받아 다시 게시했습니다.

관련 :

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처 : https://www.kdnuggets.com/2021/06/data-scientists-need-know-code.html

spot_img

VC 카페

VC 카페

최신 인텔리전스

spot_img