안녕하세요. EDA 단계에서 수치형컬럼들의 기초통계량을 해보니 SeniorCitizen이 0과 1로 나뉘어있는거 같아 변수 확인 후, 해당 컬럼을 범주형으로 변환 후, 작업하였는데 이렇게 변경하여 작업해도 괜찮을까요 ? 범주형으로 변경 후, 작업하였을 때 # 원핫인코딩 : 946.3475544795037 946.7024808036148 # 레이블인코딩 : 951.0960435538027 952.7925407798712 다음과 같이 결과 값이 나왔습니다. 감사합니다 :)
# your code import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p1/members.csv") cols1 = df.columns[df.isnull().sum() >= len(df) * 0.3] df = df.dropna(subset=cols1) cols2 = df.columns[(df.isnull().sum() < len(df) * 0.3) & (df.isnull().sum() >= len(df) * 0.2)] for col in cols2: df[col] = df[col].fillna(df[col].mode()[0]) print(sum(df['f3'] == 'gold')) 문제에서 결측치가 30% 이상인 컬럼을 찾으라 했는데, 저는 이렇게 조건에 해당하는 컬럼들을 리스트 형태로 구해서 subset에 넘겨주었는데, 선생님 풀이를 보니 subset=['f1'] 이런 식으로 조건에 해당하는 컬럼의 이름을 직접 명시하셨더라구요..! 이런 문제를 풀 때 조건문을 이용해서 조건에 해당하는 컬럼들을 일괄적으로 선택할 필요는 없나요? 제가 아직 이 시험의 문제 유형을 잘 파악하지 못했는데, 이 시험이 혹시 코딩테스트를 예로 들면 "2+3의 값을 출력하시오" 라는 문제의 답을 print(2+3)이 아닌 print(5)로 써도 답은 맞으니 정답 처리가 되는 방식인가요? 감사합니다.
안녕하세요. Child()에 명시적으로 부모 생성자를 호출하는 문구가 있어서 [Parent: 5 [Parent default 가 호출되는 것 이해했습니다. 그럼 Child(){ 안에 super()가 없고, this.display()부터 시작하는 상태라도 출력값은 동일한가요? 자식 생성자 생성 전에 부모 생성자 먼저 생성돼야 하고, 부모 클래스에 기본 생성자가 정의되어 있으니까요. 감사합니다.
2유형 개념 강의 중 classification(분류) 문제 질문있습니다. label 인코딩 할 때 범주형 자료를 선택하기 위해 cols = train.select _dtypes(include='object')를 사용한다고 했습니다. 그 후 Min-Max 스케일링을 진행할 때 강의에서는 리스트 형태로 cols 변수에 직접 수치형 컬럼을 입력했지만 cols = train. select _dtypes (exclude= 'object' ) 또는 include=['int','float'] 으로도 선택할 수 있을 것을 것이라 생각해서 실행했더니 에러가 발생합니다. ValueError : Boolean array expected for the condition, not int64 제 방법대로 진행했을 때 cols에 선택된 데이터를 보면 강의에서 직접 리스트 형태로 입력한 컬럼에 추가로 'id' 컬럼이 더 선택된 것으로 보입니다. 이렇게 진행했을 때 왜 에러가 발생하는지, 에러가 발생하지 않아도 id 컬럼이 추가로 선택된 상태로 진행했을 때 문제가 있는지 질문 드립니다! 강의 내용 cols = ['age', 'fnlwgt', 'education.num', 'capital.gain', 'capital.loss', 'hours.per.week'] def get_data(): train_copy = train.copy() test_copy = test.copy() return train_copy, test_copy train_copy, test_copy = get_data() from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() display(train_copy[cols].head(2)) train_copy[cols] = scaler.fit_transform(train_copy[cols]) test_copy[cols] = scaler.transform(test_copy[cols]) display(train_copy[cols].head(2)) 제 코딩 내용은 위 코드에서 cols = ['age', 'fnlwgt', 'education.num', 'capital.gain', 'capital.loss', 'hours.per.week'] 부분을 cols = train.select_dtypes(include=['int','float']) 또는 cols = train.select_dtypes(exclude='object') 이렇게 바꿨습니다
안녕하세요. 직전 강의에서 객체 생성 시 가장 먼저 생성자를 실행해야 한다고 설명해 주셨습니다. 그런데 본 강의 예제에서는 생성자 메서드를 실행하지 않네요. 업캐스팅인 경우에는 생성자를 실행하지 않는건가요? 감사합니다. 수정: 다른 질문을 보니 생성자를 실행하는 것 같네요. 4:00 예제의 경우 Car 생성자: Tesla Model 3 2021 ElectricCar 생성자: 75 kWh (이하생략) 부모, 자식 생성자가 각각 이렇게 출력된다고 답변해 주셨는데, 이건 둘다 기본 생성자가 없어서 그런거 맞나요? 만약 Car 클래스에 파라미터 없는 기본 생성자가 있었으면 부모 클래스에는 기본 생성자 실행, 자식 클래스에는 파라미터 있는 생성자 실행이 되는게 맞나요?
자식 생성자 생성되고 child() 왔다가 부모 올라가서 parent() 먼저 출력후 자식내려와서 super() 이니까 또 parent() 출력하고 다시 내려와서 child constructor 해야하지 않나요? parent constructor parent constructor child constructor 라고 생각했는데 아닌 이유가 뭘까요..
문자열이 비어있는지 판단하는것이 string str = "Hello"; 가 있냐 없냐로 판단하는 것인가요??? 설명란에 Hello라는 문자열이 변수에 들어가 있고 그것이 비었는 지를 물어보는 기능이 참값이 나온다는데 비어있으면 참값이고 그렇지 않으면 거짓값인데 답이 거짓값이 나와서 이해가 조금 부족합니다..ㅠㅠ
이전까지 업캐스팅에서 부모의 기본생성자를 먼저 출력하고 다음에 자식의 생성자를 실행한다고 배웠는데 여기선 빼고 바로 B의 생성자로 가는 이유가 무엇인가요 앞 문제와 파라미터가 들어간 메인함수는 똑같은데 오버로딩과 무슨 관련이 있나요 B의 기본생성자에서 명시적으로 파라미터가 들어간 부모 생성자를 호출하기에 부모 기본생성자를 생략해도 되는건가요