강의 회귀 실습 1: 자전거 대여(공유) 수요 예측 -02에서 19분 52초 경에 나오는 선형 회귀의 피처별 회귀계수 시각화 부분에서 저 회귀계수 값들이 다르게 나올 수가 있는지, 질문드립니다. github의 주피터노트북 코드 다운로드 받아서 그대로 시행했는데 LinearRegression/Lasso/Ridge 각 회귀에 대한 RMSLE, RMSE, MAE까지는 값이 정확히 동일하게 나오는데 회귀 계수의 값을 보려고 lr_reg.coef_ 부분에서 결과가 다르게 나옵니다. 상식적으로 회귀 모형에서 이런 결과가 나올 수가 없다고 생각되는데 무슨 이유인지 모르겠어서 질문드립니다! 감사합니다
안녕하세요, 선생님. 강의 15분 경에 다음과 같은 코드가 나옵니다만, 저는 분명 동일한 코드를 실행했는데 오류가 떠서 질문드립니다. house_df.fillna(house_df.mean(),inplace = True) TypeError: can only concatenate str (not "int") to str 이 코드가 Null있는 문자형 열까지 포함시켜 처리하기 때문에 오류가 나는 거 같은데, 혹시 원래 정상적으로 실행되는 코드인가요…? 책에 있는 코드도 동일한데 제가 실행시키면 에러가 나서 전 Null 있는 숫자혀여 열에 대해서만 각 열의 평균값으로 결측치를 채워서 실행했습니다. 만약 현재 버젼으로 정상적으로 실행이 되지 않는 코드라면 선생님께서 혹시 이 부분에 대해서만 새로 작성하신 코드를 여쭙고 싶습니다! 방금 확인해보니까 jupyter notebook으로는 잘 실행되는데, vscode에서는 위와 같은 오류가 뜹니다. 혹시 이 오류가 뜨는 이유를 알 수 있을까요?
위 문제와 같이 scanf_s를 연속으로 사용할 때 궁금한 점이 있습니다. 먼저 첫번째 입력으로 1을 입력하면 버퍼에 [1][\n] 이렇게 입력되고 1이 빠져나가면 [\n]이 버퍼에 남게 되는 걸로 이해하고 있습니다. 그렇다면 두번째 입력 때 [\n] [2] [\n] 이렇게 입력이 되는건가요? 또한 만일 엔터가 맨 앞에 있다면 왜 scanf_s를 연속으로 쓸 때는 스킵이 안되는지와 get_s와 같이 쓰면 스킵이 되는지가 궁금합니다..!
널널한 개발자님! 항상 좋은 강의 감사드립니다ㅎㅎ 다름아니라 섹션 9의 문자, 정수 입력과 개행문자 제거 부분에서 풀리지 않는 부분이 있어 이렇게 질문을 올리게 되었습니다. 강의 중 24:28 쯤, "퍼올려도 N이 남는다"라는 부분 이 이해가 잘 가지 않는데요! 제가 이해한 바로는 scanf_s 함수에서 %d\n 의 형태로 데이터를 받기 때문에 입력 버퍼 내부에 개행문자도 함께 삭제됐으므로 다음 개행 문자를 입력받을 때까지 사용자 입력을 계속 요청하는 것으로 알고 있었는데, 엔터를 쳐도 개행문자를 인식했음에도 계속해서 개행문자가 남는 이유 에 대해서 알고 싶습니다! 다시한번 감사드리고, 추운 날씨 몸 건강도 잘 챙기시기를 바라겠습니다. 화이팅입니다!
항상 좋은 수업 감사합니다. 강의자료 관련해서 질문이 있습니다. 강의를 듣다보니 강의자료를 사전에 작성해보고 수업듣고 싶은데 강의자료를 못찾겠습니다ㅠㅠ 이게 저만 못찾는 건지 커리큘럼 옆에 구름모양으로 있다는데 안보이네요. 원래 강의자료가 없는건지 제가 못찾는 건지 궁금합니다. 백문이 불여일타라고 연습해보고 싶어요!!!
강사님 안녕하세요 강사님 강의 덕분에 저 혼자서 페이지도 만들고 nginx 사용해서 서버까지 배포해보았습니다. 다름이 아니라 3일전 까지만 해도 느리긴 했지만 잘 되던 서버가 오늘 서버내의 기능을 사용할려고 하니 502 bad gateway를 내 뱉으면서 멈춰버립니다.(되다가 안되다가 반복함) 그래서 error 로그를 찾아보니 2023/11/01 00:20:22 [error] 10930#10930: *232 upstream prematurely closed connection while reading response header from upstream 라고 뜨네요 3일동안 해봤는데 헛발짓만 했네용.. gpt한테 물어봐도 메모리 리소스, 네트워크 문제 , 응답시간 문제 등 이라곤 하는데 메모리랑 네트워크에는 아무런 문제가 없는거 같습니다. 3일전까지만 해도 잘되던 서버가 안되니까 많이 답답하네요..
16:50을 보면 실수에는 unsigned가 없기 때문에 무조건 부호 비트가 들어간다는 설명이 있습니다. unsigned가 양수를 나타내는 것, signed가 음수를 나타내는 것으로 알고 있습니다. 그렇다면 음수인 1이 부호비트에 들어가야 하는 것 아닌가요? 부호비트에 0이 들어가는 건 1. 2의 보수법 표현 때문 아니면 unsigned int에 대한 자료형이 없을 뿐 unsigned int에 대해 저런 식으로 표기하기 때문 1,2 중 어떤 case인지, 아님 기타의 case 때문인지 궁금합니다.
안녕하세요 수업 중에 4:36 부분에서 궁금한 내용이 있어서 질문드립니다. 위키피디아에서 컴마 연산자를 첫 번째 피연산자를 평가한 후 그 결과를 버린 다음, 두 번째 피연산자를 평가하고 그 결과를 반환하는 이항 연산자라고 정의하는 것을 확인했습니다. https://en.wikipedia.org/wiki/Comma_operator int i, j; i = 1; printf("%d", (i++, j = 3)); // 결과 : 3 그럼 위 코드에서 반환하는 결과값은 (i++, j = 3)의 결과값은 변수 j인가요 아니면 상수 리터럴 3인가요...???
안녕하세요 수업을 듣다가 의문점이 생겨 글을 올립니다. 제가 이해한 바로는 고정너비 정수를 이용하는 이유가 C언어 표준에서는 자료형마다 최소 기준만을 설정해놓았기 때문에, 만약 시스템(컴파일러 등등)이 달라진다면 int 나 char와 같은 자료형이 차지하는 메모리도 달라질 수 있기 때문에, 이식성을 높이기 위해서int32_t와 같은 자료형을 사용한다는 것입니다. 하지만 stdint.h를 보면 typedef int int32_t; 처럼 int의 별칭을 int32_t로 정하고 있습니다. 이러한 상황에서는 int를 32bit로 사용하는 시스템에서는 int32_t가 32bit를 사용하겠지만, 만약에 int를 64bit로 사용하는 시스템이 있다고 가정을 한다면(C 표준은 bit의 최소기준만 설정해놓았기 때문), int32_t는 int의 별칭(alias)이기 때문에 결국은 int32_t도 64bit를 사용하는 것 아닌가요? 이렇게 된다면 int32_t는 더 이상 고정되어있지 않고 시스템이 바뀔 때마다 달라지는 것 아닌가요? 궁금합니다..
왼쪽 빨간 박스는 "메모리 주소", 오른쪽 노란색 박스는 "Data" 메모리 주소는 64bit(8byte) CPU 체계이므로 4bit씩 16개 묶음으로 표현했고, 각 행마다 있는 메모리 주소에 들어있는 data 즉, 값이 오른쪽에 있는 거구요. 그 오른쪽에 있는 데이터가 16진수(8bit)로 16개가 나열돼 있습니다. 그럼 총 128bit = 16 byte 여기서 이해가 안 됩니다. ㅠㅠ 64bit 메모리 주소는 4bit * 16 = 64(=8byte) 각 메모리 주소의 데이터는 8bit(1byte) * 16 = 128(=16byte) 16개로 나열돼 있는 건 동일한데 왜 bit 수가 다른 거죠? 그리고 데이터에 16진수로 16개 끊은 게 어떤 의미일까요? 16진수 1개씩 끊어서 총 16개를 각각 하나의 의미로 파악한 후, 전체를 하나의 데이터로 봐야 하는 건가요? 64bit 메모리 주소의 데이터는 128bit이다. 이렇게 그냥 암기해야 하나요?
int main() { char* buffer=NULL; fgets(buffer, 10, stdin); printf("%s", buffer); return 0; } int main() { char buffer[10]; fgets(buffer, 10, stdin); printf("%s", buffer); return 0; } 밑에 코드는 출력까지 문제 없이 되는데 위에 코드는 출력이 되지 않습니다. 왜 이런 현상이 발생하는지 알고 싶습니다.
당장은 돈이 딸려 넓고얕게 공부하는 컴퓨터구조 강의를 구입하지는 못 한 학생입니다. 챗gpt를 이용해서 모르는 부분을 채워나가고 있었으나, 그래도 제대로 이해가 안 되는 부분을 채워가고싶어 질문 드립니다. 일단 제가 알고 있는 전제부터 깔고 가겠습니다. 1.모든 메모리 공간은 하나당 1바이트의 크기를 가지고있는걸로 알고 있습니다. 그리고 해당하는 1바이트의 메모리 공간마다 주소를 갖고있는 걸로 알고있습니다. 2. 64비트 아키텍쳐 cpu는 주로 8바이트 단위로 메모리 주소를 처리하는 걸로 알고 있습니다. 그러나 1바이트 단위로도 메모리를 처리할 수 있는 걸로 알고 있습니다. 질문 내용- 1. 일단 위에 알고있는 내용이 사실인지 궁금합니다. 2. 변수로 지정할 수 있는 메모리 최소 크기가 1바이트인 이유가 위와같은 이유 때문인가요? 그리고 최대크기도 8바이트인걸로 아는데 위와같은 이유때문인가요? 3. 머신코드 == 어셈블리어 인가요? 아니면 머신코드는 원래 이진수 코드만을 의미하는건데 이제는 어셈블리어를 사람들이 쓰지 않으니깐 머신코드라고 통합해서 지칭하는건가요? 영상을 다시 봐도 이해가 잘 안가네요.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { // TO DO : q가 입력될 때까지의 입력받은 모든 정수 합 출력 // 1. 준비 int input = 0; // 입력을 저장할 변수 int sum = 0; // 합계를 저장할 변수 int status = 0; // scanf의 반환값(입력값의 갯수)을 저장할 변수 // 2. 입력 printf("Enter an integer (q to quit) : "); status = scanf("%d", &input); // scanf()의 동작 // 입력받은 값이 형식 지정자의 형식과 일치할 경우 입력으로 취급하여 입력값의 갯수 반환 // 입력받은 값이 형식 지정자의 형식과 일치하지 않을 경우 입력으로 취급하지 않으며 0을 반환 // * 성공적으로 스캔된 입력의 갯수 확인용 printf("%d\n", status); // 3. 반복 while (status == 1) { // scanf()의 반환값이 1일 때만 반복 // 현재 루프에 대한 처리 sum = sum + input; // 다음 루프 printf("Enter next integer (q to quit) : "); status = scanf("%d", &input); } // 4. 출력 printf("SUM = %d\n", sum); }; 1 2를 입력하니 "Enter next integer (q to quit) : " 문장이 2개 출력되었지만 1 2를 모두 입력으로 인식했는지 바로 sum을 출력했을 때 3이 출력됬습니다. 다음으로 1 2 3 4 5를 입력하니 "Enter next integer (q to quit) : " 문장이 5개 출력되었지만 sum을 출력해보니 10이 출력됬습니다. 저는 scanf의 형식 지정자와 값을 저장할 변수를 하나만 지정 했는데 왜 5개 입력에 대해서 5번 루프를 실행하고 sum의 값이 정상적으로 출력되었는지 잘 이해가 안되서 질문 드립니다.. 그리고 scanf()는 입력한 값의 형식이 형식 지정자의 형식과 일치할 경우 스캔에 성공한 입력의 갯수를 반환한다고 배웠는데 중간에 scanf의 반환값을 printf()해서 성공적으로 스캔된 입력의 갯수 를 확인해 봤을 때 형식에 맞는 변수를 여러 개 입력해도 1이 출력 되던데 이유가 뭘까요,,??
double을 float로 변환할 때 float의 가수부가 저장할 수 있는 23비트를 초과하면 23비트까지 저장하고 초과한 부분은 모두 절삭된다고 하는데 맞는건가요?? 절삭이 되면 항상 값이 줄어야 하는데 아래 코드로 해보니 결과가 좀 다르게 나와서요.. #include <stdio.h> int main() { double d1 = 3.1415928; float f1 = d1; printf("%.7f\n", d1); printf("%.7f\n", f1); double d2 = 3.1415929; float f2 = d2; printf("%.7f\n", d2); printf(".7f\n", f2); }; double형 3.1415928를 float로 변환하면 3.1415927로 값이 줄어서 나오는데 double형 3.1415928를 float로 변환하면 3.1415930으로 값이 증가해서 나옵니다.. 왜 이렇게 나오는지 알 수 있을까요?? 3.1415928≈11. 00100100001111110110101 010000010이며 이 중 가수부로 저장되는 비트는 00100100001111110110101 이고 나머지 010000010는 버려진다는 것과 3.1415929≈11. 00100100001111110110101 010000011이며 이 중 가수부로 저장되는 비트는 00100100001111110110101 이고 나머지 010000011는 버려진다는 것인데 버려지는 비트를 제외하고 저장되는 값은 11. 00100100001111110110101 로 똑같은데 왜 변환된 값은 3.1415927과 3.1415930인지 잘 모르겠습니다.