묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
[시험환경에 적응하기:작업형2] 'DataConversionWarning'이유 알려주세요
작업형2를 아래와 같이 했는데 DataConversionWarning 나왔습니다검색해보니 y_train 변경때문이며 ravel()을 사용하라고하는데 이유 설명 부탁 드립니다[error명]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().[작성내용]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',None)# 사용자 코딩#print(X_train.shape,X_test.shape,y_train.shape)#print(y_train.isnull().sum())#print(X_train['환불금액'].describe())X_train['환불금액']=X_train['환불금액'].fillna(X_train['환불금액'].mean())X_test['환불금액']=X_test['환불금액'].fillna(X_train['환불금액'].mean())#print(X_train.isnull().sum())X_train=X_train.drop('cust_id',axis=1)X_test_id=X_test.pop('cust_id')y_train=y_train.drop('cust_id',axis=1)#print(X_test.head(2))#print(X_train.select_dtypes(exclude='object').columns)# '주구매상품', '주구매지점'# '총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기'from sklearn.preprocessing import LabelEncodercols=['주구매상품', '주구매지점']for 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()) from sklearn.preprocessing import MinMaxScalercols2=['총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기']scaler=MinMaxScaler()X_train[cols2]=scaler.fit_transform(X_train[cols2])X_test[cols2]=scaler.transform(X_test[cols2])#print(X_train.head(2))from sklearn.model_selection import train_test_splitX_tr,X_val,y_tr,y_val=train_test_split(X_train,y_train, test_size=0.3, random_state=2023)#print(X_tr.shape,X_val.shape,y_tr.shape,y_val.shape)#(2450, 9) (1050, 9) (2450, 1) (1050, 1)from sklearn.metrics import roc_auc_scorefrom sklearn.ensemble import RandomForestClassifierrf=RandomForestClassifier(random_state=2023)rf.fit(X_tr,y_tr)pred=rf.predict_proba(X_val)print(roc_auc_score(y_val,pred[:,1]))#0.654227735236709
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
빅데이터 분석기사 (2회): 기출유형-작업형2 질문
안녕하세요 강사님 해당 강의를 듣던 도중 질문이 있어서 글 남깁니다. 라벨 인코딩 부분에서 cols = X_train.select_dtypes(include='object').columns으로 표현하였는데시험장에서는 그냥 info()를 통해 데이터타입 확인이후 object에 해당하는 컬럼들만 직접 수기로 입력해도 되나요?ex) cols = ['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender'] 라벨인코딩을 해야될때와 원핫인코딩을 해야될때 상황판단을 어떻게 하는지 궁금합니다. 그냥 매번 라벨인코딩만해도 무방할까요? 검증 데이터 분리시 test_size를 때에따라 0.1이나 0.2나 매번 바뀌는데 시험장에서는 성능이 더 좋은 test_size를 판단하기 위해 숫자를 바꿔가며 시도해봐야하나요? 그게 아니라면 그냥 test_size와 random_state는 0.1과 2023으로 해도 무방할지요 해당 강의와 마찬가지로 모델값들은 전부 같은 값이 나오는데 (0.7084055061812334, 0.6321275746145835, 0.7279225281811363, 0.7370938759652275)이를 이용해 예측 및 제출에서 pred를 형성하면 array안의 확률값이 다르게 나옵니다. 이유가 있을까요? 강의에서 score가 0.7정도면 괜찮은 성능이라고 하셨는데요. 시험장에서 채점기준에서 만점과 부분점수를 맞는 기준이 성능차이인가요? 만약 성능을 내지 못하고 전처리까지만 하고 csv파일을 만들지 않았다면 이는 부분점수도 못받는걸까요?? 한 질문에 여러가지 질문을 해서 죄송하게 생각합니다! 좋은 강의 감사드립니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제2 강의에서 문제4
문제 4번 마지막에 데이터수를 구하기위해 sum을 할때 이런 오류가 뜹니다 ㅠㅠ 정수형이랑 수치형은 연산이 불가하다는(?) 오류인거같은데 수치형으로 바꿔보고자 int(df) int(df.sum()) 등 다양한 시도를 해봤는데 이런 식은 통하지않더라구요 ㅠㅠ 질문1) 풀이 과정에서 뭔가 잘못건드렸을까요? 왜 이런 오류가뜰까요 ㅠㅠ 질문2) 이런 오류가 떴을때 df를 수치형으로 바꾸는방법? # your codeimport pandas as pddf = pd.read_csv('members.csv')cols = df.select_dtypes('object').columnscolsdf = df[cols]df.head()df = df.fillna(0)df = df.Tdf.head()print(sum(df.sum() > 3000)) <--------이 과정에서 발생되는 오류입니다 <오류메세지> /usr/local/lib/python3.10/dist-packages/pandas/_libs/ops.pyx in pandas._libs.ops.scalar_compare() TypeError: '>' not supported between instances of 'str' and 'int'
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2회 기출유형(작업형1) 에서 문제3
강의 듣고 혼자서 다시 풀어보는 도중에.. 질문이생겨 글남깁니다 ㅠㅠ 이상치를 벗어나는 값 찾기 cond1 = df['age'] < lowercond2 = df['age'] > upper여기까지는 이해가 가는데 여기서 이상치의 합을 구할떄 sum(cond1 + cond2) 를 하면 왜 안되는걸까요?'age'컬럼에서 lower 보다 작은것, upper보다 큰것을 더한다는 의미에서 될것같기도한데..sum(cond1 + cond2) 와 df[(cond1)|(cond2)]['age'].sum() 의 차이가 궁금합니다 ㅠㅠ 비전공자인지라 아직 개념이 부족하여 쓸데없는 질문을 많이드리는것같지만 ㅠㅠ 정확하게 공부하고싶어서 질문드립니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2 질문
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요! 강사님매번 강의 감사드립니다~~~다름이 아니라, 자꾸 여기서 에러가 발생하는데transform 부분에 무슨 에러가 있는 지 도저히 모르겠어서요....ㅜ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제3 강의중 문제7번
index '2001' 데이터(행)의 평균보다 큰 값의 수 를 구할때 df.T 실행 후 행과 열을 바꾸어서 df['2001'].mean() 으로 평균을 구하면 왜 안되는걸까요? ㅠㅠ 이런식으로 오류가 뜹니다 .오류 : KeyError: '2001'
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제2 강의에서 문제4
문제 4번 마지막에 데이터수를 구하기위해 sum을 할때 이런 오류가 뜹니다 ㅠㅠ정수형이랑 수치형은 연산이 불가하다는(?) 오류인거같은데 수치형으로 바꿔보고자 int(df) int(df.sum()) 등 다양한 시도를 해봤는데 이런 식은 통하지않더라구요 ㅠㅠ 질문1) 풀이 과정에서 뭔가 잘못건드렸을까요? 왜 이런 오류가뜰까요 ㅠㅠ질문2) 이런 오류가 떴을때 df를 수치형으로 바꾸는방법? <작성한 코드># your code import pandas as pd df = pd.read_csv('members.csv') cols = df.select_dtypes('object').columns cols df = df[cols] df.head() df = df.fillna(0) df = df.T df.head() print(sum(df.sum() > 3000)) <--------이 과정에서 발생되는 오류입니다 <오류메세지>/usr/local/lib/python3.10/dist-packages/pandas/_libs/ops.pyx in pandas._libs.ops.scalar_compare() TypeError: '>' not supported between instances of 'str' and 'int'
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기사 (2회): 기출유형-작업형2 풀이 오류 해석
안녕하세요.강의 잘 듣고 있습니다. 매번 질문에 답해주셔서 감사합니다.아래와 같이 코드를 짰는데데이터 프레임 만들기 submit = 에서 오류가 발생해서요.해당 오류가... 무슨 뜻인지 알려주세요.앞에서 test_id삭제하고 .pop을 빼먹었는데... 이것 땜에 발생했을까요?<오류내역>ValueError Traceback (most recent call last)<ipython-input-30-13b5884e1ac8> in <cell line: 63>()6162 # 데이터 내보내기---> 63 submit = pd.DataFrame(64 {65 'ID': X_test['ID'],/usr/local/lib/python3.10/dist-packages/pandas/core/internals/construction.py in extractindex(data)678 f"length {len(index)}"679 )--> 680 raise ValueError(msg)681 else:682 index = default_index(lengths[0])ValueError: array length 1760 does not match index length 2200<코드># 라이브러리 및 데이터 불러오기 import pandas as pd X_train = pd.read_csv("X_train.csv") y_train = pd.read_csv("y_train.csv") X_test = pd.read_csv("X_test.csv") # EDA print(X_train.head()) print(X_test.head()) print(y_train.head()) pd.set_option('display.max_columns', None) print(X_train.shape, X_test.shape, y_train.shape) # (8799, 11) (2200, 11) (8799, 2) print(X_train.info) print(X_train.describe()) print(X_train.describe(include = 'object')) # Warehouse_block, Mode_of_Shipment, Product_importance, Gender print(X_train.isnull().sum()) # 결측치 없음 print(y_train.value_counts('Reached.on.Time_Y.N')) #1 5236, 0 3563 # 데이터 전처리 # 피처엔지니어링 # 라벨 인코딩 from sklearn.preprocessing import LabelEncoder cols = ['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender'] cols1 = X_train.select_dtypes(include = 'object').columns for col in cols: la = LabelEncoder() X_train[col] = la.fit_transform(X_train[col]) X_test[col] = la.transform(X_test[col]) # 데이터 분할 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train['Reached.on.Time_Y.N'],test_size = 0.2, random_state = 2023) print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) #(7039, 11) (1760, 11) (7039,) (1760,) # 모델링 #분류(랜덤포레스트) from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state = 2023) model.fit(X_tr, y_tr) predict = model.predict_proba(X_val) print(predict) print(predict[:,1]) # 평가(ROC_AUC_SCORE) from sklearn.metrics import roc_auc_score pred=roc_auc_score(y_val, predict[:,1]) print(pred) # 랜덤포레스트 분류: 0.7340529818205483 # 예측 result = model.predict_proba(X_test) # 데이터 내보내기 submit = pd.DataFrame( { 'ID': X_test['ID'], 'Reached.on.Time_Y.N' : predict[:,1] } ) submit.to_csv("1111.csv", index = False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
독립성 검정 관련 질문
독립성검정 관련하여 코랩에서는 선생님이 하신대로 문제없이 실행되었습니다.그런데, 시험환경 체험하기에서 실행을 하다 보니 코랩에서 처럼 결과값(Chi2ContingencyResult(statistic=0.5552884615384607, pvalue=0.4561648467028253, dof=1, expected_freq=array([[47.14285714, 62.85714286], [27.85714286, 37.14285714]]))이 안나오고결과값들이 어떤 값인지 표시가 없는 상태((0.5552884615384607, 0.4561648467028253, 1, array([[47.14285714, 62.85714286], [27.85714286, 37.14285714]])) 로 나왔습니다.이렇게 나오는 이유와 개선 방법인 있는지요?하단에 시험환경에 코딩한 결과입니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 전처리 IQR 이렇게 해도 되나요?
cols = list(X_train.columns[X_train.dtypes != object]) cols for col in cols: Q1 = X_train[col].quantile(.25) Q3 = X_train[col].quantile(.75) IQR = Q3-Q1 min_iqr = Q1 - 1.5*IQR max_iqr = Q3 + 1.5*IQR cnt_before = sum((X_train[col] < min_iqr) | (X_train[col] > max_iqr)) # (X_train[col] < min_iqr) | (X_train[col] > max_iqr), 주어진 조건 둘 중 하나라도 만족, 이상치를 나타내는 값을 선택하는 조건 print(f'{col}의 이상치 처리 전 이상치 개수: {cnt_before}개 입니다.') # f 접두사를 사용하여 문자열 안에서 중괄호 {} 안에 변수나 표현식을 넣을 수 있음 X_train = X_train[(X_train[col] >= min_iqr) & (X_train[col] <= max_iqr)] # (X_train[col] >= min_iqr) & (X_train[col] <= max_iqr), 주어진 조건 둘 다 만족, 이상치를 제외한 정상 범위의 데이터를 선택하는 조건 cnt_after = sum((X_train[col] < min_iqr) | (X_train[col] > max_iqr)) print(f'{col}의 이상치 처리 후 이상치 개수: {cnt_after}개 입니다.')
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
예시문제 작업형2
데이터 전처리할 때 왜 id를 삭제하나요?학습할 때 필요할 지테스트의 id값이 최종적으로 필요할 지 어떻게 아나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
스케일링
안녕하세요. 자료에 따라 스케일링을 다르게 쓰시는 것 같은데요.일단 실기시험을 준비하는 입장에서는 어느 경우에 스탠다드, 민맥스, 로버스트 등을 쓰는지 잘 이해가 가지 않네요. 강사님게서 쓰시니까 그런가보다,, 하고 쓰긴 하는데 시험에서는 민맥스 스케일링 하나만 이해하고 사용해도 문제가 없을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
[예시문제 작업형2] EDA 중 이상치 처리
안녕하세요.강의 잘 듣고 있습니다.예시문제 작업형2 풀면서X_train.describe() 기초통계량 볼 때(3:56)총 구매액, 최대 구매액의 최소값이 음수여서...이상치로 판단하고 금액이 <0인 행은 drop..처리하고 했는데 괜찮은 걸까요?괜찮다면 결측치처리를 X_train, y_train 동시에 해주는 것처럼 결측치도 두 데이터에 모두 해줘야하는거죠?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
from scipy import stats 와 import scipy.stats as stats
from scipy import stats 와 import scipy.stats as stats 차이가 있나요?어떨땐 전자로 어떨땐 후자로 코딩이 되어 있는데차이가 있나 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
회귀 실습 중 rmse 결과값 질문
안녕하세요 선생님현재 모델링 및 평가(회귀)부분을 학습하고 있습니다.코드를 따라가면서 실습을 진행하고 있는데, rmse 값이 선생님과 달라 질문 드립니다.제가 알기로는 모델링을 하는 과정에서 예측한 값이 달라질 수 있고, 이에 따라 평가지표인 rmse 값이 다를 수 있다...라고 알고 있습니다.그런데 값의 차이 뿐만이 아니라 baseline과 scaler 적용 결과가 좋은지 나쁜지가 달라 질문드립니다.예를 들어, 선생님께서 하셨을때는 RandomForestRegressor의 baseline이 rmse값이 가장 좋았고(작았고), scaler를 적용했을 때 rmse가 커져서 scaler 적용은 하지 않는게 좋다~라는 내용의 실습이었는데제가 했을 때는 baseline의 rmse보다 scaler를 적용했을 때의 rmse가 작아 scaler를 적용하는 것이 좋다..는 결론이 나옵니다. 질문을 정리하자면,모델링을 하는 과정에서 선생님과 제가 실습한 예측값과 rmse가 다른게 맞는지다른게 맞다 해도 scaler 적용여부 등을 바꿀 수 있을 정도로 예측값과 rmse가 달라질 수 있는지(추가질문)달라지더라도 선생님 실습값 : 4728.xx 제 실습값 6025.174022213681 이정도로 달라질 수 있는지...(추가질문) 모델링 및 평가(회귀) 24:56에서 수험자는 알 수 없는 영역>y_test로 rmse로 구하시고 결과값이 17909.xx로 나왔는데 여기에서도 charges에 로그변환 한 이후기 떄문에 원래는 np.exp(pred)로 rmse를 구했어야 하는지일 것 같습니다. 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫 인코딩할 때 코드
안녕하세요.강의 잘 듣고 있습니다.모델링 및 평가(회귀) 강의 + 5회 실기 기출유형 문제풀이 유튜브를 보는데 train = pd.get_dummies(train, colmns=cols) ->강의train =pd.get_dummies(train) ->유튜브 이렇게 작성하시더라구요.결과는 같던데.... 둘 중 아무거나 써도 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
Concat 문의
선생님 안녕하세요? 우선 좋은 강의 감사드립니다 ㅎㅎ 6.24 시험을 위해 막 듣기 시작했습니다 ㅎㅎ오늘 강의 중 concat 개념이 나왔는데,df = pd.concat([x_train, y_train[‘income’], axis = 1) 로 합치는 것 예시가 있었습니다. 여기서 궁금한 게 id 기준으로 합쳐야 할텐데, x_train의 id 컬럼과 y_train의 id 컬럼이 같은 것끼리 연결하라는 말이 없어서, 그냥 자동으로 id에 따라 연결해주는건지 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫 인코딩 후 분리
안녕하세요섹션3. 피처 엔지니어링원핫인코딩 후 iloc를 통해 train과 test를 분리할 때line = int(X_train.shape[0]) 이 부분이 이해가 안 가요왜 [0]이 train의 마지막 행을 의미하는 것인가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
코랩에 데이터 업로드
안녕하세요? 수업 잘 듣고 있습니다.매번 강의 시작할 때 .csv 데이터 파일을 코랩에 업로드하고 코드 실행하면서 강의를 듣고 있는데요, 용량이 상대적으로 큰 train 데이터 업로드가 계속 실패하는데, 혹시 해당 코랩 강의 파일 열고 데이터 넣는 방식 말고 다른 방식으로 .csv 파일들 업로드하는 방법이 있을까요?일시적인 오류이면 좋겠습니다만..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 전처리 강의 이상치 처리 질문
# age가 음수인 데이터 X_train[X_train['age']<=0]# age가 1이상인 데이터만 살림 print(X_train.shape) X_train = X_train[X_train['age']>0] print(X_train.shape) 이런식으로 밖에 X_train 대괄호로 전체를 한번 더 묶어주는 것은 어떤 의미가 있나요?