본문 바로가기
반응형

데이터 분석25

개인화 추천 알고리즘 2 : FP-Growth FP-Growth 왜 나왔을까? 이전 포스팅에서 Apriori 알고리즘에 대해 알아보았다. Apriori의 가장 큰 단점 아이템셋의 수가 증가할 수록 메모리를 많이 먹고 속도가 느려진 다는 것이다. FP Tree도 기본적으로 연관분석의 하나이며 Apriori와의 차이는 FP-Tree를 생성한 후에 최소 지지도 이상의 패턴만을 추출한다는 것이다. FP tree는 아이템 별로 노드를 추가하면서 트리를 생성하는 과정이다. FP Tree를 생성하는 방법은 아래 블로그에 잘 설명되어 있다. (너무 유익한 내용 감사드립니다. ㅠ) https://process-mining.tistory.com/92 FP-Growth 사례 원핫 인코딩을 통해 데이터프레임을 생성하는 절차는 Apriori 와 동일하다. import ml.. 2022. 2. 6.
개인화 추천 알고리즘 1 : Apriori 알고리즘 우리 안의 수많은 추천 시스템 추천 시스템은 사용자, 구매자에게 상품을 제안하는 방법론을 말한다. 이것은 쇼핑몰에서 어떤 상품을 추천할 것인지 음악 어플에서 어떤 음악을 추천할 것인지 뉴스피드에서 어떤 뉴스를 추천할 것인지 등 광범위하게 쓰이고 있다. 홈페이지나 어플 이용자들은 어느 상품에서 몇 분동안 머물렀는지, 어떤 상품을 클릭했는지, 실제로 구매로 이어졌는지에 대한 수많은 로그를 남기고 기업들은 이 로그들을 중요한 데이터 자원으로 추천 시스템에 활용한다. 쿠팡에서 내가 특정상품을 보면 그 패턴을 토대로 추천 상품 리스트를 뿌려주는 것을 쉽게 볼 수 있는데 이것이 바로 개인화 추천 알고리즘이다. 최근에 인테리어 때문에 식탁보를 구경한 적 있는데 이 로그 기록을 바탕으로 유사성이 높은 식탁보를 계속 뿌.. 2022. 2. 6.
파이썬으로 코스피 코스닥 상장기업 재무정보 크롤링하기 코스피 코스닥 상장기업 추정배당금 2022.01.18 - [투자/배당주투자] - 2022년 예상 배당금 (코스피, 코스닥 전체 종목) 표준화된 재무정보 구하기 최근에 dart_fss 모듈을 사용해서 금융감독원 DART 전자공시시스템의 OPEN API를 활용하여 크롤링하는 작업을 시도해보았다. 데이터로 활용하기 어려운 부분은 표준화가 되어 있지 않다는 점이다. (회사마다 특성이 다르니까 재무제표 항목도 약간씩 다르다.) 그래서 어떻게 하면 표준화된 재무정보를 얻을 수 있는지 찾아보다가 어떤 능력자 분께서 FNguide를 아주 간단한 코드로 크롤링하시는 것을 참고할 수 있었다. https://wikidocs.net/6660 2) 웹 페이지 크롤링 이번 절에서는 웹 페이지의 데이터 중에서 원하는 값만 가져오는.. 2022. 1. 23.
Dart_fss 모듈을 활용한 배당금 예측 (그리고 실패) 내 배당금은 얼마일까? 배당금 시즌이 다가오고 있다. 배당락일은 12월 말이기 때문에 이때 까지 보유한 사람들은 내가 배당금을 받을 주주 명부에는 들어가 있다는 것은 알고 있다. 하지만 배당금을 얼마나 받을지는 2월이나 되어야 회사에서 공시하고 있다. 그래서 사람들은 2개월 동안 내가 배당금을 얼마나 많이 받을지 궁금해 한다. (이것은 내 블로그의 배당금 관련 트래픽에서도 확인된다.) 그래서 나는 이런 생각을 해보았다. 배당금 지급액 / 당기순이익 (=주당배당금 DPS /주당순이익 EPS)을 배당성향이라고 하며 회사가 번 돈 대비 얼마나 배당을 하는지를 나타내는 지표이다. 물론 정확하지는 않지만 1월에 잠정 실적이 발표되면 이 잠정 당기순이익과 전년도 배당성향을 곱하여 배당금을 추측해보지 않을까 생각을 .. 2022. 1. 17.
직방에서 특정 키워드로 크롤링하기 (파티룸 찾기) 직방 어플의 UI는 반드시 어떤 지역명을 검색해야 매물을 볼 수 있는 단점이 있다. 예를 들면 "나는 전세보증금 1000만원 이하 월세 80만원 이하인 서울 서초구의 빌라를 찾고 싶다." 라고 생각할 때는 필터를 이용해 원하는 매물들을 뽑을 수 있다. 그러나 "나는 전세보증금 2000만원 이하로 복층인 오피스텔을 찾고 싶다."라고 할 때 '복층' 이라는 필터를 직방에서 따로 제공하지 않기 때문에 일일이 오피스텔을 보면서 복층이 있는지 찾아봐야 한다. 요즘 파티룸에 대해 관심이 많은데 파티룸과 관련된 매물들만 따로 보고 싶었지만 모든 매물들을 일일이 눌러서 파티룸에 적합한지 확인하는게 너무 불편했다. 그렇다고 검색창에 파티룸을 검색할 수도 없는 상황이다. 그래서 오늘은 직방 API 를 이용해 제목(titl.. 2021. 12. 11.
직방에서 상가 크롤링하기 (B급 코딩) 조건에 맞는 상가를 찾고 싶다! 최근에 상가 물건을 좀 알아보고 있는데 매매 목적은 아니고 임차인으로 들어가려고 알아보고 있다. 직방에서 내가 원하는 조건을 필터링으로 넣으면 참 좋은데 UX 구성 자체가 지도를 중심으로 되어있다. 나같은 경우는 관악구에서 권리금이 0원이고 월세가 100만원 이하인 물건들을 찾고 싶은데 UX 에서 이 조건을 필터링 할 수가 없어서 크롤링을 해보기 로 했다! 크롬에서 네트워크를 뒤지다 보니까 "https://apis.zigbang.com/v2/store/article/stores/상가번호" 형식으로 웹에다가 Request 를 던져주면 Json 형식으로 원하는 값을 던져주는 것을 알 수 있다. requests 모듈로 json 파일형식 크롤링 하기 뷰티풀 수프에서 크롤링 해보면.. 2021. 10. 12.
[파이썬] 데이터 중복제거, 매핑, 치환 하기 데이터 분석에 중복된 값이 존재할 수 있다. 이러한 경우 중복된 데이터를 핸들링할 수 있는 방법이 필요하다. 1. 데이터 중복 제거하기 데이터프레임.drop_duplicates([열이름1],[열이름2],[열이름3]...) data = pd.DataFrame({'k1':['banana','tomato']*4, 'k2':[1,1,2,3,3,5,5,5]}) # 임의의 데이터 프레임을 생성 data.drop_duplicates() # 중복 데이터가 있는 로우 삭제 7번 데이터가 k1 : tomato, k2 ; 5 인 경우가 있어 삭제되었다. data['v1'] = range(8) # v1 열 추가 data.drop_duplicates(['k1']) # k1 컬럼을 기반으로 중복데이터 삭제 data.drop_du.. 2021. 8. 2.
[파이썬] 데이터 결측치 처리 (fillna, dropna 메서드) 데이터 분석과정에서 결측치는 항상 존재한다. 결측치는 처리하는 방법은 결측치 자리에 특정값을 채우거나, 또는 결측치를 제거하는 것이다. 결측치를 그냥 제거해도 되지 않나라고 생각할 수도 있지만 실제로 결측치가 의미있는 데이터인 경우 데이터 전처리 과정에서 성격이 왜곡될 수 있다. 1. dropna 메서드 데이터프레임.dropna(how='all') - 디폴트값 : NA가 하나라도 있는 로우는 삭제 - how = 'all' 옵션 : 모든 컬럼이 NA인 로우만 제외시킴) import numpy as np import pandas as pd data = pd.DataFrame([[1., 6.5, 3.],[1.,NA,NA],[NA,NA,NA],[NA,6.5,3.]]) data NA 결측치를 채운 임의의 데이터 .. 2021. 8. 1.
[데이터 분석] 2021년 6월 서울아파트 갭투자 리스트 2021년 6월 실거래 및 전세계약 데이터를 추출하여 서울 아파트 갭투자 리스트를 추출해보았다. 'total' 시트의 맨 마지막 열을 보면 갭투자예상금액을 확인할 수 있다. 이 데이터는 실거래 가격을 기준으로 [매매가격 평균 - 전세가격 평균]을 구한 것이다. 따라서 매매거래나 전세거래가 없는 아파트에 대해서는 데이터가 존재하지 않을 수도 있고, 일부 outlier 데이터들 때문에 데이터가 다소 왜곡되어 있을 수 있으므로 참고만 하시기를 바란다. 나는 최소 20 평대 이상의 아파트 매매를 알아보려고 했으므로 전용면적에 60 제곱미터 이상의 물건들을 걸어보았다. 아파트 값이 비싼 건 맞지만 여전히 도봉구, 노원구, 은평구, 중랑구, 성북구, 관악구와 같이 프라임 입지가 아닌 곳들은 여전히 적은 돈으로도 갭.. 2021. 7. 25.
[데이터 분석] 로지스틱 회귀분석 (Logistic Regression) 로지스틱 회귀분석 : 모 아니면 도 로지스틱 회귀는 선형 회귀 방식을 '분류'에 적용한 알고리즘이다. 쉽게 말하면 선형회귀 분석에서 Target 으로 잡는 데이터가 모 아니면 도라고 생각하면 이해하기 편하다. 예를 들면 종양 데이터를 근거로 종양인지(Y=1) 아닌지(N=0)를 판단하는 문제에 적용할 수 있다. 로지스틱 회귀는 시그모이드 함수를 기반으로 하는데 시그모이드 함수는 X 값이 아무리 커지거나 작아져도 1이나 0 값 만을 반환하는 함수이다. 로지스틱 회귀는 이처럼 선형 회귀 방식을 기반으로 하되 시그모이드 함수를 이용하여 '분류'를 수행하는 회귀이다. 지도학습의 대장인 '회귀'와 '분류'가 합쳐진 로직이다. 하지만 잊지 말자 로지스틱 회귀에서 '회귀'는 도구이고 '분류'가 목적이라는 점을! [St.. 2021. 7. 19.
반응형