여유 없으면 랜덤포레스트 모델 하나만 해도 크게 지장없는 걸로 알고 있습니다. 근데 모델 구성 중에 max_depth 이나 random_state에 따라 점수가 차이가 날 수 있는 건 당연한데, 이 차이가 많이 날 수 있나요...? 저번 시험에서 max_depth 설정한 사람과 안한 사람 차이 점수가 10점 이상 난 걸로 알고 있어서...ㅠ 그리고 예를들어 모델 검증으로 max_depth=7이 max_depth=5가 더 좋은 평가지표가 나왔는데, 실제 test랑 비교했을 때 max_depth=5가 더 좋을 수 있는 것 아닌가요...?
@Data @Builder @NoArgsConstructor @AllArgsConstructor public class LoginDto { @NotBlank private String email; @NotBlank private String password; } ------------------------------------- @Component public class LoginValidator implements Validator { private final UserRepository userRepository; public LoginValidator(UserRepository userRepository) { this.userRepository = userRepository; } @Override public boolean supports(Class<?> clazz) { return LoginDto.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { LoginDto loginDto = (LoginDto) target; User user = userRepository.findByEmail(loginDto.getEmail()); if (user == null) { throw new LoginFailedException("User not found"); } if (!user.getPassword().equals(loginDto.getPassword())) { throw new LoginFailedException("Invalid password"); } } } 위 코드처럼 DTO 클래스에서 간단한 검증은 bean validation으로 시행하고, 복잡한 검증로직은 LoginValidator에서 관리 및 커스텀 예외를 리턴하는 방식은 안좋은 방식인가요? 제가 알기로는 errors는 bindingresult처럼 복잡한 검증이 아니라 단순한 검증결과를 담는 것으로 알고 있는데, validate를 override하여 복잡한 검증 실행 및 검증 결과를 LoginFailedException(커스텀 예외)으로 반환하려고 하니 Errors를 리턴해야 한다는 강제성 때문에 혼란이 생겼습니다. 따라서 제가 궁금한 점은, 간단한 검증작업(ex. 정규식) 과 복잡한 검증작업(ex.이메일,비밀번호가 DB에 있는지 검증)은 어떻게 처리하는게 이상적인가? 입니다. 저는 각각 Bean Validation, Validator(커스텀 예외 반환)로 해보려했는데 아닌 것 같아서 질문드립니다. 감사합니다.
T1-21 문제 풀어보고 있는데요, 캐글에서 올려주신 코드로 작성한 결과와 제가 작성한 코드의 결과가 달라 질문 드립니다. (*제가 작성한 전체 코드는 맨 아래에 있습니다.) 바로 아래 코드에 대한 출력값은 90, 30, 30, 30 입니다. (답은 167.0 으로 출력됩니다.) 이를 통해 이상값 처리와 데이터 분할 모두 옳게 했다고 볼 수 있는데, 답은 165가 아닌 167이 나와서 도대체 어디서 잘못된건지 모르겠습니다. 답변 주시면 감사하겠습니다! # print(len(df['age'])) # print(len(df['age'].iloc[:30])) # print(len(df['age'].iloc[30:60])) # print(len(df['age'].iloc[60:90])) import pandas as pd import numpy as np df = pd.read_csv('../input/bigdatacertificationkr/basic1.csv') # print(df.head()) # print(df.info()) cond1 = df['age'] > 0 cond2 = df['age'] == round(df['age'], 0) df = df[cond1 & cond2] # print(df.head()) # print(len(df['age'])) # print(len(df['age'].iloc[:30])) # print(len(df['age'].iloc[30:60])) # print(len(df['age'].iloc[60:90])) median1 = df['age'].iloc[:30].median() median2 = df['age'].iloc[30:60].median() median3 = df['age'].iloc[60:90].median() print(median1+median2+median3)
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 작업형 2 한 가지 방법으로 풀기를 봤는데요 지금까지는 결측치나 이상치가 없었던 것으로 알고있는데요 1.만약 8회차에 결측치나 이상치가 존재한다면 여기서 EDA이후 결측치나 이상치를 제거하고 인코딩으로 넘어가면 되는거죠?? 2.그리고 영상에서는 target빼고 원핫 인코딩으로 다 진행 하던데 혹시나 조금 더 꼼꼼하게 진행할려면 target데이터 제외후 범주형은 원핫 인코딩 수치형은 스케일링 돌린후 검증 데이터 나누고 randforest로 학습 및 평가 후 제출 하면 되는 걸 까요??
캐글에 올려주신 자료 중 T1-23 문제를 다시 풀어보고 있는데 선생님 답과 다른 답이 나와서 질문 드립니다. 선생님 풀이와 다른 부분은 10번째 값을 찾는 부분만 다른 코드로 했는데요 10번째 값은 88으로 같은데 중복값 제거 후 f1 중앙값이 75로 선생님 풀이의 값 77과는 다르게 나옵니다. 이유가 뭔지 알 수 있을까요? # f1 결측치를 f1을 내림차순으로 소팅했을 때 10번째 인덱스에 위치한 값으로 채움 df=df.sort_values('f1', ascending=False) df=df.reset_index() # print(df.head(10)) a=df.loc[9,'f1'] print(a) # print(df.isnull().sum()) df['f1']=df['f1'].fillna(a) # print(df.isnull().sum()) # age컬럼의 중복 제거 전 f1중앙값 m1=df['f1'].median() print(m1) # age컬럼의 중복 제거 후 f1중앙값 print(df.shape) df=df.drop_duplicates(subset=['age']) print(df.shape) m2=df['f1'].median() print(m2) print(abs(m1-m2))
> Task :prepareKotlinBuildScriptModel UP-TO-DATE FAILURE: Build failed with an exception. * What went wrong: Could not resolve all dependencies for configuration ':compileClasspath'. Failed to calculate the value of task ':compileJava' property 'javaCompiler'. Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=17, vendor=any, implementation=vendor-specific} for MAC_OS on aarch64. No locally installed toolchains match and toolchain download repositories have not been configured. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 504ms 이런 오류가 발생합니다.ㅜㅜ
상위 10번째 값으로 대체하는 부분에서 df.iloc[:10,-1] = min_value 이렇게 하셨는데 df['views'].iloc[:10]= min_value 이렇게 풀어도 상관없을까요? 만약 2번째 풀이도 상관 없다면 첫번째 풀이로 진행하신 이유가 있을까요? 취향차이일까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 정규성을 만족하지 않을 때 단일 표본과 대응 표본에서 윌콕슨을 사용하려고 합니다. 이때 단일 표본 stats.wilcoxon(df['관측치명']-평균값, alternative=) 라 했을 때 차이로(df['관측치명']-평균값) 계산하였고 대응표본은 차이로 계산이 가능하지만, 더 쉬운 방법인 df['before'], df['after'], alternative= 를 사용하였습니다. 그렇다면 단일표본에서도 df['관측치명'], 평균값으로 계산해서 될까요? 만일 안된다면, 윌콕슨은 차이 값를 기반으로 검정 통계량을 계산하는 것인데 대응표본은 두가지로 가능하면서 단일표본은 무조건 왜 -(차이)를 사용해야 하는지 궁금합니다!
@Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); @GetMapping("/new-form") public String newForm() { return "new-form"; } @PostMapping("/save") public String save(@RequestParam("username") String username, @RequestParam("age") int age, Model model) { Member member = new Member(username, age); memberRepository.save(member); model.addAttribute("member", member); return "save-result"; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } } RequestMappingHandlerAdapter에서 핸들러 어댑터를 찾으려면 핸들러 어탭터를 등록해야 하는데 스프링에서 애노테이션 인식해서 저장되는 핸들러 어탭터 뭘로 등록되는 건가요? 위에 코드는 그냥 핸들러로 등록되는 거고, 그럼 SpringMemberControllerV3 핸들러를 실행시켜줄 핸들러 어댑터는 자동으로 생성되는데 궁금한 건 v4에서는 process로 모든 메서드가 같아서 처리가 가능했는데 지금은 다른데 어떻게 처리가 되는 겁니까? SpringMemberControllerV3에서 메서드가 3개니까 SpringMemberControllerV3을 호출해줄 핸들러 어댑터가 각 newForm, save, members를 사용할 수 있게 3개 생성되는 건가요??