본문 바로가기

전체 글131

SQL lv2 연도별 대장균 크기의 편차 구하기 어렵게 푼건지 lv2 치고는 쿼리의 양도 많고 조금 복잡했다with st as (select year(DIFFERENTIATION_DATE) as year, max(size_of_colony) as year_devfrom ecoli_datagroup by 1)select s.year, max(s.year_dev)-max(c.size_of_colony) as YEAR_DEV, c.idfrom ecoli_data cjoin st s on s.year = year(c.DIFFERENTIATION_DATE)group by 1, 3order by 1 asc, 2 asc즐겨 사용하던 date_format이 아닌 year를 사용해야 했다.이 부분을 제외하면 문제 자체가 괴랄한 느낌은 아니었다.다만 같은 테이블 jo.. 2024. 4. 30.
SQL lv3 물고기 종류 별 대어 찾기 with mf as (select nn.fish_type, nn.fish_name, max(ii.length) as ltfrom fish_info iijoin fish_name_info nn on nn.fish_type = ii.fish_typegroup by 1, 2)select i.id, mf.fish_name, mf.lt as lengthfrom fish_info ileft join mf mf on (i.length = mf.lt and i.fish_type = mf.fish_type)where mf.lt is not nullorder by 1 with절 사용하지 않으면 id와 함께 group by 해야해서 id 별 길이를 출력해버린다.그래서 id를 제외하고 join 시 길이와 이름을 매핑시키기 위.. 2024. 4. 30.
SQL lv4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 문제부터 이해하기 쉽지 않아서 간만에 엄청 오래걸리고 엄청 고민한 문제였다.같이 SQL 스터디 하는 분의 도움을 받아서 겨우 해결했다. 정답코드는 아래와 같다.WITH DIFF AS ( SELECT DISTINCT a.CAR_ID, h.END_DATE, h.START_DATE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h JOIN CAR_RENTAL_COMPANY_CAR a ON a.CAR_ID = h.CAR_ID WHERE END_DATE >= '2022-11-01' AND START_DATE = 500000 AND 30 * (c.DAILY_FEE - c.DAILY_FEE * t.DISCOUNT_RATE * 0.01) 처음에는 DIFF 테.. 2024. 4. 29.
GPT통해서 Metric 컨닝페이퍼 만들기 ROC Curve, Confusion Matrix 계산, 출력 예시코드from sklearn.metrics import roc_curve, auc, confusion_matrix, ConfusionMatrixDisplay# ROC Curvefpr, tpr, thresholds = roc_curve(y_test, y_proba[:, 1], pos_label=1)roc_auc = auc(fpr, tpr)# Confusion Matrixcm = confusion_matrix(y_test, y_pred)disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=iris.target_names)# ROC Curve visplt.figure(figsize=.. 2024. 4. 26.
캐글 Regression with an Abalone Dataset 도전 (3) #이상치 처리train_df.loc[train_df["Height"] > 0.7 , "Height"] = train_medtrain_df.loc[train_df["Height"] == 0 , "Height"] = train_medtest_df.loc[test_df["Height"] > 0.7 , "Height"] = test_medtest_df.loc[test_df["Height"] == 0 , "Height"] = test_med #XGBOOSTxgb_reg = XGBRegressor(n_estimators=100, learning_rate=0.05)xgb_reg.fit(mm_train_df, y)이전의 진행에서 이상치 처리를 drop이 아닌 중앙값으로 대체하고 MinMaxScaler를 통해 정규화 진.. 2024. 4. 26.
캐글 Regression with an Abalone Dataset 도전 (2)(클러스터링 실험) object type 컬럼만 인코딩 진행하고 모델을 돌려서 제출했더니 당연하게도 점수가 매우 낮게 나왔다. 전처리를 진행하는데 heigh, 키가 0인 레코드들이 있었다.날려야하나 채워야하나 고민하다가 최근 프로그래머스 데이터분석 데브코스 과정에서 배운 클러스터링을 한번 써봐야겠다는 생각이 들어서 클러스터링을 시도해 보았다. 우선은 K means 클러스터링을 진행하기 전에 적절한 K값을 찾기 위해 inertia값과 실루엣 계수를 구해보았다.inertia 가 완만하게 줄어들고 실루엣 계수도 상승하는, k=7을 주고 클러스터링을 진행했다.빨간 클러스터가 보이지 않는데 이유는 잘 모르겠다...다만 height가 0인건 일단 날리는게 맞아보이고, 0.4 이상도 이상치로 봐야하나 고민했었는데 1에 근접한 레코드들만.. 2024. 4. 25.
캐글 Regression with an Abalone Dataset 도전 (1) 그간 간단한 이진분류, 다중분류 문제들만 접하다가 처음으로 연속적인 값을 예측해야 하는 문제를 접했다. https://www.kaggle.com/competitions/playground-series-s4e4 Regression with an Abalone Dataset | Kaggle www.kaggle.com캐글 플레이그라운드 문제인데 기존 늘 하던것처럼 tfdf의 랜덤포레스트 모델부터 돌려봤다.손실함수 값도, 정확도도 잘 학습되었다고는 볼 수 없었고, 예측을 출력하는것도 잘 안되었다.예측 데이터의 차원때문에 계속해서 오류가 났는데  문제가 뭐일까 살펴보다가 로그가 기존 분류와는 다르게 위의 캡쳐 처럼 30개의 클래스별로 예측한 확률을 30개의 차원으로 출력을 해버려서 오류가.. 2024. 4. 24.
SQL lv3 카테고리 별 도서 판매량 집계하기 SELECT B.CATEGORY AS CATEGORY, sum(B_S.SALES) AS TOTAL_SALESFROM BOOK BINNER JOIN BOOK_SALES B_S ON B.BOOK_ID = B_S.BOOK_ID where date_format(B_S.SALES_DATE, "%m") = 1GROUP BY 1ORDER BY 1 asc 1월의 판매량을 구하기 위해 where 절에서 date_format사용해서 필터링 진행했다.카테고리별 합계를 내기 위해 group by와 판매량에 sum 사용했다.카테고리 명 기준으로 오름차순 정렬했다. 2024. 4. 24.
SQL lv4 식품분류별 가장 비싼 식품의 정보 조회하기 테이블이 하나여서 select category, max(price), product_namefrom food_productgroup by 1having category in ("과자", "국", "김치", "식용유")order by 2 desc 로 가볍게 group by 하고 조건 걸어서 필터링 했는데 가장 큰 값과 이름이 출력되지 않고왜인지 다른게 출력되어 고생했다. 데이터분석 데브코스 스터디 함께 하고있는 귀인분의 도움을 받아 with절 응용하여 풀었다.원인으로는 price에는 집계함수가 적용되었지만 product_name에는 적용되지 않아서 였다. with a as (SELECT MAX(PRICE) AS MAX_PRICE, CATEGORYFROM FOOD_PRODUC.. 2024. 4. 24.