묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모델 평가 후 result 데이터 생성 시 오류
작업형 2 모음집 하는 도중 마지막 데이터 제출 데이터 파일 생성시 다음과 같은 오류가 나는데 왜 그럴까용..?[코드]#전처리 스케일링target = train.pop('total')#원핫print(train.shape, test.shape)train = pd.get_dummies(train)teset = pd.get_dummies(test)print(train.shape, test.shape)#분리from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2, random_state=0)print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)#모델평가from sklearn.ensemble import RandomForestRegressorrf = RandomForestRegressor()rf.fit(X_tr,y_tr)pred = rf.predict(X_val)from sklearn.metrics import mean_squared_errordef rmse(y_true, y_pred): mse = mean_squared_error(y_true,y_pred) return mse **0.5result = rmse(y_val, pred)#테스트 제pred = rf.predict(test)submit = pd.DataFrame({'pred':pred})submit.to_csv("result.csv", index=False) [오류내역]--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-23-e536b293909d> in <cell line: 68>() 66 67 # 7. 예측 및 결과 파일 생성 ---> 68 pred = rf.predict(test) 69 submit = pd.DataFrame({'pred':pred}) 70 submit.to_csv("result.csv", index=False) 3 frames/usr/local/lib/python3.10/dist-packages/sklearn/base.py in _check_feature_names(self, X, reset) 479 ) 480 --> 481 raise ValueError(message) 482 483 def _validate_data( ValueError: The feature names should match those that were passed during fit. Feature names unseen at fit time: - branch - city - customer_type - day_name - gender - ... Feature names seen at fit time, yet now missing: - branch_A - branch_B - branch_C - city_Mandalay - city_Naypyitaw - ...
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
rmse
rms 평가 값이 작을수록 더 좋은 모델 인거 일까요~?아래와 같이 결과가 나왔는데XGBRegressor가 가장 좋은 모델 일까요???RandomForestRegressor 1320.1181960644112 lnear regression 2637.903981035919 RandomForestRegressor 1872.108397828074 max_depth=5 XGBRegressor 1269.7677864640748
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모델 예측 후 데이터프레임 생성
array length 1333 does not match index length 2154랜덤포레스트 모델 예측 후 데이터 프레임 생성 시 상기 에러 메세지
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
탬플릿
안녕하세요 선생님 작업형2에서 이 코드를 템플릿처럼 외우고 파라미터튜닝만 조금 해서 제출하려는데 크게 무리없을까요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
섹션13 4회 기출문제 작업형2
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요안녕하세요,섹션13 4회 기출문제 작업형2 관해 질문이 있습니다. 저는 object 컬럼을 LabelEncoder를 해주었는데예측값이 1,2,3,4 분류가 나오지 않고소수점이 나옵니다. 이럴때는 어떻게 해야 하는거 인가요??제 풀이가 잘못된 부분이 있나요? 이렇게 프린트를 해보면[2.22 2.566 2.57 ... 1.84516667 2.79 2.95 ] 이렇게 나옵니다.... 뭐가 잘못 되었나용?ㅠㅠ y = train['Segmentation'] train = train.drop(['ID', 'Segmentation'],axis=1) test_id = test.pop('ID') 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]) from sklearn.ensemble import RandomForestClassifier rf = RandomForestRegressor(random_state=2022) rf.fit(train, y) pred = rf.predict(test) print(pred)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2과목 관련 질문드립니다.
안녕하세요 2과목 관련해서 문의드리고 싶어 글을 남깁니다. 2과목은 사실상 과대적합이 걱정되어일단 널값 전처리 해주고 수치형 데이터만 뽑아 인코딩과 파라미터 없이 랜덤포레스트 돌려주고 평가하고 제출하려 하는데 라벨인코딩, 원핫인코딩, 스케일링 해주어야 더 나을까요 ?혹시나 하게 되어 과적합이 떠서 0점이 나올까 걱정이 되서 어떻게 해야할지 문의드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
pred 구할때
왼쪽 문제에는 0,1이 나오게 했는데 왜 문제에서는 predict_proba를 통해 확률을 계산한것이에요?혹시 어쩔때 확률이고 어쩔때 0,1인지 구분방법이있나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제1-2
df['f3']=df['f3'].fillna(df['f3'].mode()) df['f3'] = df['f3'].fillna(df['f3'].mode()[0]) 위에는 제가 쓴것이고 아래는 선생님께서 쓰신 것인데 mode 를 쓸때 별말이 없다면 항상 [0] 을 써줘야하나요? 그리고 시험에서 코드에 띄어쓰기를 제대로 하지않을경우 문제가 되나요?..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
SettingWithCopyWarning 관련 질문
기출2회 작업형 1 문제 2번 풀이 중 SettingWithCopyWarning가 같이 출력됩니다문제 2번 주어진 데이터셋(members.csv)의 앞에서부터 순서대로 80% 데이터만 활용해 'f1'컬럼 결측치를 중앙값으로 채우기 전 후의 표준편차를 구하고, 두 표준편차 차이 계산하기 (단, 표본표준편차 기준, 두 표준편차 차이는 절대값으로 계산)import pandas as pd df = pd.read_csv("members.csv") # print(df.shape) # int(len(df)*0.8) df2= df.iloc[:int(len(df)*0.8),:] # print(df2.shape) std1 = df2["f1"].std() ## 20.574853076621935 print(std1) # print(df2) # print(df2["f1"].median()) # 68.0 df2["f1"] = df2["f1"].fillna(df2["f1"].median()) std2 = df2["f1"].std() ## 17.010788646613268 print(std2) print(std1-std2) 저는 이렇게 풀었고요. 아래처럼 출력되더라고요20.574853076621935 17.010788646613268 3.564064430008667 <ipython-input-43-d0c995e0379e>:14: 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 df2["f1"] = df2["f1"].fillna(df2["f1"].median())정답은 풀이 내용 출력값과 일치하는데, SettingWithCopyWarning 가 나서 자꾸 신경이쓰이네요. 실제시험에서 혹시 문제가 생길 수 있을까요...?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출 2 작업형 1 - 문제 1 질문입니다
문제 1 주어진 데이터셋(members.csv)의 'views' 컬럼 상위 10개 데이터를 상위 10번째 값으로 대체한 후 'age'컬럼에서 80 이상인 데이터의 'views' 컬럼 평균값 구하기 처음에는 이렇게 풀었습니다.df["views"].sort_values(ascending=False).head(10) ## 상위 10번째 값은 9690.0 t10 = df["views"].sort_values(ascending=False).iloc[9] ## 9690.0 df["views"] = df["views"].sort_values(ascending=False).reset_index(drop=True) df["views"].iloc[:10] = t10 # df.head(15) cond = df["age"] >= 80 df[cond]["views"].mean() # 4625.380952380952 로 나옴 # # <ipython-input-49-9959c4a1efa3>:13: SettingWithCopyWarning: # # A value is trying to be set on a copy of a slice from a DataFrame # # See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy # # df["views"].iloc[:10] = t10 4625.380952380952 로 나옴 두번째는 이렇게 풀었습니다df = df.sort_values(["views"], ascending= False).reset_index(drop=True) # df.head(10) top10 = df["views"].iloc[9] ## 9690.0 df["views"].iloc[:10] = top10 # df.head(11) cond = df["age"] > 80 df[cond]["views"].mean() # 5660.318181818182 로 나옴 # <ipython-input-65-22f967dbf31d>:10: SettingWithCopyWarning: # A value is trying to be set on a copy of a slice from a DataFrame # See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy # df["views"].iloc[:10] = top105660.318181818182 로 나옴그런데풀이 부분을 보니 답이 5674.04347826087 로 나오더라고요... 첫번째는 df의 "views" 칼럼 소팅해서 기존 칼럼에 대입하는 식으로 한df["views"] = df["views"].sort_values(ascending=False).reset_index(drop=True)부분이 잘못 된거 같아서 두번째 풀 때 df 전체에서 "views"칼럼 지정해서 소팅하는 아래 처럼 했고df = df.sort_values(["views"], ascending= False).reset_index(drop=True)상위 10번째 값 구했고 조건 변수 설정해서 한건데... 왜 풀이랑 결과값이 다를까요....??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2번
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요idmax가 잘 안와닿아서요 ㅠㅠ이렇게 작성해도 정답처리되나요?df['교사1명당학생수'] = df['전체학생수'] / df['교사수'] df = df.sort_values('교사1명당학생수',ascending=False) print(int(df.iloc[0,1]))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
1번 문제
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요저는 마지막에 iloc를 이용하였는데요가능한지 여쭤봅니다코드는 아래와 같습니다.df['출동시간'] = pd.to_datetime(df['출동시간']) df['도착시간'] = pd.to_datetime(df['도착시간']) # df.info() df['diff'] = df['도착시간'] - df['출동시간'] df['diff'] = df['diff'].dt.total_seconds()/60 result = df.groupby('소방서').mean() result = result.sort_values('diff',ascending=False) print(int(round(result.iloc[0,2],0)))
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
답변에 대한 추가 질문 확인 부탁드립니다
https://www.inflearn.com/questions/1287898 여기서 답변에 대한 추가 확인을 위한 연계 질문 내용도 확인 부탁드립니다 https://www.inflearn.com/questions/1287705pop() 함수는 "train셋에는 존재하고 test셋에는 존재하지 않는 타겟 값 보존을 위해 사용한다" 그리고 피쳐엔지니어링(인코딩, 스케일링) 이후의 컬럼수를 맞추기 위함 이다.그럼 train, test 2셋 문제( pop 사용해 타겟 분리),x_train.y_train,x_test 3셋 문제(타겟은 y_train에 있으니 pop 사용 불필요)로 이해하면 되나요?? 3셋의 경우 타겟은 어차피 y_train에 있는 거니까 거기서 끌어오면 되고 지우면 안되는 거니까요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
test의 정답데이터도있나요..?
다음 코드를썼더니 점수가 검정 점수가 0.98나오는데 과적합인지 확인하고싶어서요 ㅠㅠ train = pd.read_csv('/content/drive/MyDrive/퇴근후딴짓/archive/energy_train.csv') test = pd.read_csv('/content/drive/MyDrive/퇴근후딴짓/archive/energy_test.csv') X = train.iloc[:,:-1] y = train.iloc[:,-1] display(X.info() , X.head() , X.nunique()) cat_col = X.loc[:,X.nunique() <= 6].columns num_col = X.loc[:,~(X.nunique() <= 6)].columns X[cat_col] = X[cat_col].astype('category') test[cat_col] = test[cat_col].astype('category') X = pd.get_dummies(X,columns=cat_col) test = pd.get_dummies(test,columns=cat_col) #겹치는거 x print(set(X.columns) - set(test.columns)) print( set(test.columns) - set(X.columns)) from sklearn.model_selection import train_test_split X_tr,X_val,y_tr,y_val = train_test_split(X,y,test_size=0.2 , stratify = y, random_state=42) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=42) rf.fit(X_tr,y_tr) pred=rf.predict(X_val) from sklearn.metrics import f1_score f1_score(y_val,pred,average= 'macro')
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
학습 시 데이터 포함
모델 학습 시킬 때 id 컬럼은 빼고 해야 되지 않나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
4-3 문제 7번 문제
'평균보다 큰 값의 수, 평균보다 작은 값의 수' 더하시오. 라고 되어 있는데 저만 그런건지 모르겠지만 수를 구하라는 말은 해당 숫자를 찾으라는 말로 이해되는데 아무래도 "갯수" 를 구하라고 정확한 표기가 되어야 할 거 같습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
검증데이터 분할 할 때 test_size 그리고 머신러닝 분류모델 종류
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요검증데이터 분할 할 때 test_size를 나누는 꿀팁있을까요? 0.1? 0.15? 0.2? 머신러닝 모델을 탁 찝어서 이거써라~하고 문제가 나온적도 있나요? 분류/회귀/분류회귀 둘다 사용가능한 모델들을 한번 정리하고 가는게 좋을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
일원분산분석 질문드립니다
일원 분산 분석에서 만약 levene 검정결과가 등분산이 아닌 경우 이후 검정은 어떻게 진행하면 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
표본표준편차 vs 모표준편차
안녕하세요 8회 응시생입니다..표본표준편차와 모표준편차의 차이에 대해서 인지하고있으며 numpy의 기본값 -> 모표준편차pandas의 기본값 -> 표본표준편차 (ddof=1) 인걸로 알고있습니다.기출 2회 유형 문제에선 표본표준편차를 기준으로 구하라고하셨는데요시험에서도 그렇게 나온건가요?따로 그런말이없으면80%를 나누기전(전체데이터셋) -> 모표준편차80프로의 표준편차 -> 표본표준편차 로 구하는게 정석인가요? 답변 미리 감사드립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
주구매상품, train test 갯수 다름
train에서 주구매상품은 42종류고 test에서 주구매상품은 41종류입니다 이것을 확인하고 종류갯수가 달라서 라벨 인코딩을 해준것인가요? 지금까지는 확인하지 않고 object형 라벨 인코딩 해주었는데 train이 '소형가전' 이 하나 더 있는데 따로 어떤 처리를 해준 건가요?