묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
Props로 받아 포스트 데이터 출력하기가 안됩니다.
강의에 나온대로 코드를 작성했는데, PostList.tsx에서 import PostItem에서 PostItem이 빨간줄이에요
-
미해결함수형 프로그래밍과 JavaScript ES6+
병렬프로그래밍
실무에서 web worker는 잘 안쓰나욤?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
AWS typescript 배포 module error 질문 드립니다
강의에서 나온 nodebird를 참고하여 작은 게시판 서비스를 Typescript로 제작하여 AWS ec2에 배포하는 과정에서 import 부분에서 error가 나서 질문들비니다 * error * error. 모듈 부분을 찾을 수 없다는 에러가 검출되고 있습니다 * tsconfig.json * 개발 환경에서는 어떠한 에러도 없었습니다 전에 node-bird를 배포하는 과정에선 에러가 없었는데 이러한 경우에는 어디에서 문제를 찾아볼 수 있을까요..
-
해결됨(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
train,test 분리 MF알고리즘에서 결과가 출력이 안되요 ㅠㅠ
안녕하세요 거친코딩님. 해당 챕터에서 코드를 작성해서 돌려봤는데요~ 마지막에 하셨던 full_prediction과 get_one_prediction은 잘 출력되었는데, result=mf.test()만 출력이 안돼요 ㅠㅠ 코랩에서 체크모양은 떴는데, 결과값 출력이 안나와요.. import os import numpy as np import pandas as pd base_src = 'drive/MyDrive/RecoSys/Data' u_data_src = os.path.join(base_src,'u.data') r_cols = ['user_id','movie_id','rating','timestamp'] ratings = pd.read_csv(u_data_src, sep='\t', names = r_cols, encoding='latin-1') #timestamp 제거 ratings = ratings[['user_id','movie_id','rating']].astype(int) # train set과 test set 분리 from sklearn.utils import shuffle #데이터가 imbalance하면 계층화추출, balance하면 셔플(계층화추출하면, 표본의 대표성을 저해할 수 있기때문에) TRAIN_SIZE = 0.75 #(사용자-영화-평점) ratings = shuffle(ratings,random_state=2021) cutoff = int(TRAIN_SIZE * len(ratings)) ratings_train = ratings.iloc[:cutoff] ratings_test = ratings.iloc[cutoff:] class NEW_MF(): def __init__(self,ratings,hyper_params): self.R = np.array(ratings) #사용자 수(num_users)와 아이템 수 (num_items)를 받아온다. self.num_users,self.num_items = np.shape(self.R) #아래는 MF weight 조절을 위한 하이퍼 파라미터 # K : 잠재요인(Latent Factor)의 수 self.K = hyper_params['K'] # alpha : 학습률 self.alpha = hyper_params['alpha'] # beta : 정규화 계수 self.beta = hyper_params['beta'] # iterations : SGD의 계산을 할 때의 반복 횟수 self.iterations = hyper_params['iterations'] # verbose : SGD의 학습 과정을 중간중간에 출력할 것인지에 대한 여부 self.verbose = hyper_params['verbose'] # 데이터가 연속적이지 않을 때, 인덱스와 맞지 않는 것을 방지하기위해 맵핑해주는 작업 item_id_index = [] index_item_id = [] for i, one_id, in enumerate(ratings): #i:enumerate의 idx, one_id : movie_id item_id_index.append([one_id,i]) index_item_id.append([i,one_id]) self.item_id_index = dict(item_id_index) self.index_item_id = dict(index_item_id) user_id_index = [] index_user_id = [] for i, one_id, in enumerate(ratings.T): user_id_index.append([one_id,i]) index_user_id.append([i,one_id]) self.user_id_index = dict(user_id_index) self.index_user_id = dict(index_user_id) def rmse(self): # self.R에서 평점이 있는(0이 아닌) 요소의 인덱스를 가져온다. xs,ys = self.R.nonzero() # prediction과 error를 담을 리스트 변수 초기화 self.predictions = [] self.errors = [] # 평점이 있는 요소(사용자 x, 아이템 y) 각각에 대해서 아래의 코드를 실행 for x,y in zip(xs,ys): #사용자 x, 아이템 y에 대해서 평점 예측치를 get_prediction()함수를 사용해서 계산 prediction=self.get_prediction(x,y) # 예측값을 예측값 리스트에 추가 self.predictions.append(prediction) # 실제값(R)과 예측값의 차이(errors) 계산해서 오차값 리스트에 추가 self.errors.append(self.R[x,y] - prediction) #예측값 리스트와 오차값 리스트를 numpy array형태로 변환 self.predictions = np.array(self.predictions) self.errors = np.array(self.errors) #error를 활용해서 RMSE 도출 return np.sqrt(np.mean(self.errors**2)) def sgd(self): for i,j,r in self.samples: #사용자 i 아이템 j에 대한 평점 예측치 계산 prediction = self.get_prediction(i,j) # 실제 평점과 비교한 오차 계산 e = (r-prediction) # 사용자 평가 경향 계산 및 업데이트 self.b_u[i] += self.alpha *(e - (self.beta * self.b_u[i])) # 아이템 평가 경향 계산 및 업데이트 self.b_d[j] += self.alpha *(e - (self.beta * self.b_d[j])) # P 행렬 계산 및 업데이트 self.P[i,:] += self.alpha * ((e * self.Q[j,:]) - (self.beta * self.P[i,:])) # Q 행렬 계산 및 업데이트 self.Q[j,:] += self.alpha * ((e * self.P[i,:]) - (self.beta * self.Q[j,:])) def get_prediction(self,i,j):#평점 예측값 구하는 함수 #전체 평점 + 사용자 평가 경향 + 아이템에 대한 평가 경향 + i번쨰 사용자의 요인과 j번째 아이템 요인의 행렬 곱 prediction = self.b + self.b_u[i] + self.b_d[j] + self.P[i,:].dot(self.Q[j,].T) return prediction # Test Set 선정 def set_test(self,ratings_test): test_set = [] for i in range(len(ratings_test)): x = self.user_id_index[ratings_test.iloc[i,0]] #사용자 id y = self.item_id_index[ratings_test.iloc[i,1]] #영화 id z = ratings_test.iloc[i,2] #실제 평점 test_set.append([x,y,z]) self.R[x,y] = 0 #안해주면 전체 데이터에 대한 트레이닝이 이루어짐 self.test_set = test_set return test_set # Test Set RMSE 계산 def test_rmse(self): error = 0 for one_set in self.test_set: predicted = self.get_prediction(one_set[0],one_set[1]) #사용자 ID, 영화 ID error += pow(one_set[2] - predicted,2) return np.sqrt(error/len(self.test_set)) def test(self): self.P = np.random.normal(scale=1./self.K, size=(self.num_users,self.K)) self.Q = np.random.normal(scale=1./self.K, size=(self.num_items,self.K)) self.b_u = np.zeros(self.num_users) self.b_d = np.zeros(self.num_items) self.b = np.mean(self.R[self.R.nonzero()]) #테스트셋에서 0으로 처리하여서 트레이닝 셋만 #트레이닝 셋에 대해서 데이터셋 구성 rows, columns = self.R.nonzero() self.samples = [(i,j,self.R[i,j]) for i,j in zip(rows,columns)] training_process = [] for i in range(self.iterations): np.random.shuffle(self.samples) self.sgd() rmse1 = self.rmse() rmse2 = self.test_rmse() training_process.append((i+1,rmse1,rmse2)) if self.verbose: if (i+1) % 10 == 0 : print('Iteration : %d ; Train RMSE = %.4f ; Test RMSE = %.4f'% (i+1,rmse1,rmse2)) return training_process def get_one_prediction(self,user_id,item_id): return self.get_prediction(self.user_id_index[user_id], self.item_id_index[item_id]) def full_prediction(self): return self.b + self.b_u[:,np.newaxis] + self.b_d[np.newaxis,:] + self.P.dot(self.Q.T) R_temp = ratings.pivot(index='user_id', columns='movie_id', values='rating').fillna(0) hyper_params = { 'K' : 30, 'alpha' : 0.001, 'beta' : 0.02, 'iterations' : 100, 'verbose' : True } mf = NEW_MF(R_temp, hyper_params) test_set = mf.set_test(ratings_test) result = mf.test() 1:1 문의하기를 이용해주세요.
-
미해결함수형 프로그래밍과 JavaScript ES6+
질문있습니다~
const reduce = curry((f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } return go1(acc, function recur(acc) { for (const el of iter) { ////////////////////////////////??????? acc = f(acc, el); console.log(acc); if (acc instanceof Promise) return acc.then((res) => { console.log(res); recur(res); }); } return acc; }); }) for of문을 돌리다 중간에 흐름이 멈추면 강제로 generator return 메서드를 사용해 흐름이 끊기게 되는데, 여기서는 어떻게 acc.then에서 다시 recur(res)를 할 때 멈춘시점의 iter의 값을 기억할 수 있는 걸까요? https://www.inflearn.com/questions/17067 의 내용은 이미 확인한 상태입니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
객체구조에서질문
member oders:list를안하고 회원이주문한 목록을보려는설명에서 이해가잘안가는데 oder : list를 멤버에안하고 단방향으로도조회가가능한가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
유니티+VScode 개발환경 관련 질문입니다.
VScode에서 소스파일을 수정, 저장하면 유니티의 에디터 설정에 따라 유니티 개발 화면으로 돌아올 때 변동사항을 적용해서 게임을 자동으로 컴파일하게 되어있는데, 저의 경우 그 컴파일 시간이 강의자님의 강의에서 보여지는 시간보다 길어서 특별히 따로 설정하신 것이 있는 지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
상속구조 사용시 고려해야 할 사항에 대한 질문
안녕하세요 ! 영한님 최근에 상속구조를 이용하여 프로젝트를 진행해보고있는데 궁금증이 생겨서 질문남기게되었습니다. Item -> Book, Album, Movie를 가지는 상속구조로 되어있고 주문테이블 Item과 연관관계를 가지며 지연로딩으로 설정되어있을경우 주문테이블을 조회할경우 Item 변수는 Item 타입에 프록시 객체가 넘어오는데 해당 Item 타입이 Book 일경우 Book 엔티티에 특정메소드를 호출하여 비지니스로직을 처리해야할경우 이를 캐스팅하려하면 캐스팅 Exception이 발생하게되더라구요. 이에대한 처리방안을 인터넷에서 찾아봤는데 하이버네이트에서 제공하는 API를 통해 프록시객체에서 실제 엔티티를 꺼내거나 Item 클래스가 인터페이스를 상속하여 특정 메소드를 구현하게하여 해당 메소드를 호출하여 비지니스로직을 처리하거나 등에 방법이있더라구요. 근데 생각해보다보니 만약 Book, Album등이 주체적으로 각자에 메소드가 많아지게되어 인터페이스로 제어가 안된다면 도메인적인 관점에서 이건 Item이라는 큰도메인으로 볼수 없으므로 상속구조를 쓰면안되나?? 라는 생각이 들게되더라구요 즉 제가생각할때 상속구조를 적용하려면 공통적인 속성을 공유하며 Book, Album 등이 도메인관점에서 동일한 역활(인터페이스내에 메소드로 비지니스로직 수행이 가능한)을 수행하는 경우에 가장 적합하다라고 판단이되던데 어떻게 생각하시는지 너무 궁금하더라구요 ㅎㅎ 1. Item 프록시 객체를 하위 엔티티 객체로 캐스팅이 가능한지 2. 상속구조에 가장 적합한 케이스가 어떤경우라고 생각하시는지 문의드립니다 !!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키문의
안녕하세요 강사님! 동영상 43초에 memberService.findMembers()만 쳤을때, members라는 List<Member>타입의 객체 자동생성 단축키가 mac과 윈도우기준 각각 어떻게 되는지 알 수 있을가요? 이전 강의에 나온거 같은데 잘 안찾아져서 문의드려봅니다. 구글링해도 키워드가 안맞아서 그런지 잘안나오네요 ㅠㅠ
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
test글씨가 똑같이 아래에서 위로 올라와요
12분에서 글씨가 아래에서 위로 올라오는 것을 방지하기 위해 qna display block 위치를 수정해줘서 똑같이 따라했는데요 바뀌는것없이 똑같이 아래에서 위로 올라옵니다 이 다음 강의 듣다가 저 부분이 제대로 되지 않은것을 확인해서 뒷강의의 내용도 들어가있습니다
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
following follower 질문드립니다
선생님 안녕하세요 항상 좋은 강의 가르쳐주셔서 감사합니다 following follower 관련 햇갈리는 부분이 있어서 가르쳐주시면 감사하겠습니다 아래의 user.js 소스코드에서 following follower 코드를 봐주시면요 소스코드 사진에 보라색 박스와 초록색 박스를 표시했습니다 1번째로 드리고 싶은 질문은, 42, 47행의 보라색 User 가 Followings 테이블 역할을 하고 초록색 User가 Followers 테이블 역할을 한다고 이해해도 되는지 질문드리고 싶습니다 2번째로 드리고 싶은 질문은, 43행의 followingId가 보라색 User(Follower테이블 역할)의 기본키인 id를 참고하는 초록색 User(Followings 테이블 역할)가 가진 외래키인지 질문드리고 싶습니다 3번째로 드리고 싶은 질문은, 48행의 followerId가 초록색 User(Followings 테이블 역할)의 기본키인 id를 참고하는 보라색 User(Follower테이블 역할)가 가진 외래키인지 질문드리고 싶습니다 긴 질문을 읽어주셔서 감사합니다
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
Plugin 네이밍 질문잇습니다
vue.js docs를 읽어보다가 궁금한 점이 생겨서 질문드립니다. https://vuejs.org/guide/reusability/plugins.html 위 사이트에서 plugin 설명을 보는데 네이밍할 때 $_의 접두사를 사용하지 않아서 혹시 vue3로 넘어오면서 권장하지 않는 패턴으로 바뀌었는지 궁금합니다. 감사합니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
vue3 코드 공유
vue3로 진행하면 코드가 달르게 해야되서 코드 공유합니다. main.js ChartPlugin.js 혹시 Best practice가 아니라면 알려주세요! 감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
GUI로 설치하다가 실패하고 Command로 다시 시도하고 있습니다.
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 지금 GUI로 설치하다가 실패하고 Command로 다시 시도하고 있습니다. 이전에 설치하던게 남아서 그런지 계속 오류가 뜹니다. 기존에 설치하던 파일은 다 지웠다고 생각하는데 왜 자꾸 남아있다고 뜨는걸까요 ,,,
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
KMeans 군집화 실습 강의 01과 02가 같은 동영상으로 업로드 된것 같습니다
KMeans 군집화 강의에서 '사이킷런을 이용한 K-Means군집화 실습 01과 02' 동영상이 같은 동영상으로 업로드된것 같은데 한번 확인부탁드립니다!
-
해결됨풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
mutation에서 unshift 관련 에러가 나는데 어떤 문제일까요?
관련해서 검색해보며 찾아봤는데 도저히 짐작가는 곳이 없어서 여쭤보게되었습니다. 강사님의 github코드 보면서 오타 확인도 했는데 제가 임의로 timeStamp라고 쓴 변수를 제외하고는 똑같은 걸 확인했습니다ㅠㅠ 캡쳐를 보면 resolver/message에서 30:19번째가 문제라고 나오는데 여기가 unshift를 사용한 곳입니다. 혹시나 해서 push 를 사용해봤는데 역시 같은 문제가 있었습니다. 그래서 messages에 옵셔널 체이닝으로 messages?.unshift를 사용했을 때 createMessage는 실행이 되지만 db에 변경되지는 않는 것을 확인했습니다. 추가적으로 어떤 부분을 확인하면 좋을까요?
-
미해결HTML,CSS 개발을 위한 핵심 가이드
transition부터 자바스크립트 문법을 따로 사용하시던데 자바스크립트 공부를 추가로 해야하나요??
제가 C언어는 배운적이 있는데 프론트엔드에 흥미가 생겨 html,css는 잘 따라오고 있습니다 그런데 javascript창이 새로 생기면서 문법이 어떻게 돌아가는지 잘모르겠더군요... 그래서 추가로 자바스크립트에 대한 공부가 필요할까요??
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
cluster <-> 외부 통신
안녕하세요 cluster를 외부에서 접근하려하는데요, 궁금한 것들을 질문드립니다. 1) 운영환경에서는 NodePort는 비효율적이라서 LB혹은 인그레스를 사용하는것이 맞을까요? 2) 모든 서비스를 각각 LB 타입으로 사용하기보다는 규모가 크지 않다면 ingress하나로 사용하는 것이 효율적인게 맞을까요? 3) 만약 node ip만 public이고 추가적인 ip를 사용할 수 없는 경우에는 어떤 방식으로 cluster를 외부에 노출시키는 것이 좋을까요?? LB는 metalLB를 사용하고 있습니다. 바쁘시겠지만 답변주시면 감사하겠씁니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문이요
서블릿까지는 잘됐는데 jsp는 눌러도 아무런반응이없네요 파일위치도 잘잡은듯한데 왜 안되는걸까요 그리고 포트번호는 충돌이 일어나서 바꿨어요 혹시 이거떄문일까요?
-
해결됨Flutter 앱 개발 기초
강의 notion page 접근안됨
안녕하세요 강사님 해당 강의의 notion page에 접속시 내용이 빈화면으로 보이는데 특별히 접속권한이 필요한건가요 ? 감사합니다. (아래는 한 예시인데) 현재 링크 주신 모든 notion page 다 내용이 안보이네요.. https://nero-angela.notion.site/Flutter-1-bd4444b5745444e8a777bd543b8529f4 확인부탁드립니다. 감사합니다 .