백엔드
-
지난주에 못한 뉴스 크롤링을 마무리하였다.
-
웹 페이지에 보여줄 키워드 선택을 위해 필요한 코사인 유사도에 대해 공부하고 추천 시스템을 구현해보았다. (https://wikidocs.net/24603)
-
node.js에서 mysql을 사용해보았다. (https://medium.com/wasd/node-js%EC%97%90%EC%84%9C-mysql-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-1-b4b69ce7433f)
코사인 유사도 계산
from numpy import dot
from numpy.linalg import norm
import numpy as np
def cos_sim(A,B):
return dot(A,B)/(norm(A)*norm(B))
doc1 = np.array([0,1,1,1])
doc2 = np.array([1,0,1,1])
doc3 = np.array([2,0,2,2])
print(cos_sim(doc1,doc2))
print(cos_sim(doc1,doc3))
print(cos_sim(doc2,doc3))
추천 시스템 구현
import pandas as pd
data = pd.read_csv(r'C:\Users\USER\Desktop\movies_metadata.csv',low_memory=False)
data = data.head(20000)
# print(data['overview'].isnull().sum())
data['overview'] = data['overview'].fillna('')
# print(data['overview'].isnull().sum())
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(data['overview'])
print(tfidf_matrix.shape)
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
indices = pd.Series(data.index, index=data['title']).drop_duplicates()
print(indices.head())
idx = indices['Father of the Bride Part II']
print(idx)
def get_recommendations(title, cosine_sim=cosine_sim):
idx = indices[title]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:11]
movie_indices = [i[0] for i in sim_scores]
return data['title'].iloc[movie_indices]
print(get_recommendations('The Dark Knight Rises'))
node js에서 mysql 사용하기. 사용에 어려움을 느껴서 mongoDB로 다시 해보기로 했다.
var mysql = require('mysql'); // mysql 모듈 불러오기
var connection = mysql.createConnection({
host: 'localhost', // 호스트 주소
user: 'me', // mysql user
password: 'secret', // mysql password
database: 'my_db' // mysql 데이터베이스
}); // 연결할 때 사용되는 정보를 담고 있음
connection.connect(); // mysql에 연결
// query를 통해 실제 데이터베이스의 값을 다룸
connection.query('SELECT 1 + 1 AS solution',
function (error, results, fields){
if(error) throw error;
// results는 query문을 실행한 결과를 return
// 값의 타입이 배열로 들어가고, column은 JSON 방식
console.log(results); // [ RowDataPacket { solution: 2 } ]
// RowDataPacket ??
console.log('The solution is: ', results[0].solution);
});
connection.end(); // mysql 연결 끊기
- 다음주까지 목표: node.js 복습, mongoDB 사용해보기
프론드엔드
- 하경
javascript + react 강의 반복 복습 진행
+ 자연어 처리 스터디 : NER(개체명 인식), 문장에서 키워드 뽑는 방법 공부 중
[기타 자연어 처리 공부하면서 참고한 사이트]
https://keras.io/ #keras official
다중분류를 위한 손실함수(dataparallel 관해서) 참고 사이트 ↓ https://visdap.blogspot.com/2018/12/pytorch-inputs-for-nncrossentropyloss.html http://www.gisdeveloper.co.kr/?p=8668 : cross_entropy_loss = torch.nn.CrossEntropyLoss() 를 쓰는 것을 권장
pytorch package 정보 https://9bow.github.io/PyTorch-tutorials-kr-0.3.1/beginner/pytorch_with_examples.html https://tutorials.pytorch.kr/beginner/blitz/neural_networks_tutorial.html https://datascienceschool.net/view-notebook/4f3606fd839f4320a4120a56eec1e228/ autograd (텐서의 연산에 대해 자동으로 미분값을 구해주는 기능) https://pytorch.org/docs/stable/autograd.html y.backward() 사용 → 미분값을 자동으로 갱신 https://datascienceschool.net/view-notebook/015e478dc26e4a5c9ef204673b61bcd6/ loss plot https://seongkyun.github.io/others/2019/05/11/pytorch_tensorboard/
- 주혜 딥러닝 스터디 lec01~10
Lec10
input layer-hiddend layer-output layer
layer가 많아질수록 (계산이 곱으로 이루어져 있기 때문에) 오차가 커질 수 있다
-> sigmoid는 값이 1보다 작거나 크기 때문에 곱했을 때 값의 변화가 있다
이를 보완하기 위하여 ReLu 함수를 사용 (마지막에는 출력해야하는 값이 0과 1사이이므로 sigmoid 사용)
overfitting? : training dataset에서는 정확도가 1에 수렴하지만 test dataset에 대해서는 정확도가 급격히 떨어질 때.
overfitting의 solution 중 하나로 dropout : 학습할 때 몇 개의 neuron을 ramdom하게 선택하여 비활성화 *dropout은 학습할 때만 사용한다.
dropout_rate = tf.placeholder(“float”) # 학습에 비활성화할 뉴런의 비율
_L1 = tf.nn.relu(tf.add(tf.matmul(X, W1), B1)
L1 = tf.nn.dropout(_L1, dropout_rate)
sess.run(optimizer, feed_dict={X: batch_xs, Y: batch_ys, dropout_rate: 0.7})
ensemble : 각 trainset을 독립적으로 생각하여 learning model을 구축하고 마지막에 그것을 합치는 방법
'Team Project > 지구별' 카테고리의 다른 글
2020.02.24~2020.03.08 회의록 및 스터디 (0) | 2020.05.20 |
---|---|
2020.01.27~2020.02.09 회의록 및 스터디 (0) | 2020.03.01 |
2020.01.13~2020.01.26 회의록 (0) | 2020.02.18 |
2019.12.30~2020.01.12 회의록 내용 (0) | 2020.01.12 |
20191202 회의록 및 스터디 (0) | 2019.12.22 |
댓글