묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
RandomForestClassifier 에 관련하여
여러 가지 분석 모델이 존재하는데(대표적으로 랜덤포레스트 그 외에도 xgboost, 디시젼트리, 로비스틱 회귀 등)경우에 따라 다르겠지만 랜덤포레스트만 사용해도 될까요?(하이퍼파라미터 튜닝은 한다는 가정하에) 물론 여러 방법 해보면 정확도 높은 걸로 할 수 있어서 좋겠지만, 외우는게 부담인 것 같아서요 그리고 전처리 후에 라벨인코딩 vs 원핫인코딩 등 여러 방법이 있는데어떤 상황에선 뭐로 하는게 좋다 이런 공식은 따로 없는 것일까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
4회 기출 유형(작업형2) 질문
안녕하세요 강사님 아래와 같이 코드를 짜보고 강의를 들었는데저는 train_test_split을 썼으므로 강의에서와 같이 target = train.pop('Segmentation') 과정이 필요없는게 맞나요?아래는 제가 짠 코드이고 leaderboard 점수 0.30927입니다. 이정도 점수면 충분할까요?제가 아래 코드에 from sklearn.metrics import roc_auc_score print(roc_auc_score(y_val, pred) 를 추가할시 아래와 같은 에러코드가 납니다. 자체적으로 평가점수를 보고싶어서 추가해보았는데 왜 이런문제가 생기는걸까요? --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /tmp/ipykernel_27/2182156644.py in <module> 28 29 from sklearn.metrics import roc_auc_score ---> 30 print(roc_auc_score(y_val, pred)) 31 32 /opt/conda/lib/python3.7/site-packages/sklearn/metrics/_ranking.py in roc_auc_score(y_true, y_score, average, sample_weight, max_fpr, multi_class, labels) 558 ) 559 if multi_class == "raise": --> 560 raise ValueError("multi_class must be in ('ovo', 'ovr')") 561 return _multiclass_roc_auc_score( 562 y_true, y_score, labels, multi_class, average, sample_weight ValueError: multi_class must be in ('ovo', 'ovr')import pandas as pd train = pd.read_csv("../input/big-data-analytics-certification-kr-2022/train.csv") test = pd.read_csv("../input/big-data-analytics-certification-kr-2022/test.csv") cols = ['Gender', 'Ever_Married', 'Graduated', 'Profession', 'Spending_Score', 'Var_1'] from sklearn.preprocessing import LabelEncoder for col in cols: le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) train = train.drop('ID', axis =1) test_id = test.pop('ID') from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split( train.drop(['Segmentation'],axis =1), train['Segmentation'], test_size = 0.2, random_state = 2023) from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_tr, y_tr) pred = model.predict(X_val) pred = model.predict(test) submit = pd.DataFrame({ 'ID': test_id, 'Segmentation' : pred }) submit.to_csv("submission.csv", index = False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3회 기출유형(작업형2) 수치형 데이터와 범주형 데이터 분리 관련 질문입니다.
안녕하세요~ 선생님~드디어 강의를 다 듣고 시험 준비를 하기 위해 기출문제와 강의 내용을 다시 한 번 반복하고 있습니다.그러던 중에 3회 기출유형(작업형2)에서 수치형 데이터와 범주형 데이터 분리를 위해 select_dtypes() 요 메소드를 쓰고 나서 다시 copy()를 하는 것에 대해 궁금해서 여쭙게 되었습니다.copy() 메소드를 더 붙이는 데에는 이유가 있을까요?강의를 듣고 코드들을 숙지하면서 준비하니까 정말 강의 선택 잘 했다는 확인이 듭니다. 물론 붙는 건 또 별개의 문제겠지만… 아마 또 질문을 드리겠지만, 강의 정말 잘 들었다는 말씀 드립니다. ㅎ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2 lgb 사용 관련 문의
예시문제 작업형2를 시험환경에서 lgb 모델로 머신러닝을 실시하였는데, 'random_state' 파라미터 관련 경고 메세지가 뜨는데, lgb 모델에서는 'random_state' 를 사용할 수 없는 건가요?[코딩내용]import pandas as pdX_test = pd.read_csv("data/X_test.csv")X_train = pd.read_csv("data/X_train.csv")y_train = pd.read_csv("data/y_train.csv")pd.set_option('display.max_columns', 100)pd.options.display.float_format = '{:.2f}'.format# print(X_train.shape, X_test.shape, y_train.shape)# print(X_train.head(3))# print(X_test.head(3))# print(X_train.info())# print(X_train.describe())# print(X_train.describe(include='object'))# print(X_test.describe(include='object'))# print(y_train.head(3))# print(y_train['gender'].value_counts())# print(X_train.isnull().sum())# print(X_test.isnull().sum())# print(y_train.isnull().sum())# print(X_train['환불금액'].mean())# print(X_test['환불금액'].mean())X_train['환불금액'] = X_train['환불금액'].fillna(0)X_test['환불금액'] = X_test['환불금액'].fillna(0)# print(X_train.isnull().sum())# print(X_test.isnull().sum())X_train = X_train.drop('cust_id', axis=1)X_test_id = X_test.pop('cust_id')# print(X_test.head(3))cols = X_train.select_dtypes(exclude='object').columns# print(cols)from sklearn.preprocessing import RobustScalerscaler = RobustScaler()X_train[cols] = scaler.fit_transform(X_train[cols])X_test[cols] = scaler.transform(X_test[cols])# print(X_train.head(3))cols = X_train.select_dtypes(include='object').columns# print(cols)from sklearn.preprocessing import LabelEncoderfor col in cols : le = LabelEncoder() X_train[col] = le.fit_transform(X_train[col]) X_test[col] = le.transform(X_test[col])# print(X_train.head(3))from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train['gender'], test_size=0.15, random_state=2022)# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)from sklearn.metrics import roc_auc_scoreimport lightgbm as lgbmodel = lgb.LGBMClassifier(ramdom_state=2022, max_depth=5, n_estimators=600, learning_rate=0.01)model.fit(X_tr, y_tr)pred = model.predict_proba(X_val)# print(pred[:10])print(roc_auc_score(y_val, pred[ : , 1]))# 0.6153810060060059# max_depth=5 : 0.6353541041041042# n_estimators=600, learning_rate=0.01 : 0.647366116116116[경고 메세지][LightGBM] [Warning] Unknown parameter: ramdom_state
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3회 빅분기 시험 작업형 2에서 질문 있습니다!
검증 데이터 분리 파트에서train_test_split([train.drop("TravelInsurance"),~~이렇게 설명을 해주셨는데train_test_split(train.drop(['Unnamed: 0',"TravelInsurance"],~~이렇게 되어야 더 정확한 것이 아닐까요??궁금해서 여쭤봅니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2. 스케일링 질문
5회 작업형 2번 질문입니다.수치형 스케일링과 범주형 변수 원핫 인코딩은 같이 사용할 수 없나요 ? n_cols=['year', 'mileage', 'tax', 'mpg', 'engineSize']train[n_cols]=scaler.fit_transform(train[n_cols])test[n_cols]=scaler.transform(test[n_cols])c_cols = ['model', 'transmission', 'fuelType' ]train=pd.get_dummies(train[c_cols])test =pd.get_dummies(test[c_cols])이렇게 해버리면 수치형 데이터를 스케일링해도 해당 값이 사라지고, 원핫 인코딩된 데이터만 남습니다. 스케일링 코드를 뒤쪽으로 옮겨가도, 이미 사라진 수치형 데이터 컬럼명을 사용해서 에러가 뜹니다.그리고 강의에서는train = pd.get_dummies(train)test = pd.get_dummies(test)으로 진행하고 수치형 데이터를 아예 스케일링 안하고 넘어가셨는데, 어떻게 판단해서 해야하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
warning 관련
안녕하세요! 답이 나오기는 하는데 이 copy warning은 뭘까요? 어떻게 해결할까요?# print(df.shape) line = int(len(df) * 0.8) df = df[:line] # df.shape # print(df.isnull().sum()) r1 = df['f1'].std() med = df['f1'].median() df['f1'] = df['f1'].fillna(med) # df.isnull().sum() r2 = df['f1'].std() abs(r1 - r2)<ipython-input-47-f10e742b8062>:10: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df['f1'] = df['f1'].fillna(med) 3.564064430008667
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2에 명목형 컬럼 train=train.select_dtypes(exclude='object').copy()
작업형2에 명목형 컬럼 train/test=train/test.select_dtypes(exclude='object').copy()으로 담으면 라벨인코딩/원핫인코딩은 skip해도 무방할까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 회귀문제인지, 분류문제인지 어떻게 판별하는 지 궁금합니다.
작업형2 회귀문제인지, 분류문제인지 처음에 판별하는게 중요하다고 했는데, f1 score, roc auc로 평가한다는 조건이 있으면 분류문제rsme 같은 걸로 평가한다는 조건이 있으면 회귀문제일까요 ?혹은 id / 타겟값 이면 분류문제, 하나의 값만 제출하는 것이면 회귀문제일까요 ? 궁금합니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
lightgbm help 사용법
lightgbm을 사용할때 help를 활용하려하는데 어떻게 해야 할까요 ?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제3의 문제9번 질문드립니다
안녕하세요. 작업형1 모의문제3의 문제9번 질문드리고자 합니다.강사님께서 판다스의 datetime을 활용하여 풀어주셨는데혹시 'subscribed'를 슬라이싱하여 년/ 월/일 컬럼을 만들어 풀이하는 방법도 알 수 있을까요? 해보려고 하는데 자꾸 오류가 발생하여 여쭤봅니다 ㅠㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의문제 - 작업형2
모의문제를 여러 모델로 학습해보려고 하는데 코랩환경에서는 워닝이 없이 잘 실행되는데 시험 환경에서 위와 같은 오류가 발생하여 질문드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
a = df.copy()
작업형 들어가기 전에원데이터를 카피해서 a데이터프레임을 만들어서a로 계산해도 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩/라벨인코딩 방법 선택
선생님 안녕하세요, 원핫인코딩과 라벨인코딩 중에서 어떤 것으로 인코딩을 수행할지에 대한 기준이 헷갈려, 질문을 남깁니다. 원핫인코딩 시에, train = pd.get_dummies(train) 과 같이 int/float형 데이터와 모두 합쳐서 인코딩을 진행해도 문제가 없나요??라벨인코딩처럼 object형 컬럼만 추출해서 원핫인코딩을 진행하려고하니 오류가 발생하여 혹시 어떤 문제가 있는건지 궁금합니다! # object 컬럼 원핫/라벨인코딩 cols = train.select_dtypes(include='object').columns # print(cols) for col in cols: train[col] = pd.get_dummies(train[col]) test[col] = pd.get_dummies(test[col])위와 같은 코드를 추가하여 실행하였을 때 아래와 같은 오류가 발생합니다. --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-38-cba2437473af> in <cell line: 23>() 22 # print(cols) 23 for col in cols: ---> 24 train[col] = pd.get_dummies(train[col]) 25 test[col] = pd.get_dummies(test[col]) 26 /usr/local/lib/python3.10/dist-packages/pandas/core/frame.py in _set_item_frame_value(self, key, value) 4098 len_cols = 1 if is_scalar(cols) else len(cols) 4099 if len_cols != len(value.columns): -> 4100 raise ValueError("Columns must be same length as key") 4101 4102 # align right-hand-side columns if self.columns ValueError: Columns must be same length as key
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
test 데이터의 결측치 처리
안녕하세요 선생님, 결측치 처리 관련하여 궁금한 점이 있어 이렇게 질문 남기게 되었습니다.결측치가 있는 경우, 이를 삭제하거나 대체하는 방법이 있을텐데요.저는 결측치가 있을 경우, 평균값, 중앙값이나 0으로 대체할 계획입니다. 근데 train 데이터와 마찬가지로 test데이터의 결측치도 동일하게 대체하거나 제거해줘야 하는 것이 맞는 건가요? test 데이터는 원본 데이터와 달라지면 안된다거나, 삭제되면 안된다는 언급이 보여 혼동이 되어 질문드립니다. test데이터에서 결측치를 다른 값으로 채워주는건 괜찮으나, 삭제만 안하면 되는건가요?이와 유사하게, 컬럼에서 ID나 모델명과 같은 컬럼을 삭제하고 예측하려고 할 때, 시험환경에서 train, test에서 둘다 drop이나 pop으로 삭제를 진행해도 문제가 없는지 궁금합니다. 2. 추가로, unique로 object 데이터의 가짓수를 확인하고 가짓수가 적으면(2~5이내) 원핫인코딩, 많으면 라벨인코딩을 하고있는데 맞는 접근 방식인지도 궁금합니다. 이렇게 인사드릴 수 있게되어 영광입니다! 좋은 강의 올려주셔서 감사드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
T2-1
안녕하세요 캐글 T2-1을 푸는 도중 도저히 에러를 해결할 수 없어 질문드립니다!ㅠㅠ코드는 가장 아래에 있습니다데이터가 3개 주어지고 결측치가 있는 경우 제가 짠 코드와 같이 결측치를 채우면 될까요?에러는 아래와 같이 나타납니다. test 데이터에 ‘Ali', 'Mr Ahmed'가 없다는 뜻같은데 무엇이 문제이고 어떻게 해결해야 좋을까요?ㅠㅠ에러메시지, 코드:KeyError Traceback (most recent call last) /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in _encode_python(values, uniques, encode) 65 try: ---> 66 encoded = np.array([table[v] for v in values]) 67 except KeyError as e: /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in <listcomp>(.0) 65 try: ---> 66 encoded = np.array([table[v] for v in values]) 67 except KeyError as e: KeyError: 'Ali, Mr. Ahmed' During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) /tmp/ipykernel_20/403961971.py in <module> 53 le = LabelEncoder() 54 X_train[col] = le.fit_transform(X_train[col]) ---> 55 X_test[col] = le.transform(X_test[col]) /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in transform(self, y) 275 return np.array([]) 276 --> 277 _, y = _encode(y, uniques=self.classes_, encode=True) 278 return y 279 /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in _encode(values, uniques, encode, check_unknown) 111 if values.dtype == object: 112 try: --> 113 res = _encode_python(values, uniques, encode) 114 except TypeError: 115 types = sorted(t.__qualname__ /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in _encode_python(values, uniques, encode) 67 except KeyError as e: 68 raise ValueError("y contains previously unseen labels: %s" ---> 69 % str(e)) 70 return uniques, encoded 71 else: ValueError: y contains previously unseen labels: 'Ali, Mr. Ahmed'# 시험환경 세팅 (코드 변경 X) import pandas as pd import numpy as np from sklearn.model_selection import train_test_split def exam_data_load(df, target, id_name="", null_name=""): if id_name == "": df = df.reset_index().rename(columns={"index": "id"}) id_name = 'id' else: id_name = id_name if null_name != "": df[df == null_name] = np.nan X_train, X_test = train_test_split(df, test_size=0.2, random_state=2021) y_train = X_train[[id_name, target]] X_train = X_train.drop(columns=[target]) y_test = X_test[[id_name, target]] X_test = X_test.drop(columns=[target]) return X_train, X_test, y_train, y_test df = pd.read_csv("../input/titanic/train.csv") X_train, X_test, y_train, y_test = exam_data_load(df, target='Survived', id_name='PassengerId') X_train.shape, X_test.shape, y_train.shape, y_test.shape import pandas as pd df = pd.concat([X_train,y_train['Survived']], axis = 1) df['Age'] = df['Age'].fillna(df['Age'].median()) X_test['Age'] = X_test['Age'].fillna(df['Age'].median()) df['Cabin'] = df['Cabin'].fillna('N') X_test['Cabin'] = X_test['Cabin'].fillna('N') df['Embarked'] = df['Embarked'].fillna('S') X_test['Embarked'] = X_test['Embarked'].fillna('S') #print(df.isnull().sum()) #print(X_test.isnull().sum()) print(df.info()) print(X_test) cols = ['Name','Sex', 'Ticket', 'Cabin', 'Embarked'] from sklearn.preprocessing import LabelEncoder for col in cols: le = LabelEncoder() X_train[col] = le.fit_transform(X_train[col]) X_test[col] = le.transform(X_test[col])
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
f1_score값 관련
lgb를 썼을 때 f1_score가 1.0이 나오는데 뭐가 문제일까요?from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('target', axis=1), train['target'], test_size=0.15, random_state=2023) X_tr.shape, X_val.shape, y_tr.shape, y_val.shape from sklearn.ensemble import RandomForestClassifier import lightgbm as lgb from sklearn.metrics import f1_score model = lgb.LGBMClassifier(random_state=2023, max_depth=11) model.fit(X_tr, y_tr) pred = model.predict(X_val) print(f1_score(y_val, pred))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
자주 활용되는 판다스 예제 quiz 관련 질문
안녕하세요 코딩 입문자입니다. 가격이 5000 이상인 데이터의 수를 구할때 코딩을result=len(df['가격']>=5000) print(result)이렇게 구성하면 안되는 건가요?con=df['가격']>=5000len(df[con])값이랑 다르게 나와서요ㅣ.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
DATAQ 체험문제 제2유형 관련 질문드립니다
https://dataq.goorm.io/exam/116674/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/2관련 질문 입니다 에러메시지는 이렇게 나오는데요 /goorm/Main.out:68: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().model.fit(X_tr,y_tr)model.fit(X_tr,y_tr['gender']) 이라고 수정해주면 에러메시지가 사라집니다.그런데 저는 위에서 이미 y_train=y_train.drop('cust_id',axis=1) 이라고 해주었는데도 gender 컬럼을 지정해주어야 에러메시지가 안나오는 이유가 궁금합니다 ㅠㅠ 제가 작성한 전체 코드는 아래에 첨부드립니다... 질문이 좀 번거로워서 죄송합니다그리고 번외로, train 과 test 를 합친 all_data 에 라벨인코딩을 적용할때는 encoder.fit_transform 으로만 적어주면 되는거 같은데 이게 맞는지도 한번 여쭤보고 싶습니다 # 출력을 원하실 경우 print() 함수 활용 # 예시) print(df.head()) # getcwd(), chdir() 등 작업 폴더 설정 불필요 # 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가 # 데이터 파일 읽기 예제 import pandas as pd X_test = pd.read_csv("data/X_test.csv") X_train = pd.read_csv("data/X_train.csv") y_train = pd.read_csv("data/y_train.csv") # 사용자 코딩 X_train=X_train.drop('cust_id',axis=1) y_train=y_train.drop('cust_id',axis=1) test_id=X_test.pop('cust_id') # 1.결측치 X_test['환불금액']=X_test['환불금액'].fillna(0) X_train['환불금액']=X_train['환불금액'].fillna(0) # 스케일링 from sklearn.preprocessing import (RobustScaler,MinMaxScaler) scaler = MinMaxScaler() cols = X_train.select_dtypes(exclude=object).columns # print(X_test.head()) X_train[cols]=scaler.fit_transform(X_train[cols]) X_test[cols]=scaler.transform(X_test[cols]) # print(X_train.head()) # 라벨인코딩 from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() # print(X_train.select_dtypes(include=object)) cols = ['주구매상품','주구매지점'] # print('train') # print(X_train[cols].nunique()) # 주구매상품 42 # 주구매지점 24 로 동일 # print('test') # print(X_test[cols].nunique()) # 주구매상품 41 # 합쳐야함 all_data = pd.concat([X_train,X_test]) # print(X_train.shape, X_test.shape, all_data.shape ) # (3500, 10) (2482, 10) (5982, 10) # 라벨인코딩 진행함 # print(all_data[cols].head()) for col in cols: all_data[col] = encoder.fit_transform(all_data[col]) # print(all_data[cols].head()) #라벨인코딩 확인완료 # 다시 나눠야함 X_train = all_data.iloc[:X_train.shape[0],:] X_test = all_data.iloc[X_train.shape[0]:,:] # print(X_train.shape, X_test.shape, all_data.shape ) # # (3500, 10) (2482, 10) (5982, 10) # 확인완료 # .iloc 주의할것 # validation dataset 분리 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(X_train,y_train,random_state=2023,test_size=0.15) # print(X_tr.shape,X_val.shape,y_tr.shape,y_val.shape) #(2975, 9) (525, 9) (2975, 1) (525, 1) # 모델링, 평가지표 from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score model = RandomForestClassifier(random_state=2023,max_depth=7,n_estimators=400) model.fit(X_tr,y_tr['gender']) pred=model.predict_proba(X_val) print(roc_auc_score(y_val ,pred[:,1])) # 남자일 확률 (0:여자,1:남자) # 답안 제출 참고 # 아래 코드 예측변수와 수험번호를 개인별로 변경하여 활용 pred=model.predict_proba(X_test) pd.DataFrame({'custid': test_id, 'gender': pred[:,1]}).to_csv('20230615.csv', index=False) submit = pd.read_csv('20230615.csv') print(submit.head())
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
피처 엔지니어링 코드 이래도 될까욧!?
# 피처 엔지니어링 cols1 = list(X_train.columns[X_train.dtypes == object]) # 범주형 cols2 = list(X_train.columns[X_train.dtypes != object]) # 수치형 Xc_train = X_train[cols1] # 범주형 Xc_test = X_test[cols1] Xn_train = X_train[cols2] # 수치형 Xn_test = X_test[cols2] Xc_train = pd.get_dummies(X_train[cols1]) Xc_test = pd.get_dummies(X_test[cols1]) from sklearn.preprocessing import RobustScaler Ro = RobustScaler() X_train[cols2] = Ro.fit_transform(X_train[cols2]) X_test[cols2] = Ro.transform(X_test[cols2]) Xn_train = X_train[cols2] # 수치형 Xn_test = X_test[cols2] X_train = pd.concat([Xc_train, Xn_train], axis = 1) X_test = pd.concat([Xc_test, Xn_test], axis = 1) print(X_train) print(X_test) 늘 빠른 답변 감사드려용