본문 바로가기
728x90
반응형

전체 글190

사용자간 유사도를 활용한 협업필터링 추천 예제 지난 장에서 가장 기본적인 예제를 통해서 사용자 간의 유사도를 구해보는 작업을 하였다. 이번 장에서는 사용자들 간의 유사도를 바탕으로 모든 항목에 대해서 예측값을 계산하고, 높은 예측 값을 갖는 상위 N개의 추천 목록을 생성하는 작업을 해보도록한다. KNN 가중치 예측 기법 예제 풀이 방법 1. 대상과 가장 유사도가 높은 k의 대상의 영화 평점과 유사도를 통해 추측평점(유사도 x (타인의)영화평점)을 구한다. 2. 추측평점의 총합을 구한다. 3. (추측평점 총합계)/(유사도 합계) 계산을 통해 예상평점을 뽑아낼 수 있다. 협업 필터링의 구성 1. 메모리 기반 1.1 사용자 기반 2019. 11. 24.
사용자간 유사도 계산 1. 가장 높은 평점을 갖는 아이템을 추천하는 가장 단순한 방법을 연습합니다. ratings={ 'Dave':{'달콤한인생':5,'범죄도시':3,'샤인':3}, 'David':{'달콤한인생':5,'범죄도시':1,'샤인':4}, 'Alex':{'달콤한인생':0,'범죄도시':4,'샤인':5}, 'Andy':{'달콤한인생':2,'범죄도시':1,'샤인':5} } movies_dict = dict() for rating in ratings: for movie in ratings[rating].keys(): if movie not in movies_dict: movies_dict[movie] = ratings[rating][movie] else: movies_dict[movie] = (movies_dict[movi.. 2019. 11. 23.
python 필기/노트 공부하다가 몰랐거나 유용한 것들에 대한 필기 ! 딕셔너리(dictionary) 딕셔너리는 다음과 같이 선언하고 key값과 value값의 형태로 만들어주는 자료구조이다. a = dict() a['market'] = {'fruit':"apple", 'drink':'beer'} a.get('market').get('fruit') # 결과: "apple" update: 딕셔너리와 딕셔너리를 합쳐서 하나의 딕셔너리를 만들 때 사용하는 함수 d = {1: "one", 2: "three"} d1 = {2: "two"} # updates the value of key 2 d.update(d1) print(d) d1 = {3: "three"} # adds element with key 3 d.update(d1) prin.. 2019. 11. 23.
추천시스템 개념 위키피디아에서의 추천시스템; 정보 필터링(Information Filtering)기술의 일종으로, 특정 사용자가 관심을 가질만한 정보(영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)를 추천하는 것이다. 추천시스템의 종류에는 현재 가장 많이 사용하는 협업필터링(Collaborative filtering) 기법이 있고, 이외에 콘텐츠 기반 필터링(Content-based filtering), 하이브리드 추천시스템(Hybrid recommender systems) 등이 있다. 1. Collaborative filtering: 협업 필터링이라고 불리는 이 필터링 기법은 우선 위키피디아의 정의를 보면 사용자의 행동, 활동 또는 선호도에 대한 많은 정보를 분석하고 모으고 다른 사용자와의 비슷함에 기초를 두고 사.. 2019. 11. 23.
코사인 유사도를 활용한 유사 문서 검색 저번에 크롤링한 데이터를 그대로 사용하여 코사인 유사도를 구해보도록 하겠습니다. 우선 저번에 사용한 코드 그대로 사용하여 데이터를 수집해와서 전처리까지 동일하게 진행해주었습니다.(전처리에 기자이름을 제거하는 것을 추가하였습니다. 기자 이름때문에 유사성이 전체적으로 높게 측정되기 때문입니다.) import requests import re from bs4 import BeautifulSoup url="https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=" category=[100,101,102,103,104] #정치, 경제, 사회, 생활/문화 news_url_list=[] headline=[] for i in category: home = url+str.. 2019. 11. 22.
뉴스 기사 분류 크롤링을 하여 뉴스 기사를 수집하였다면 이제 그 뉴스를 카테고리별로 분류하는 작업을 해봅니다. 각 웹페이지에 등장하는 헤드라인 뉴스 기사 제목(url주소)을 카테고리별로 모두 수집합니다 웹페이지의 뒷부분의 숫자를 기준으로 보통 페이지 수를 매기곤 합니다. 사이트마다 변형이 불규칙인 것도 있으니 규칙성을 잘 보셔야합니다. 규칙없이 이뤄진 경우에는 for문을 적용하기 힘들수도 있습니다. 카테고리 별 네이버 뉴스 웹페이지 주소 입니다. 네이버 뉴스는 다행히도 규칙적인 숫자로 웹페이지 주소가 할당되어 있었습니다. import requests from bs4 import BeautifulSoup url="https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=" .. 2019. 11. 22.
크롤링 4 이 장에서는 pandas 를 이용하여 크롤링을 합니다. 다음과 같은 어렵지 않은 코드로 웹페이지의 주식 정보를 가져오게 됩니다. import pandas as pd id_list = ['035420','066570'] for id_ in id_list: base_url = "http://finance.naver.com/item/main.nhn?code=" target_url = base_url + id_ data = pd.read_html(target_url, encoding='cp949') print(target_url) print(data[2]) -> id_list속에 숫자는 웹 주소 가장 뒤의 숫자입니다. 이부분을 고쳐서 원하는 웹페이지들을 설정할 수 있겠습니다. 2019. 11. 21.
크롤링 3 이 장에서는 selenium과 phantomJS를 이용하여 네이버에 로그인을 하는 방법을 배웁니다. 이 전의 노트와 같이 라이브러리를 불러옵니다. import requests from bs4 import BeautifulSoup from selenium import webdriver import time js_path = r'C:\\Users\\user\phantomjs-2.1.1-windows\\bin\\phantomjs' driver = webdriver.PhantomJS(executable_path=js_path) 다음 url은 네이버 로그인 웹페이지 입니다. 그리고 driver.get()을 실행합니다. naver_url = "https://nid.naver.com/nidlogin.login" dr.. 2019. 11. 21.
크롤링 2 이번 페이지에서는 selenium 과 phantom js 에 대해서 추가로 알아보도록 한다. 이 전 페이지에서 3번에 해당하는 방법을 배울 수 있다. selenium 은 javascript 등으로 웹이 동적으로 정보를 받아오는 것을 크롤링 할 수 없을때 코드를 통해 브라우저를 작동하게 해준다. phantom js를 통해 가상으로 웹을 작동할 수 있다. import requests from bs4 import BeautifulSoup from selenium import webdriver phantomjs 를 다운로드하고, 압출을 풀고 phantomjs.exe 파일이 있는 곳의 경로를 지정해준다. js_path = r'C:\Users\rok80\class_data\phantomjs-2.1.1-windows.. 2019. 11. 21.
728x90
반응형