2025/01 11

[hanspell] 'result' 오류 없이 코랩에서 실행하기(2025년 실행 ok)

어플 리뷰 분석 프로젝트를 진행하던 중에 hanspell이라는 네이버 맞춤법 검사기 라이브러리가 있다는 것을 알게 됐다.그러나 최근에 라이브러리 업뎃이 되지 않아 매번 바뀌는 passportKey를 코드로 직접 가져와야 했는데 이번엔 result 오류가 발생했다..  고민하던 와중에 팀원이 오류 해결에 성공했다! 해결 방법은 아래와 같다(코랩에서 실행). 해결 방법코랩에서 아래 순서대로 코드를 실행한다.!pip install git+https://github.com/Seokhyeon-Park/hanspell.git!pip show hanspellpip show hanspell을 한 후 출력된 Location부분을 복붙해 아래 코드의 spell_checker_file_path의 hanspell 앞에 붙인다..

Python/오류 2025.01.27

[ML] SHAP 분석 - 어떤 변수가 중요한가?

SHAP 분석이란?SHAP 분석은 머신러닝 모델의 예측 결과를 해석 가능하게 만드는 데 사용되는 방법으로 게임 이론의 Shapley 값을 기반으로, 각 특성(feature)이 예측 결과에 기여한 정도를 계산한다. 한마디로, 특정 모델에서 어떤 변수가 중요한지를 알려준다.  SHAP은 모델의 종류(예: 랜덤 포레스트, XGBoost, 신경망 등)에 상관없이 사용할 수 있고 모델 내부 구조를 모르더라도 모델의 출력값만으로도 SHAP 값을 계산할 수 있다(블랙박스 모델도 가능).  해석 방법나의 경우에는 신경망을 이용한 분류 모델(ANN)의 변수 중요도를 알기 위해 SHAP 분석을 이용했다. 아래는 Kaggle의 IBM HR Analytics Employee Attrition & Performance 데이터셋..

Python/공부 2025.01.18

[SQL] TO_CHAR(FM) 표기법(숫자 포맷)

FM(Fill Mode)은 SQL TO_CHAR 함수의 옵션 중 하나로 FM을 이용해 숫자를 원하는대로 포맷하거나 공백을 제거할 수 있다. 보통 9와 0을 이용해서 포맷을 하는 것이 일반적인데 9와 0은 각각 다음의 기능을 한다.  9 : 해당 자리에 숫자가 없으면 표기 X0 : 해당 자리에 숫자가 없으면 0으로 표기  이해를 돕기 위해 아래 쿼리를 실행해보면 SELECT TO_CHAR(123, '99999'), TO_CHAR(123, '00000')FROM DUAL; 결과는 아래와 같다.-> 0은 해당 자리에 숫자가 없으면 0으로 채우고 있는 것을 확인 가능   또, SQL에서는 소수점 위의 숫자가 없으면 '.1', '.2' 식으로 앞에 0이 사라져서 출력되는데 이를 수정하기 위해서 FM을 ..

Oracle/공부 2025.01.13

[SQL] SQL의 실행 과정과 옵티마이저(Optimizer)

SELECT ENAME, SAL FROM EMPLOYEE WHERE ENAME = 'SCOTT'; 위의 쿼리를 실행시키면 오라클 내부적으로 크게 다음 세 단계를 처리한다.  1.파싱(Parsing): SQL을 기계어로 변환하는 작업(문법에 이상이 없는지 등을 확인)2.실행(Execute): 옵티마이저가 선택한 실행 계획에 따라 데이터를 DB에서 찾는 과정3.페치(Fetch): DB에서 찾은 결과를 SQL을 수행한 유저 프로세서에 반환  오라클 홈페이지에서 제공하는 그림은 아래와 같다.   실행 과정을 보면 파싱이 끝난 후 Optimization이라는 단계가 있는데 이 Optimization을 옵티마이저(Optimizer)가 수행한다.  옵티마이저(Optimizer)란? SQL을 가장 효율적이고 빠르게..

Oracle/공부 2025.01.11

[SQL] LEVEL을 이용해서 구구단 1단부터 9단까지 출력하기

머릿 속으로 암산을 하다가 퍼뜩 SQL로 구구단을 출력해보고 싶어져 쿼리를 작성해 보았다..!  파이썬에는 for 문이 있지만 SQL에서는 LEVEL을 이용하면 된다.우선 구구단은 기본적으로 A(단) * B(곱할수) 구조 이므로 LEVEL을 두 개 사용했다. # 첫 시도SELECT LEVEL AS 단, num AS 곱할수, LEVEL * num AS 결과FROM (SELECT LEVEL AS num FROM DUAL CONNECT BY LEVEL   처음엔 이렇게 쿼리를 작성하였으나 숫자값이 중복되어 출력되는 현상이 발생했다.LEVEL과 num을 독립적으로 명시해주지 않았기 때문이다!또한 CONNECT BY가 중첩되면서 조합이 중복적으로 생성된다.   1단부터 9단까지 오류 없이..

Oracle/공부 2025.01.07

[app-store-scraper] 한글 이름 어플의 app_id 검색 오류와 원하는 어플의 app_id 정확히 찾는 방법

2025.01.05 - [Python/오류] - [ERROR] app-store-scraper 실행 시 Base - Something went wrong: 'latin-1' codec can't encode characters~ [ERROR] app-store-scraper 실행 시 Base - Something went wrong: 'latin-1' codec can't encode characters~[ERROR] Base - Something went wrong: 'latin-1' codec can't encode characters~한글이 들어간 어플 이름 크롤링 시도 시 에러가 뜨는 현상   app-store-scraperSingle API ☝ App Store Review Scraper 🧹p..

Python/공부 2025.01.06

[ERROR] app-store-scraper 실행 시 Base - Something went wrong: 'latin-1' codec can't encode characters~

[ERROR] Base - Something went wrong: 'latin-1' codec can't encode characters~한글이 들어간 어플 이름 크롤링 시도 시 에러가 뜨는 현상   app-store-scraperSingle API ☝ App Store Review Scraper 🧹pypi.org# 홈페이지에서 가져온 기본 작동 코드from app_store_scraper import AppStorefrom pprint import pprintminecraft = AppStore(country="nz", app_name="앱 이름")minecraft.review(how_many=20)pprint(minecraft.reviews)pprint(minecraft.reviews_count) ..

Python/오류 2025.01.05

[SQL] MAX(COUNT())가 실행되지 않는 이유(집계함수, 윈도우함수)

DENSE_RANK() OVER (ORDER BY COUNT())는 되는데MAX(COUNT())는 안되는 이유 2025.01.03 - [Oracle/공부] - [SQL] FROM 서브쿼리 별칭을 WHERE 서브쿼리에서 참조할 수 없는 이유 [SQL] FROM 서브쿼리 별칭을 WHERE 서브쿼리에서 참조할 수 없는 이유프로그래머스에서 제공하는 SQL 코딩테스트 문제를 풀다가 오류가 발생했다.리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 문제였는데 아래가 오류가 난 쿼리이다. SELECT MEMBER_NAME, REVIEW_TEmaango97.tistory.com 저번 글에서 FROM 절의 서브쿼리 별칭을 WHERE 절의 서브쿼리에서 쓸 수 없는 이유에 대해 다뤘다.같은 쿼리를 작성하다가 DENSE_RA..

Oracle/공부 2025.01.05

[SQL] FROM 서브쿼리 별칭을 WHERE 서브쿼리에서 참조할 수 없는 이유

프로그래머스에서 제공하는 SQL 코딩테스트 문제를 풀다가 오류가 발생했다.리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 문제였는데 아래가 오류가 난 쿼리이다. SELECT MEMBER_NAME, REVIEW_TEXT, TO_CHAR(REVIEW_DATE, 'YYYY-MM-DD') AS REVIEW_DATE FROM MEMBER_PROFILE PJOIN REST_REVIEW R ON P.MEMBER_ID = R.MEMBER_IDJOIN ( SELECT MEMBER_ID, COUNT(*) AS CNT FROM REST_REVIEW GROUP BY MEMBER_ID) A ON R.MEMBER_ID = A.MEMBER_IDWHERE A.CNT = ( SELECT MAX(CNT) ..

Oracle/공부 2025.01.03

[SQL] 다중 행 서브쿼리에서 ANY & ALL 연산자 사용

2025.01.01 - [Oracle/공부] - [SQL] EXISTS와 IN은 어떻게 다를까? [SQL] EXISTS와 IN은 어떻게 다를까?EXISTSVSIN  SQL에서 EXISTS(혹은 NOT EXISTS)와 IN(혹은 NOT IN)은 서브쿼리를 이용해 어떤 조건을 만족하는지(주로 특정 테이블의 데이터가 다른 테이블에도 존재하는지) 확인한다는 점에선 비슷하지만maango97.tistory.com  지난 글에서는 다중 행 Subquery을 처리할 때 사용되는 EXISTS와 IN에 대해서 공부해봤다.이번 글에서는 그 외의 다중 행 연산자인 ANY와 ALL에 대해 알아보겠다.  1. 다중 행 서브쿼리란?하나의 행이 반환되는 단일 행 서브쿼리와 달리 두 개 이상의 행을 반환하는 subquery를 다중 행..

Oracle/공부 2025.01.02