inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

섹션 11 2회 기출유형(작업형2) 코드 질문

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요. 좋은 강의 감사드립니다. 오류 없이 결과는 나왔습니다. 제 코드가 맞는지, 엉뚱한지 확인이 어려워 질문드립니다. 맞는 풀이인가요? 고쳐야 할 부분이 어떤 부분인가요? ID 드랍하지 않고 쭉 진행했는데, 이러할 경우 문제가 되나요? roc_auc_score, submit 과정에서 pred에 [:,1] 을 하면 오류가 없고, 빼면 오류가 생기는데 pred[:,1]인 이유가 헷갈립니다. 랜덤포레스트에서 random_state=2024만 적어서 돌려도 되나요? 질문이 장황한데 답변 주셔서 항상 감사합니다! cols = ['Warehouse_block' ,'Mode_of_Shipment','Product_importance' , 'Gender'] from sklearn.preprocessing import LabelEncoder le = LabelEncoder() for col in cols: X_train[col] = le.fit_transform(X_train[col]) X_test[col] = le.transform(X_test[col]) from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_train, y_train['Reached.on.Time_Y.N'], test_size = 0.2, random_state = 2024) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(n_estimators=160, max_depth=20, random_state=2024) rf.fit(X_train, y_train) pred = rf.predict_proba(X_test) from sklearn.metrics import roc_auc_score print(roc_auc_score(y_test, pred[:,1])) pred = rf.predict_proba(X_test) pred submit = pd.DataFrame({ 'ID': X_test['ID'], 'pred':pred[:,1] }) submit.to_csv("result.csv", index=False) import pandas as pd df = pd.read_csv("result.csv")

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
rkgml5153 댓글 2 좋아요 0 조회수 245

작업형2 모의문제1

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 선생님, CLIENTNUM,Attrition_Flag 타겟 분류 문제에서, y가 분류니까 roc_auc_score을 구할 때 predict_proba를 이용해서 구했는데 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_tr,y_tr) pred = model.predict(X_val) print(accuracy_score(y_val, pred)) # 정밀도 print(precision_score(y_val, pred)) # 재현율 (민감도) print(recall_score(y_val, pred)) # F1 print(f1_score(y_val , pred)) 정확도 ~ f1까지는 proba를 안하고 바로 구했는데 어떤 차이로 인해 얘네는 proba를 안하게 될까요 ? ㅜㅜ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
kyb1053 댓글 2 좋아요 0 조회수 188

앞으로 공부방향

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님, 이제 한 열흘 정도 남은 상황에서 강의 보면 이해는 되는데 실제로 타이핑 치려니까 머리속이 하얘지면서 어려운데, ㅠ 앞으로 남은 기간동안은 어떤 방식으로 공부를 하는게 좋을까요? 강의를 빼곡히 노션에 정리하면서 멘트나 그런것들 정리해뒀는데... 막막하네요ㅜ.ㅜ 1유형은 캐글 반복 + 2유형 기출만 반복(1~7회) 3유형은 회귀분석이랑 분산분석 2개만 외워가려고요..ㅎ 갑갑하네요ㅜ.ㅜ 증말

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
moonwrd 댓글 1 좋아요 0 조회수 322

캐글 작업형3 updated 2024.06 문제

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

문제 1-2 accuracy를 구하는 문제를 저는 다음과 같이 풀었습니다. from statsmodels.formula.api import logit model = logit('purchase~income', data=train).fit() target = test.pop('purchase') pred = model.predict(test) > 0.5 from sklearn.metrics import accuracy_score print (round(accuracy_score(target, pred),3)) 답은 0.507로 동일하게 나오는 것 같습니다. 다음과 같이 풀어도 문제 없는걸까요? 그리고 pred = model.predict(test) > 0.5에서 '>0.5'의 역할은 무엇인지 다시 한번 설명해 주실 수 있을까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
yb 댓글 1 좋아요 0 조회수 174

캐글 문제 중 질문드립니다

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

답변 감사합니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
댓글 1 좋아요 0 조회수 180

5회 기출 작업형1 - 1번 문제

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 cond1 = df['종량제봉투종류'] == '규격봉투' cond2 = df['종량제봉투용도'] == '음식물쓰레기' cond3 = df['2ℓ가격'] != 0 df = df[cond1 & cond2 &cond3] print(round(df['2ℓ가격'].mean())) 위 작업에서 cond1,2,3를 df에 대입하지 않고 print문으로 평균을 구할 수 있는 방법이 있나요?? 아니면 따로 방법이 없어서 df에 대입 후 2ℓ가격의 평균을 구한 건지 궁금합니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
조현우 댓글 2 좋아요 0 조회수 211

작업2유형 전처리&피쳐엔지니어링

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하십니까. 선생님 수업 잘 듣고 있는데 제가 전처리나 피처엔지니어링에서 정확한 기준을 모르겠습니다. 그냥 object타입을 모두 제거하거나 아니면 결측치가 있는 경우 어떤것은 제거하고 어떤것은 0으로 채우는데 정확한 기준이 있나요? 있다면 대략적인 기준을 알고 싶습니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
신준모 댓글 2 좋아요 0 조회수 203

작업형1 모의문제2 - 4번

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

문제에서 자료형이 object인 칼럼을 삭제하라고 하였는데 df.head()로 출력하면 'age', 'f1', 'f2', 'f5', 'views' 가 object인 칼럼을 제외한 칼럼이지만, df.info()로 출력하면 아래 사진과 같이 'age', 'f1', 'views' 만이 object인 칼럼을 제외한 칼럼으로 나옵니다. 어떤게 맞는 기준인지 판단하기가 어려워 질문 드립니다. 이럴 땐 어떻게 사고하고 판단하여야 할까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
세린 댓글 1 좋아요 0 조회수 165

피처 엔지니어링 전체 과정

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

피처 엔지니어링의 전체 과정에 대해서 잘 이해가 안되서 질문 드립니다. 데이터 전처리를 통해 결측값과 이상값을 처리하고, 수치형 변수와 범주형 변수로 나눈 뒤 수치형 변수는 스케일링을 적용하고 범주형 변수는 인코딩을 적용하고 그 이후에 나눈 수치형 변수와 범주형 변수를 합친다. 만약 수치형 변수와 범주형 변수를 합친 후 train 데이터와 test 데이터의 shape를 출력했을 때, 각각의 컬럼 수가 다르다면 인코딩을 잘못한 것이다. train데이터와 test 데이터의 shape를 출력했을 때 컬럼 수가 다르다는 걸 알게 되면 그때부턴 어떻게 해야 되나요? 데이터를 다시 새로 load하고 범주형 변수와 수치형 변수의 컬럼 정보를 리스트에 저장한 후 train data와 test data를 합쳐서 합친 전체 data의 수치형 변수 컬럼과 범주형 변수 컬럼에 대해 각각 스케일링과 인코딩을 진행한 후 train data와 test data로 나눠줘야하는 건가요? 제가 이해한 것이 맞는 건지 궁금합니다!! 강의 잘 듣고 있습니다. 감사합니다!^^

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
최고의프로그래머 댓글 1 좋아요 0 조회수 285

작업형1 모의문제3 - 9번 문제 (답글에 대한 답이 없어 다시 질문 드립니다.)

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

아래는 수업 자료에 있는 풀이부분 코드이고, from google.colab import drive drive.mount('/content/drive') import pandas as pd import numpy as np df = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/빅분기 놀이터 Dataset/members.csv') df['subscribed'] = pd.to_datetime(df['subscribed']) df['year'] = df['subscribed'].dt.year df['month'] = df['subscribed'].dt.month df['day'] = df['subscribed'].dt.day df = df.groupby('month').count() print(df.sort_values('subscribed').index[0]) ValueError Traceback (most recent call last) <ipython-input-1-2092ad4ed95e> in <cell line: 10>() 8 df = pd.read_csv('/content/drive/MyDrive/bigdata(빅분기 놀이터)/빅분기 놀이터 Dataset/members.csv') 9 ---> 10 df['subscribed'] = pd.to_datetime(df['subscribed']) 11 df['year'] = df['subscribed'].dt.year 12 df['month'] = df['subscribed'].dt.month 4 frames /usr/local/lib/python3.10/dist-packages/pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime() ValueError: time data "9690" doesn't match format "%Y-%m-%d", at position 21. You might want to try: - passing `format` if your strings have a consistent format; - passing `format='ISO8601'` if your strings are all ISO8601 but not necessarily in exactly the same format; - passing `format='mixed'`, and the format will be inferred for each element individually. You might want to use `dayfirst` alongside this. 이는 에러 코드입니다. df['subscribed'] = pd.to_datetime(df['subscribed']) 이 코드에서 발생한 에러입니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
세린 댓글 1 좋아요 0 조회수 216

빅분기 작업형 2유형 predict, predict_proba 제가 이해한게 맞나 의문이 생겨 질문드립니다

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님 분류 문제에서 확률을 예측하라고 제시되고 평가는 f1-score로 하라고 하면 평가부분에서는 model.fit(X_tr,y_tr) pred = model.predict(X_val) print(f1_score(y_val,pred)) 이렇게 하고 예측부분에서는 pred = model.predict_proba(test) 이렇게 하고 제출하면 될까요 ? 제가 이해한게 맞나 긴가만가해서 여쭤보고싶습니다..!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김준수 댓글 1 좋아요 0 조회수 544

3-4 와 10-2 피쳐엔지니어링(인코딩) 부분 .columns 사용 등

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

질문 1. 3-4 피쳐엔지니어링 강의 부분과 10-2 공식예제 체험형 2 연계 질문이 있습니다. 아래건 10-2에서 풀어본 거입니다. import pandas as pd train = pd.read_csv("data/customer_train.csv") test = pd.read_csv("data/customer_test.csv") # 사용자 코딩 # EDA print(train.shape, test.shape) # print(train.info()) # 범주형 주구매상품 , 주구매지점 # print(test.info()) # 범주형 주구매상품 , 주구매지점 # print(train.isnull().sum()) # 결측치 환불금액 # print(test.isnull().sum()) # 결측치 환불금액 ## 전처리 (결측치, 이상치) # print(train["환불금액"]) train["환불금액"] = train["환불금액"].fillna(0) test["환불금액"] = test["환불금액"].fillna(0) # print(train["환불금액"]) ## 피쳐엔지니어링(스케일링, 인코딩) from sklearn.preprocessing import LabelEncoder cols = train.select_dtypes(include="O") for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) ## 검증데이터셋 분리 from sklearn.model_selection import train_test_split x_tr,x_val,y_tr,y_val = train_test_split(train.drop(["성별"], axis=1), train["성별"],test_size=0.2, random_state = 100) ## 평가지표 및 모델 불러오기 from sklearn.metrics import roc_auc_score, f1_score, accuracy_score from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state = 100) rf.fit(x_tr, y_tr) pred_rf = rf.predict_proba(x_val) print("roc_auc:",roc_auc_score(y_val,pred_rf[:,1])) # 기본 0.6258311184510446 # 인코딩 후, 0.6356067057174067 # 예측 (테스트셋에 적용) pred = rf.predict_proba(test) # print(pred) # print(pred[:,1]) # df 생성 및 제출 df = pd.DataFrame({"pred": pred[:,1]}) # print(df) df.to_csv("result.csv", index=False) print(pd.read_csv("result.csv")) 라벨? 레이블? 인코딩 하면서 cols 변수를 만들 때, .columns 를 추가하지 않아도 결과까지 문제 없이 되더라고요. .columns를 추가하면 시리즈 타입의 변수가 생성되고, 위에처럼 빼면 데이터프레임 차원 타입으로 변수가 생성되는건 확인했습니다. 그래서 간편성을 위해 .columns 를 빼고 원핫 인코딩도 가능한가 3-4 강의 때 자료를 적용해서 돌려봤습니다 n_train = X_train.select_dtypes(exclude = 'object').copy() n_test = X_test.select_dtypes(exclude = 'object').copy() #사본 작성시 copy() 넣어서 실행 c_train = X_train.select_dtypes(include='object').copy() c_test = X_test.select_dtypes(include = 'object').copy() cols = X_train.select_dtypes(include="O") c_train = pd.get_dummies(c_train[cols]) c_test = pd.get_dummies(c_test[cols]) 그랬더니 에러가 발생 하더라고요. # ValueError: Boolean array expected for the condition, not object cols = X_train.select_dtypes(include="O").columns # 이렇게 .columns 를 추가하고 돌리니 사용 가능 cols 변수 생성할때 다시 .columns 를 추가하고 돌리니까 에러 없이 끝까지 잘 되더라고요. 라벨 인코딩에선 문제 없던게 원핫 인코딩에서 ValueError: Boolean array expected for the condition, not object가 발생하는 이유가 뭔지 궁금합니다. 인코딩은 라벨이든 원핫이든 cols 변수 때 select_dtypes(include="O).columns 으로 .columns 까지 다 입력하는걸로 연습하는게 맞는거 같은데 오류 발생은 이해가 안되네요. 질문 2. ※ 피쳐엔지니어링에서 train, test 셋을 분리( .copy() )해서 수치형은 스케일링하고 범주형은 인코딩 한 다음, 합치기 ( .concat() ) 하는 방식이 아니라 수치형 부분 칼럼을 변수(cols_n)로 받고, 범주형 부분을 변수(cols_c) 으로 받아서, 데이터셋을 수치와 범주형으로 분리하지 않은 상태에서 각각 스케일링, 인코딩을 적용하고 검증데이터셋 분리-> 모델 & 평가지표 불러오기 -> 예측(테스트셋 적용) -> df 생성 -> 제출 하는 방법은 어렵나요? 아래 처럼요. [train, test 2개 데이터셋 제공시] # train셋엔 있고 test셋엔 없는 target에 해당하는 칼럼 분리 target = train["target"] cols_n = train.drop("target", axis=1).select_dtypes(exclude="O).columns cols_c = train.drop("target",axis=1).select_dtypes(include="O").columns # "target" 데이터는 범주형이든 수치형이든 스케일링이나 인코딩을 하면 안되므로 제외시킴(이거 맞나요?) 또는 target = train.pop(["target"]) cols_n = train.select_dtypes(exclude="O).columns cols_c = train.select_dtypes(include="O").columns ## 수치형 민맥스 스케일링 작업 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() train[cols_n] = scaler.fit_transform(train[cols_n]) test[cols_n] = scaler.transform(test[cols_n]) ## 범주형 라벨 인코딩 작업 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() for col in cols_c: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) 그 다음 검증데이터셋 분리 ~~~~~~~~~~~ 제출 [X_train, y_train, X_test 3개 데이터셋 제공시] cols_n = X_train.select_dtypes(exclude="O).columns cols_c = X_train.select_dtypes(include="O").columns ## 수치형 민맥스 스케일링 작업 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_train[cols_n] = scaler.fit_transform(train[cols_n]) X_test[cols_n] = scaler.transform(test[cols_n]) ## 범주형 라벨 인코딩 작업 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() for col in cols_c: le = LabelEncoder() X_train[col] = le.fit_transform(X_train[col]) # 처음에 X_test[col] = le.transform(X_test[col]) 이후 검증데이터셋 분리 ~~~~~~~~~~~ 제출 이런 식으로요. 작업형2에서 피쳐엔지니어링 부분이 특히 어려워서 조금이라도 간편하고, 범용성 높은 방법을 찾는게 머리 속 정리하기도 쉽고, 외우기도 좋을 거 같아서 고민중입니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
빅분기수강생 댓글 2 좋아요 0 조회수 271

유저인증 라이브러리 (streamlit-authenticator) 설치 이슈

해결됨

실전 프로젝트로 배우는 데이터 앱 만들기 with Python & Streamlit

안녕하세요~~ 루비네 코딩 입니다 ^^ 유저인증 라이브러리 (streamlit-authenticator)를 설치할 때 다음과 같이 과거 버전을 명시해 주세요. pip install streamlit-authenticator==0.2.2 본 강의는 Python 버전 3.9.13, streamlit 버전 1.19.0에 맞추어서 제작되었습니다. streamlit-authenticator도 최신 버전이 아닌 V0.2.2를 설치해 주셔야 합니다. 만약에 다음과 같이 설치 한다면 최신 버전이 설치됩니다. pip install streamlit-authenticator => Streamlit도 최신 버전으로 업그레이드 되어 많은 호환성 문제가 발생할 수 있습니다. => 이 경우에는 새롭게 가상환경을 생성하고 모든 것을 다시 버전을 맞추어 설치하셔야 합니다. 감사합니다~

  • python
  • streamlit
루비네 코딩 댓글 2 좋아요 1 조회수 502

5회 작업형2 rmse 질문입니다

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 target = train.pop("price") train = pd.get_dummies(train) test = pd.get_dummies(test) from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2, random_state=0) from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor(random_state=0) rf.fit(X_tr,y_tr) pred = rf.predict(X_val) from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_val, pred) rmse = mse **0.5 print(rmse) 이런식으로 rmse를 만들면 될까요??

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
문상혁 댓글 1 좋아요 0 조회수 186

작업형2 피쳐엔지니어링 과정에서 pop() 을 사용하는 이유

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

어떤 경우는 pop()을 사용하고 어떤 경우는 사용하지 않는 것 같은데, 명확히 이해가 안되서 질문 남깁니다. pop() 으로 train셋의 target 값 보존을 위한 것인가요? 아니면 df 생성 때 pred 값이 외의 칼럼을 함꼐 출력하기 위해서인가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
빅분기수강생 댓글 1 좋아요 0 조회수 217

기출유형4회 작업형1-3

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

import pandas as pd df = pd.read_csv("nf.csv") # print(df.head()) df['date_added']=pd.to_datetime(df['date_added']) df['year']=df['date_added'].dt.year df['month']=df['date_added'].dt.month cond1=df['year']==2018 cond2=df['month']==1 cond3=df['country']=='United Kingdom' #print(len(df[cond1&cond2&cond3])) #print(len(cond1&cond2&cond3)) 여기서 맨밑에 샵 두줄이 어떻게 다른건가요? 두개 결과가 다르게 나오는데 시험상황에서 실수할것 같아요 ㅜ 헷갈립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
hz 댓글 1 좋아요 0 조회수 107

1, 3교시 소문제를 풀고 답안 제출화면으로 갔다가 다시 돌아올 경우

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

시험 테스트 환경에서 파이썬으로 프로그램을 짜고 답안을 도출해서 왼쪽상단에 답안제출 화면으로 가서 답안을 넣고 다시 프로그램 화면으로 돌아가려고 풀이화면을 눌렀는데, 프로그램 작성 코드가 다 없어 집니다. 시험 테스트 환경에서만 그런 것인지? 시험환경에서도 이렇게 된다면 어떻게 해야하는지 문의 드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jhkim 댓글 1 좋아요 0 조회수 214

예시문제 작업형2(신버전)

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님 train과 test 데이터에서 회원ID를 드랍하지 않고 모델에 가져가는 이유가 궁금합니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
sangjunla6 댓글 1 좋아요 0 조회수 222

다중선형회귀2(범주형 변수) 질문있습니다.

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

위의 다중선형회귀에서 유형 칼럼은 범주형 변수인데, C(유형) 으로 안해줘도 되나요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
munjihey1127 댓글 3 좋아요 0 조회수 285

Service, Repository를 interface로 만들었을때 궁금한게 있습니다.

미해결

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

테스트 코드를 작성할 때 DIP를 이용해서 결합도를 낮추고, 빠르게 테스트를 하는 것을 확인하였습니다. 궁금한 점은 interface로 서비스 레파지토리를 선언해서 사용하면, 인터페이스 자체가 어떻게보면 다형성을 위해 도면을 구성한다고 생각되는데, FakeImpl을 만들기위해서 너무 많이 다형성을 사용하는게 아닌가 싶은 생각도 들어서요. 초기 프로젝트에는 오버엔지니어링이 되지는 않을까 고민이 됩니다. 소스코드 관리하는 점에서 따라가기 쉽지 않은 것을 느꼈습니다. 물론 패키지 구조를 잘 알고 있는 사람이라면 쉽게 접근하겠지만, 그렇지 않은 사람이 코드를 분석했을 때 함수를 클릭해서 접근은 하는 경우가 많더라고요. 이럴 경우에는 패키지 구조를 도식화해서 공유해서 해결하는지, 궁금합니다.

  • spring
  • tdd
  • jpa
  • 소프트웨어-테스트
  • unittest
콩코드여객기 댓글 2 좋아요 0 조회수 389

인기 태그

인프런 TOP Writers

주간 인기글