영상보다가 처음에 결측치 제거 부분에서 실수로 "value"부분에서 따옴표를 넣어 test의 age컬럼이 object형식으로 저장되었습니다 그래서 이상치 파트에서 문자랑 정수가 섞여 조건문 작성시에 오류가 발생하였는데 다시 원래대로 결측치 있는 부분을 fillna(vlaue)로 저장시키는 방법은 없나요? test파일을 test = test_backup.copy() 이렇게 해놔야 하나요? value = int(train["age"].mean()) print("평균값: ", value) train["age"] = train["age"].fillna(value) test["age"] = test["age"].fillna("value")
train와 test의 데이터가 15개로 동일하지만 train_oh와 test_oh의 데이터는 왜 다른지 궁금합니다.. 제가 정확히 train_oh와 test_oh는 각각 train과 test의 문자데이터를 수치형 데이터로 변환하는것으로 이해했는데 그렇다면 train과 train_oh의 데이터 갯수는 동일해야 하는것이 아닌 의문이 들어 질문남깁니다 ㅠ
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 다름이 아니라 강의에서 회귀 중 MAPE, RMSE, RMSLE 등은 sklearn.metrics에 없다고 따로 외워야 한다고 하셨는데요 사이킷런 홈페이지 들어가봤는데 다 적혀있기는 해서, 혹시 이제는 metrics 통해 그대로 사용하면 되는 게 맞는지 여쭙습니다! 제가 확인한 사이트도 링크 첨부하였습니다. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_log_error.html
안녕하세요, 14.22 강의를 듣다가 함수 포인터는 아니지만 예제 속 변수의 포인터에 관한 의문이 생겨 질문 남깁니다. 1. 해당 예제를 따라하다가 toupper, tolower함수의 사용과 변수들의 저장에 대해 궁금증이 생겨 아래 코드를 작성하고 실행을 시켜 보았는데요, void ToUpper(char* str1) { printf("Address of str(before toupper function operate) : %lld\n", (long long)str1); while (*str1) { *str1 = toupper(*str1); str1++; } printf("Address of str(after toupper function operate) : %lld\n", (long long)str1); } void ToLower(char* str2) { printf("Address of str(before tolower function operate) : %lld\n", (long long)str2); while (*str2) { *str2 = tolower(*str2); str2++; } printf("Address of str(after tolower function operate) : %lld\n", (long long)str2); } int main() { char str[] = "Hello World!"; void (*pf)(char*); pf = &ToUpper; printf("String literal: %lld\n", (long long)("Hello, World!")); printf("Function pointer: %lld\n", (long long)ToUpper); printf("Function pointer, pointer ver: %lld\n", (long long)pf); printf("Variable : %lld\n", (long long)str); printf("\n"); (*pf)(str); printf("\n"); printf("ToUpper ver: %s\n", str); printf("Address of str after function ToUpper Operate: %lld\n", (long long)str); pf = &ToLower; printf("\n"); (*pf)(str); printf("\n"); printf("ToLowerr ver: %s\n", str); printf("Address of str after function ToLower Operate: %lld\n", (long long)str); return 0; } 먼저 main 함수 내에서 str의 주소를 찍어 본 결과 "Variable : 803261380856"라는 주소값이 출력된 걸 볼 수 있고 이를 ToUpper 함수에 넣고 다시 주소를 찍어보니 "Address of str(before toupper function operate) : 803261380856"로, 같은 주소가 출력된 걸 볼 수 있었습니다. (char*로 받아줬으니 당연하겠지만요.) 이후 ToUpper 함수 내에서 toupper 함수가 포함된 while 문이 돌아간 후 다시 주소를 찍어보니 원래 값보다 12가 추가된 803261380868라는 값이 출력된 걸 볼 수 있었고, 이는 while문 내에서 str1++연산이 수행되며 *str의 각 characer를 대문자로 바꿔주는 과정이 있었기 때문에라고 생각했습니다. 의문이 생겼던 부분으로, ToUpper가 실행된 결과가 끝나고 "ToUpper ver: HELLO WORLD!"가 출력된 후, str의 주소를 다시 찍어봤는데 12가 추가된 값이 아닌 원래의 주소값이 출력이 된 걸 볼 수 있었는데요, 처음에는 ToUpper 함수의 매개변수의 데이터 타입이 char*이니, 막연하게 str의 주소도 당연히 바뀐 값이 나올 거라고 생각했었는데 생각해보니 위 경우는 포인터의 참조값을 사용한 것이 아닌 포인터 자체의 값을 연산한 것이니 call by value로 포인터 변수가 사용된 것이며, main 함수의 str과 ToUpper의 매개변수인 str1은 처음에는 가리키는 주소가 같았으나 str1의 경우 함수 내에서 가리키는 값이 증가한 후, 해당 함수가 끝날 때 같이 사라지는 지역변수로서 사용된 것이라는 결론이 나왔습니다. 제가 생각한 과정과 결과가 맞는지 궁금합니다. 2. main 함수에서 str의 타입이 char[]로 지정이 되어 있는데, 이를 char* str로 바꾸니 런타임 에러가 나더라구요. char* str로 문자열에 접근하는 것은 read only인 Text Segment의 주소를 가져온 것인데, ToUpper 함수 내에서 str = toupper( str)에서 값을 바꾸려는 시도 때문에 에러가 나는 것이 맞나요? 감사합니다.
아래와 같이 똑같이 입력했는데 결과값이 아예 다른데 무엇이 문제일까요?ㅠㅠ import pandas as pd df=pd.read_csv("clam.csv") df #데이터분할에서 만들기 train = df.iloc[:210, : ] test=df.iloc[210: , : ] #로지스틱 회귀모델 만들기 #잔차이탈도는 로짓에서 볼수없고 glm에서 볼수있다. from statsmodels.formula.api import glm import statsmodels.api as sm model = glm("gender~ age + length + diameter + height + weight", data=train, familiy=sm.families.Binomial()).fit() print(model.summary())
스케일링도 데이터 프레임별 범위에 따라 fit() 할 프레임을 구분해줘야할까요? train['a'] 컬럼이 1~100 범위이고 test['a'] 컬럼은 1~200 범위라면 B먼저 fit하고 A는 transform 을 해줘야하나요? 아니면 각각 fit_transform 해야할까요? 범주형 컬럼 인코딩의 경우를 생각해보니 문득 위와 같은 상황에서 어떻게 해야하는지 궁금하네요.
설명을 들어서 a=10 static.b = a 니까 static.b++의 출력값은 10이고, 이후 11이 된다고 이해를 했는데, 그러면 그 아래 출력값 a가 10 이면 그대로 똑같이 10이 아니라 왜 st.a는 class Static의 20을 가져오나요? 두번째 출력값은 바로 위 출력값에서 계산된 걸 가져왔는데 네번째 출력값은 왜 가장 위의 클래스 거를 가지고 오는지 개념이 이해가 안됩니다
28분대에 있는 23년 1회 JAVA 문제인데요. 출력값 처음에 Static.b++는 a=10 static.b=a 때문에 출력값 10인 건 이해가 되고, st.b는 왜 0이 아니고, 11인지 이해가 안되고.. 마지막 출력값 st.a은 왜 10이 아니고 20인지 이해가 안되네요. 기출문제부터 따라가기 너무 힘든데 이거 강의를 다시 들어야하나요? 혼자서 문제를 풀면 문제 설명하는 흐름대로 생각이 잘 안나는 것 같아요
질문이 2개인데요... 문제 풀이영상을 보면 sum + (input[a][b]) * di ; input[a][b]에 %10을 넣으면 뭐 때문에 순차적으로 0 , 10, 100, 1000, 00000, 100000 이렇게 되는지 이해가 안되고, 2번째는 di가 1부터 시작을 하고 di*2면 2,4,6,8,10 이렇게 커지는거 아닌가요? 그렇다면 2의2승 2의3승 2의4승 2의5승 이렇게 커지지 않으니까 계산이 안되는 것 같은데 ㅠ.. 좀 어렵네요
안녕하세요! 강의 너무 잘 들었습니다. 덕분에 데이터분석 학습 과정에 대한 로드맵을 설정할 수 있었습니다. 다름 아니라 독학으로 데이터분석 취업하기 파트에 질문이 있어 글 남겼는데요, 책을 통한 학습을 제시해주셨는데 책 대신 강의 (예를들면 인프런의 강의들) 로 교체해도 무방한지 아니면 책으로 하는게 더 좋을지 강의자님의 고견 구하고자 합니다. 저의 백그라운드 및 목적 및 목표 설명드리자면 비전공자로 현재 데이터분석 부트 캠프를 진행중이며 부트캠프 수업 과정과는 별개로 스스로의 커리큘럼을 추천해주신 강의 커리큘럼을 참고해서 진행하려고 합니다. 목적은 일련의 학습과정을 통해 포트폴리오를 작성할 만한 실력을 쌓는 것 이며, 이에 도달하는 과정을 최대 6개월 가능하면 3개월 이내로 줄이는 것이 목표 입니다.
# your code import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p1/members.csv") #1 #print(df.shape) df = df.dropna(subset=['views']) #print(df.shape) #2 df['f3'] = df['f3'].fillna(0) df['f3'] = df['f3'].replace('silver',1) df['f3'] = df['f3'].replace('gold',2) df['f3'] = df['f3'].replace('vip',3) print(int(df['f3'].sum())) 이렇게 작성 후 실행하면 결과가 밑에 처럼 나옵니다. 133 <ipython-input-57-2ecc61ea0b50>:14: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` df['f3'] = df['f3'].replace('vip',3) 문제 3번에서 두번째 점과 관련된 질문입니다. 강의에서 알려주신 넘파이를 꼭 사용해야 하나요? 이전 강의에서 넘파이에 대한 내용이 따로 언급이 없으셔서 혼자 문제 풀어볼 때 넘파이 사용하지 않고 풀어본 것인데.. 깔끔하게 133만 나오지 않아서요ㅜㅜ