인코딩할때 범주형 변수의 train 과 test 고유값의 수가 train < test train != test 위의 경우일 때 인코딩을 진행하면 무조건 에러가 발생하나요? 고유값의 수가 일치하는지 확인하지 않고 바로 인코딩을 진행하려고 하는데 진행하다가 에러가 발생하면 컨캣을 진행하려고 합니다. object 컬럼이 4개이면 4개다 고유값의 수를 확인해야하는거죠?? set () - set() 이런식으로 빼서 컬럼마다 확인해야하는 방법밖에 없는 걸까요?
dir 함수를 사용해서 from statsmodels 뒤에 값들을 찾을 수 있나요? 해도 계속 오류가 나서요 ㅠㅠ from statsmodels.formula.api import ols ols 값을 import 하는 방법이 기억안날까봐 찾을 방법 있으면 알려주심 감사하겠습니다!! logit 모델 사용할 때 object 값 아닌 독립변수 전체를 C () 처리를 하니까 오류가 나던데 전체를 하면 안되는 건가요? 이전에 강의에서 전체를 해도 된다고 했던것 같아서요!!
모델 예측 전에 from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(train, target, test_size=0.2, random_state=0) 검증데이터를 추가 했는데 길이가 맞지 않다는 오류가 났습니다 혹시 이 경우에는 어떻게 해야할까요?
안녕하세요, 선생님 마지막날이라 그런지 다 확인받고 싶네요.. 질문 많이 남겨 죄송합니다. 작업유형2에서 데이터 전처리시 train, test 컬럼은 삭제 가능, test 행 삭제 불가로 알고 있는데요. 아래 케글 문제 전처리시에는 datetime 컬럼을 dt 연산을 통해 year/month/day로 추가하셨더라고요 그럼 train, test 전처리시 컬럼 추가시키는 건 가능한거죠? ㅇ https://www.kaggle.com/code/agileteam/t2-6-bike-regressor P.S 갠적으로 좋은 문제라고 생각드는게 2유형에서 전처리시 datetime 데이터 핸들링, 1유형에서는 str 연산자 활용 나오지 않을까 추측중입니다 ㅎㅎ
import pandas as pd train = pd.read_csv("train.csv") test = pd.read_csv("test.csv") # print(train.shape,test.shape) # print(train.head()) # print(test.head()) # print(train.isnull().sum()) # print(test.isnull().sum()) # print(train.describe(include='object')) # print(test.describe(include='object')) target = train.pop('price') from sklearn.preprocessing import LabelEncoder cols = ['model'] for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) # print(train.head()) train = pd.get_dummies(train) test = pd.get_dummies(test) # from sklearn.preprocessing import MinMaxScaler # cols = ['year','mileage','tax','mpg','engineSize'] # scaler = MinMaxScaler() # train[cols] = scaler.fit_transform(train[cols]) # test[cols] = scaler.transform(test[cols]) # print(train.head()) # from sklearn.model_selection import train_test_split # X_tr,X_val,y_tr,y_val = train_test_split(train,target,test_size=0.2,random_state=2023) # from sklearn.ensemble import RandomForestRegressor # model = RandomForestRegressor(random_state=2023,max_depth=5,n_estimators=200) # model.fit(X_tr,y_tr) # pred = model.predict(X_val) # print(pred) import lightgbm as lgb model = lgb.LGBMRegressor(random_state=2023,max_depth=5,n_estimators=200) model.fit(X_tr,y_tr) pred = model.predict(X_val) from sklearn.metrics import mean_squared_error print(mean_squared_error(y_val,pred)**0.5) pred = model.predict(test) pd.DataFrame({'pred':pred}).to_csv("result.csv",index=False) pd.read_csv("result.csv") 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 model의 unique개수가 19개로 많아서 model만 라벨인코딩한 후 나머지는 원핫인코딩으로 진행했는데 위의 코드처럼 하는게 맞을까요? 수치형에서 minmax사용했을 때, 별 차이가 없으면 범주형 인코딩만 진행해도 될까요? 아니면 범주형은 필수이고 수치형은 선택이니, 굳이 안해봐도 될까요? lightgbm을 사용했을때 값은 나오지만 아래와 같은 오류도 같이 출력됩니다. 무슨 문제인가요? [LightGBM] [Warning] No further splits with positive gain, best gain: -inf learning_rate는 lightgbm에만 쓸 수 있는건가요? 랜덤포레스트에서 사용시 오류가 뜹니다. max_depth는 3~7, n_estimators는 200~800사이로 하는게 맞나요? 실습환경을 보면 데이터가 자동으로 불러와져있는데, 실제 시험에서도 자동으로 불러와져있나요? 아니면, 데이터 저장 위치를 알려주나요? 작업형1,2,3 모두 제출은 여러번 가능하고 마지막으로 제출한 값이 저장되는게 맞나요?
안녕하세요 선생님 랜덤포레스트 사용을 위해 전처리 과정에서 인코딩, 스케일링, 데이터 분리 등 코드를 이미 다 짜둔 상태에서 lightgbm을 추가로 모델링하고 싶은 상황이 올 때 object 컬럼 전처리 한것을 category로 변경해줘야 정상 동작하는 걸까요? 아님 모델링 이전에 해둔 단계는 그대로 두고 lightgbm fit할때 X_tr, y_tr만 넣으면 정상동작 하는걸까요?
import pandas as pd df=pd.read_csv("members.csv") q3=df.quantile(.75) q1=df.quantile(.25) IQR=q3-q1 lower=q1-1.5*IQR upper=q3+1.5*IQR cond1=df['views']<lower cond2=df['views']>upper print(sum(cond1|cond2)) Can only compare identically-labeled Series objects 이런에러가 떠서요 조건으로 설정한후에 문제푸는방법은 안되는건가요? 아니면 sum을 각각 지정안하고 한꺼번에 묶은것도 문제인가요?
n_train = train.select_dtypes(exclude='object').copy() n_test = train.select _dtypes(exclude='object').copy() 보통 민맥스 스케일링 할 때 위처럼 오브젝트와 아닌 것들을 나눈 뒤에 아래 처럼 스케일링을 진행하잖아요. 근데 밑에서 cols 변수에 수치형 데이터만 명시를 하는데 굳이 나눠서 하는 이유가 뭔가요?? 그냥 train[cols] 로 해도 전혀 문제 없는 거 아닌가요? cols = ['컬럼명', '컬럼명', '컬럼명'] from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() n_train[cols] = scaler.fit_trainsform(n_train[cols]) n_test[cols] = scaler.trainsform(n_test[cols])
선생님이 test_id=test.pop('id') 이런식으로 코딩자주 하셨었는데 그 전에 강의에서 들을때는 주의사항에 채점문제때문에 test데이터는 임의로 삭제하면 안된다고 하셨잖아요 test_id=test.pop('id') 이거는 실제 시험장에서 써도 되는건가요? 갑자기 헷갈려서요 ㅠㅠ
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 선생님 문득 공부하가 궁금하여 질문드립니다. 인코딩은 ( 범주형 삭제처리 하고 수치만 쓰기, 원핫인코딩, 라베벨 인코딩) 요 3개중에 제일 평가 좋은것으로 골라서 쓰고 있는데 수치형 스케일링의 경우 (민맥, 로버스트, 스탠다드) 3가지를 함께 적용시켜도되나요? 아니면 1개만 선택하는게 맞을까요~? 감사합니다!!!
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 분류모델을 할 때, train_test_split(~~, stratify = Y)를 쓰는 경우가 있던데 실제 시험에서 stratify = Y를 쓰는 걸 추천하시는지 궁금합니다.
작업형 2유형의 경우, 랜덤 포레스트 모델을 사용하기 전에 범주형 (object, category...)에 해당하는 데이터에 원핫인코딩을 적용하는 것으로 알고 있습니다. 일부 강의에서는 select_dtypes로 해당하는 데이터들을 찾아서 그 부분들만 원핫인코딩을 한 것으로 알고 있는데, 기출에서는 그냥 train이나 test 데이터 통째로 get_dummies 사용하신 것 보고 궁금증이 남아 문의 드립니다. 굳이 범주형, 수치형 구분하지 않고 get_dummies 에 적용해도 될까요? 두 번째 질문으로는,, 작업형 2유형 문제에서 가령 roc_auc_score 를 평가 지표로 삼아라 ~ 따위의 문제가 나오는데 이때 roc말고 f1_score같은 분류 문제에서 사용되는 다른 평가지표를 사용하게 된다면 감점의 요인으로 작용할까요? 두 가지 질문 드리고 싶습니다. 양질의 강의 감사합니다!
1.강의가 많아서 로지스틱 회귀분석 부분을 못 찾겠습니다 어느 부분을 봐야할까요? 2작업형3 예시 문제 해설에서 로지스틱 회귀분석이 '분류'모델이라고 하셨는데 회귀분석에 분류와는 어떻게 다른지 궁금합니다.. 3갑자기 C로 변수를 묶는것도 이해가 안되는데 언제 묶는건지 궁금합니다. .. 분산분석에서만 C로 묶는것인지, 로지스틱에서도 쓰는건지요.