안녕! 우리는 현재 업계 컨텍스트에서 기계 학습 프로젝트에서 코드 냄새를 연구하고
dslinter위한 피드백을 찾고 있습니다! 업계 환경에서 머신 러닝 프로젝트에서dslinter실행하고 생성 된 TXT 파일을 [email protected]으로 보낼 수 있다면 큰 도움이 될 것입니다. 단계와 명령은 여기에서 찾을 수 있으며 10 분을 넘지 않아야합니다. 프로세스를 함께 진행하려면 이메일을 보내 주시기 바랍니다. 프로세스는 익명이며 결과가 게시되기 전에 민감한 정보를 제거합니다. 많은 감사합니다!
dslinter 는 데이터 과학 및 기계 학습 코드를 줄이기위한 Pylint 플러그인입니다. 개발자는 기계 학습 코드 품질을 보장하고 Tensorflow, Pytorch, Scikit-Learn, Pandas, Numpy 및 Scipy와 같은 Python 라이브러리를 지원하는 것을 목표로합니다.
dslinter 이전 연구에서 식별 한 냄새에 대한 탐지 규칙을 구현합니다. 냄새는 논문, 회색 문학, Github 커밋 및 스택 오버플로 게시물에서 수집됩니다. 냄새도 웹 사이트에서 자세히 설명합니다 :)
데모 비디오의 예제 프로젝트는 여기에서 찾을 수 있습니다.
Python 패키지 인덱스에서 설치하려면 :
pip install dslinter
pylint --load-plugins=dslinter <other_options> <path_to_sources>
또는 명령을 실행하고 실행하는 폴더에 위의 설정이 포함 된 .pylintrc 구성 파일을 배치하십시오.
pylint <path_to_sources>
[Linux/Mac OS 사용자의 경우] :
pylint
--load-plugins=dslinter
--disable=all
--enable=import,unnecessary-iteration-pandas,unnecessary-iteration-tensorflow,
nan-numpy,chain-indexing-pandas,
merge-parameter-pandas,
dataframe-conversion-pandas,scaler-missing-scikitlearn,hyperparameters-scikitlearn,
hyperparameters-tensorflow,hyperparameters-pytorch,memory-release-tensorflow,
deterministic-pytorch,randomness-control-numpy,randomness-control-scikitlearn,
randomness-control-tensorflow,randomness-control-pytorch,randomness-control-dataloader-pytorch,
missing-mask-tensorflow,missing-mask-pytorch,tensor-array-tensorflow,
forward-pytorch,pipeline-not-used-scikitlearn,
dependent-threshold-scikitlearn,dependent-threshold-tensorflow,dependent-threshold-pytorch
--output-format=text:report.txt,colorized
--reports=y
<path_to_sources>
[Windows 사용자의 경우] :
pylint --load-plugins=dslinter --disable=all --enable=import,unnecessary-iteration-pandas,unnecessary-iteration-tensorflow,nan-numpy,chain-indexing-pandas,merge-parameter-pandas,dataframe-conversion-pandas,scaler-missing-scikitlearn,hyperparameters-scikitlearn,hyperparameters-tensorflow,hyperparameters-pytorch,memory-release-tensorflow,deterministic-pytorch,randomness-control-numpy,randomness-control-scikitlearn,randomness-control-tensorflow,randomness-control-pytorch,randomness-control-dataloader-pytorch,missing-mask-tensorflow,missing-mask-pytorch,tensor-array-tensorflow,forward-pytorch,pipeline-not-used-scikitlearn,dependent-threshold-scikitlearn,dependent-threshold-tensorflow,dependent-threshold-pytorch --output-format=text:report.txt,colorized --reports=y <path_to_sources>
또는 명령을 실행하고 실행하는 폴더에 위의 설정이 포함 된 .pylintrc 구성 파일을 배치하십시오.
pylint <path_to_sources>
기부금을 환영합니다! 기여하려면 다음 단계를 참조하십시오.
git clone https://github.com/your-github-account/dslinter.git
git submodule update --init --recursive
dslinter poetry 사용하여 종속성을 관리하므로 먼저 poetry 설치 한 다음 종속성을 설치해야합니다. pip install poetry
poetry install
dslinter 설치하려면 다음과 같이 설치하십시오. poetry build
pip install ./dist/dslinter-version.tar.gz
poetry run pytest .
C5501 -C5506 | 수입 | 수입 검사기 : 데이터 과학 모듈이 올바른 이름 지정 규칙을 사용하여 가져 오는지 확인하십시오.
R5501 | 불필요한 정화-판다 | 불필요한 반복 체커 (Pandas) : 데이터 프레임의 반복자보다 벡터 화 된 솔루션이 선호됩니다. 벡터화 된 API가있는 동안 반복을 사용하는 경우 규칙이 위반됩니다.
W5501 | Dataframe-isteration-Modification-Pandas | 불필요한 반복 체커 (Pandas) : 반복되는 데이터 프레임은 수정되지 않아야합니다. 반복 중에 데이터 프레임이 수정되면 규칙이 위반됩니다.
R5502 | 불필요한 정화-텐서 플로우 | 불필요한 반복 검사기 (TensorFlow) : 루프에 Augment 할당 작업이 있으면 규칙이 위반됩니다. 루프의 할당은 텐서 플로우 API의 벡터 화 솔루션으로 대체 할 수 있습니다.
E5501 | Nan-Numpy | Nan Equality Checker (Numpy) : 값은 np.nan np.nan != np.nan 과 비교할 수 없습니다.
W5502 | 체인-인덱싱-판다 | 체인 인덱싱 체커 (PANDAS) : 체인 인덱싱은 팬더 코드에서 나쁜 관행으로 간주되며 피해야합니다. Pandas Dataframe에서 체인 인덱싱을 사용하는 경우 규칙이 위반됩니다.
R5503 | 데이터 타입-판다 | 데이터 유형 검사기 (PANDAS) : 데이터 형식을 데이터에서 가져 오면 데이터 형식이 예상대로 가져 오도록 데이터 프레임을 가져 오면 데이터 유형을 설정해야합니다. 가져올 때 데이터 유형이 설정되지 않으면 규칙이 위반됩니다.
R5504 | 열 선택-판다 | 열 선택 검사기 (Pandas) : DataFrame이 다운 스트림에서 예상되는 것을 더 자세히 설명하기 위해 데이터 프레임을 가져온 후에 열을 선택해야합니다.
R5505 | 병합 파라미터 판다 | 병합 매개 변수 검사기 (PANDAS) : 매개 변수 'How', 'ON'및 'Validate'는 합병 작업을 위해 합병의 올바른 사용을 보장해야합니다.
W5503 | Inplace-Pandas | Inplace Checker (Pandas) : Dataframes에서의 작업은 새로운 데이터 프레임을 반환하며 변수에 할당해야합니다. 그렇지 않으면 결과가 손실되고 규칙이 위반됩니다. 화이트리스트 및 in_place 매개 변수 세트로 작업은 제외됩니다.
W5504 | DataFrame-Conversion-Pandas | Dataframe Converion Checker (Pandas) : Pandas 코드의 Dataframe 변환의 경우 .to_numpy ()를 .values 대신 .to_numpy ()를 사용하십시오. .Values가 Pandas 코드에서 사용되는 경우 규칙이 위반됩니다.
W5505 | Scaler-missing-scikitLearn | Scaler Missing Checker (ScikitLearn) : Scikit-Learn 코드의 스케일링에 민감한 작업 전에 스케일러가 사용되는지 확인하십시오. 스케일링에 민감한 작업에는 PCA (Principal Component Analysis), SVM (Support Vector Machine), 확률 적 구배 출신 (SGD), 다층 퍼셉트론 분류기 및 L1 및 L2 정규화가 포함됩니다.
R5506 | 하이퍼 파라미터 -ScikitLearn | 초 파라미터 검사기 (ScikitLearn) : Scikit-Learn 학습 알고리즘의 경우 몇 가지 중요한 하이퍼 파라미터가 설정되어야합니다.
R5507 | 하이퍼 파라미터-텐서 플로우 | 초 파라미터 검사기 (Tensorflow) : 신경망 학습 알고리즘의 경우 학습 속도, 배치 크기, 모멘텀 및 체중 감락과 같은 일부 imporatnt hyperameters를 설정해야합니다.
R5508 | 하이퍼 파라미터 -Pytorch | 하이퍼 파라미터 검사기 (Pytorch) : 신경망 학습 알고리즘의 경우 학습 속도, 배치 크기, 모멘텀 및 체중 감락과 같은 일부 imporatnt hyperameters를 설정해야합니다.
W5506 | 메모리-릴리스-텐서 플로우 | 메모리 릴리스 검사기 (TensorFlow) : 루프에서 신경망이 생성되고 메모리 명확한 작동이 사용되지 않으면 규칙이 위반됩니다.
W5507 | 결정 론적 파이터 | 결정적 알고리즘 사용 검사기 (PYTORCH) : PyTorch 프로그램에서 사용되지 않은 경우 사용되는 경우 규칙이 위반됩니다.
W5508 | 무작위성-통제-절부 | Randomness Control Checker (Numpy) : NP.Seed ()를 사용하여 기계 학습 프로그램에서 재현성을 보존해야합니다.
W5509 | 랜덤-제어-시키 리다 | Randomness Control Checker (ScikitLearn) : 실행 전반에 걸쳐 재현 가능한 결과의 경우 Scikit-Learn 추정기에서 Random_state = None의 사용을 제거하십시오.
W5510 | 랜덤-제어-텐서 플로우 | Randomness Control Checker (Tensorflow) : TF.Random.set_seed ()를 사용하여 Tensorflow 프로그램에서 재현성을 보존해야합니다.
W5511 | 랜덤 컨트롤-피토치 | Randomness Control Checker (Pytorch) : Torch.manual_seed ()를 사용하여 Tensorflow 프로그램에서 재현성을 보존해야합니다.
W5512 | Randomness-Control-Dataloader-Pytorch | Randomness Control Checker (Pytorch-Dataloader) : Worker_init_fn () 및 Generator는 재현성을 보존하기 위해 데이터 로더로 설정해야합니다. 설정되지 않으면 규칙이 위반됩니다.
W5513 | 누락 된 마스크-텐서 플로우 | 마스크 누락 체커 (TensorFlow) : 코드에 로그 함수가 사용되면 인수 값이 유효한지 확인하십시오.
W5514 | 누락 된 마스크 파이터 | 마스크 누락 체커 (pytorch) : 코드에 로그 함수가 사용되면 인수 값이 유효한지 확인하십시오.
W5515 | 텐서 어레이 텐서 플로우 | Tensor Array Checker (Tensorflow) : 루프에서 배열을 성장하려면 tf.tensorarray ()를 사용하십시오.
W5516 | Forward-Pytorch | Net Forward Checker (Pytorch) : Pytorch 코드에서 self.net.forward () 대신 self.net ()을 사용하는 것이 좋습니다. self.net.forward ()가 코드에 사용되면 규칙이 위반됩니다.
W5517 | 그라디언트 클레어 파이터 | 그라디언트 클리어 체크 머 (pytorch) : loss_fn.backward () 및 옵티마이저 ()는 Optimizer.zero_grad ()와 함께 사용해야합니다. 코드에 .zero_grad() 가 누락되면 규칙이 위반됩니다.
W5518 | 파이프 라인이 아닌 ScikitLearn | 파이프 라인 검사기 (ScikitLearn) : 모든 Scikit-Learn 추정기는 교육 및 테스트 데이터 간의 데이터 유출을 방지하기 위해 파이프 라인 내부에서 사용해야합니다.
W5519 | 종속성 임계 값-시키 히어 르크 | 종속 임계 값 검사기 (TensorFlow) : 코드에 임계 값 의존적 평가 (예 : F- 점수)가 사용되는 경우 임계 값-인디 펜던트 평가 (예 : AUC) 메트릭도 코드에 사용되는지 확인하십시오.
W5520 | 종속 임계 값-텐더 플로우 | 종속 임계 값 검사기 (Pytorch) : 코드에 임계 값 의존적 평가 (예 : F- 스코어)가 사용되는 경우 Threshold-IndenPendent Evaluation (예 : AUC) 메트릭도 코드에 사용되는지 확인하십시오.
W5521 | 종속 임계 값-파이토치 | 종속 임계 값 검사기 (ScikitLearn) : 코드에 임계 값 의존적 평가 (예 : F- 스코어)가 사용되는 경우 임계 값-인디 펜던트 평가 (예 : AUC) 메트릭도 코드에 사용되는지 확인하십시오.
Dslinter는 Luís Cruz와 Arie van Deursen이 감독 한 Fintech Research Lab의 SERG (Software Engineering Research Group) 및 Ing 's AI의 마스터 테스에서 Mark Haakman과 Haiyin Zhang이 개발했습니다.
관리자 : Haiyin Zhang [[email protected]].