콘텐츠 기반 필터링 : 단어의 유사도를 측정하여 유사한것을 찾아서 추천
가장 기본적으로 코사인 유사도를 사용한다.
두 벡터의 내적을 이용하여 코사인 값을 계산하여 -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에 입력된다.
더 좋은 정확도를 내기 위해서는 여러번의 파라미터 변경이 필요하다. 이를 더 편하게 진행할 수 있는 방법으로 많이 쓰이는 방법이다.
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, pred_lr)
결과값과 예측 모델을 입력하면 오차 행렬의 값을 추출할 수 있다.
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으로 들어가면 내가 생성한 테이블을 볼 수 있따.