[TIL] 20.08.19

우주먼지·2020년 8월 19일
0

TIL

목록 보기
24/28
post-thumbnail

추천 시스템

콘텐츠 기반 필터링 : 단어의 유사도를 측정하여 유사한것을 찾아서 추천

가장 기본적으로 코사인 유사도를 사용한다.
두 벡터의 내적을 이용하여 코사인 값을 계산하여 -1~1사이의 값으로 유사도를 추출한다.

from sklearn.feature_extraction.text import TfidfVectorizer
# ngram_range=(1, 2)는 단어를 1개 혹은 2개를 연속으로 보겠다
# 장르를 하나나 두개의 단어로 이루어진 단어로 보고 인덱싱을 진행한다. ex) thrillier, thrillier drama
tfidf_vec = TfidfVectorizer(ngram_range=(1, 2))
tfidf_matrix = tfidf_vec.fit_transform(movies['genres'])

tfdif를 이용하여 단어들을 벡터화해준다.

from sklearn.metrics.pairwise import cosine_similarity

genres_similarity = cosine_similarity(tfidf_matrix, tfidf_matrix)
similar_index = np.argsort(-genres_similarity)

벡터화가 된 단어들의 유사도를 구해서 (단어개수 x 단어개수)의 행렬로 나타내진다.
유사도 행렬을 이용하여 각 단어별로 유사도가 높은 순서로 행렬을 재배치한다.

이를 통해 입력값을 찾아서 유사한 값의 인덱스를 찾아서 그 값을 출력해준다.

그리드 서치

매개변수를 여러값을 조합하여 시도하여 가장 좋은 정확도를 보이는 값을 선택해줌.

from sklearn.svm import SVC
for gamma in [0.001, 0.01, 0.1, 1, 10, 100]:
    for C in [0.001, 0.01, 0.1, 1, 10, 100]:
        # 매개변수의 각 조합에 대해 SVC를 훈련
        svm = SVC(gamma=gamma, C=C)
        svm.fit(X_train, y_train)
        # 검증 세트로 SVC를 평가
        score = svm.score(X_valid, y_valid)
        # 점수가 더 높으면 매개변수와 함께 기록
        if score > best_score:
            best_score = score
            best_parameters = {'C': C, 'gamma': gamma}

svc의 모델에서 파라미터로 쓰이는 gamma, C의 값을 리스트로 주어 그 중 가장 정확도가 높은 조합을 만들어서 best_parameters에 입력된다.

더 좋은 정확도를 내기 위해서는 여러번의 파라미터 변경이 필요하다. 이를 더 편하게 진행할 수 있는 방법으로 많이 쓰이는 방법이다.

오차행렬

  • TN : 예측값을 Negative 값 0으로 예측했고 실제 값은 역시 Negative 값 0
  • FP : 예측값을 Positive 값 1로 예측 했는데 실제 값은 Negative 값 0
  • FN : 예측값을 Negative 값 0으로 예측했는데, 실제 값은 Positive 값 1
  • TP : 예측값을 Positive 값 1로 예측했는데 실제 값 역시 Positive 값 1
from sklearn.metrics import confusion_matrix

confusion_matrix(y_test, pred_lr)

결과값과 예측 모델을 입력하면 오차 행렬의 값을 추출할 수 있다.

MTV pattern of python Django

Model, Templates, Views의 약자로 장고가 웹을 구성하는 틀이다.

templates : views를 통해 전달되는 응답값으로 사용되는 html파일이다.
Model : views를 통해 전달되는 응답값 중 데이터베이스의 데이터를 전달한다.
Views : 요청이 들어온 값을 전달해주는 역할을 한다.

templates안에는 html파일을 생성하고
css파일을 생성하고자 한다면, static폴더를 생성하고 안에 css파일을 생성한다.
이때, html파일에서 header부분에 이 내용을 추가해주어야한다.

{% load static%}
<link rel='stylesheet' type='text/css' href="{% static 'home.css'%}"/>

Model.py의 경우는 데이터 베이스의 역할을 하는 파일이다.

class AiClass(models.Model):
    class_num = models.IntegerField()
    lecturer = models.CharField(max_length=30)
    class_room = models.CharField(max_length=10)
    student_num = models.IntegerField()

원하는 테이블을 클래스의 형태로 선언해준다.

선언후

python manage.py makemigrations

모델에 변화를 서버에게 전달해준다.

python manage.py migrate

실제 테이블을 생성.

생성된 데이터 베이스를 보기 위한 방법으로는 db파일을 열어서 확인하는 방법과
admin을 이용하는 방법이 있다.

python manage.py createsuperuser

관리자 모드를 생성해준다.

admin.py파일에 만든 모델을 등록해준다.

from .model import AClass
admin.site.register(AClass)

모델을 생성해주고, 127.0.0.1:8000/admin으로 들어가면 내가 생성한 테이블을 볼 수 있따.

느낀점

  • 휴일과 프로젝트가 겹쳐서 벨로그를 오랜만에 쓴다.
    짧은 기간의 프로젝트라서 정신없이 준비했다. 제대로 이해한지 모르겠따.
  • AI분야의 새로운 기술들이 매우 많고 빠르게 개발되는 것 같다 내가 이걸 따라가면서 개발자로 살 수 있을지 좀 걱정된다.
  • 해커톤, 프로젝트가 2주밖에 안남았는데 아직 정보를 하나도 안준다. 현재 상황에서 어떻게 진행 될지, 어떻게 준비를 해야할지 하나도 모르니 답답하고 힘들다.
profile
안녕하세요 ㅎㅎ

0개의 댓글