▼ 제출한 코드 ▼
▼ 튜터님 해설 ▼
필수 1번
statistics csv 파일을 읽고, Category 기준 Customer ID 컬럼은 Count, Purchase Amount(USD) 컬럼은 Sum 연산을 진행해주세요. 동시에 2가지 연산을 진행해주세요. (한번의 group by)
그리고 이를 df2 라는 변수에 저장해주세요.
문제 point. 한 번의 groupby로 컬럼별 다른 집계함수를 사용한다. → 복합연산 !
.agg({'col1' : '집계함수' , 'col2' : ['집계함수1','집계함수2']})
필수 2번
Expanding 메서드를 이용하여, Purchase Amount (USD) 의 누적 합을 계산해주세요.
그리고 결과값을 df의 “Purchase Amount (USD)_누적” 컬럼으로 새롭게 지정해주세요.
그리고 Purchase Amount (USD) 과 함께 보여주세요.
문제 point. 누적합 계산 → expanding
.expanding().sum()
해설 듣다보니 rolling 실습을 해봐야할 것 같아서 추가해둔다.
# rolling 실습
df['Purchase Amount (USD)_3'] = df['Purchase Amount (USD)'].rolling(window=3).mean()
df[['Purchase Amount (USD)','Purchase Amount (USD)_3']]
필수 3번
성별 Review Rating 에 대한 평균과 중앙값을 동시에 구해주세요.
결과는 소수점 둘째자리까지 표현해주세요.
문제 point. groupby 후 여러 개 집계 동시에 구하기
.agg(['mean','median'])
필수 4번
성별, Review Rating 컬럼에 대한 T-TEST 를 진행해주세요.
그리고 이에 대한 귀무가설 채택/기각 여부와 그렇게 생각한 이유를 간략하게 설명해주세요.
문제 point. 여자/남자 각각의 리뷰평점 평균 구하고 2개의 변수를 ttest 인자로 활용
필수 5번
Color, Season 컬럼에 대한 카이제곱 검정을 진행해주세요.
그리고 이에 대한 귀무가설 채택/기각 여부와 그렇게 생각한 이유를 간략하게 설명해주세요.
문제 point. 카이제곱검정에 필요한 빈도표 만드는 방법 2가지
1. crosstab
color_season = pd.crosstab(df['Color'], df['Season'])
2. unstack
frequency_table = df.groupby(['Color','Season']).size().unstack(1)
필수 6번
아래와 같은 데이터가 있다고 가정하겠습니다.
데이터를 바탕으로 선형 회귀 모델을 훈련시키고, 회귀식을 작성해주세요.
회귀식을통해, 새로운 광고예산이 1,000만원일 경우의 매출을 예측(계산)해주세요. 그리고 이에 대한 해석을 간략하게 설명해주세요.
# 예측 코드 추가 !!
predicted_sales = model.predict(np.array([[1000]])) # X값 2차원으로 만들기
print(f'1000만원 광고비일 때 예상 매출: {predicted_sales}만원')
도전 1번
Review Rating, Age, Previous Purchases 컬럼을 활용하여, 고객이 할인(Discount Applied)을 받을지 예측하는 RandomForest모델을 학습시켜 주세요. 그리고 모델 정확도를 계산해주세요. 그리고 이에 대한 해석을 간략하게 설명해주세요.
문제 point. 머신러닝모델에서 train, test 데이터를 적절하게 활용할 수 있는가
test 데이터에는 반드시 fit 하면 안 됨 ! !
도전 2번
Subscription Status(구독여부) 컬럼을 종속변수로 두고 이를 예측하는 로지스틱 회귀 모델 학습을 진행해주세요. Age, Purchase Amount, Review Rating을 활용하여 모델을 훈련한 후, 연령 30세, 구매 금액 50 USD, 리뷰 평점 4.0인 고객의
구독취소 확률을 계산해주세요. 그리고 이에 대한 해석을 간략하게 설명해주세요.
문제 point1. 라벨 인자값 다르게 지정하는 방법
# 라벨 바꿔주기
le = LabelEncoder()
y_encoded = le.fit_transform(y)
df['Subscription Status_le'] = 1 - y_encoded
문제 point2. 조건 변수 할당할 때 [[]] 2차원 형식으로 만들어주기
new_customer = [[30, 50, 4.0]]
model.predict_proba(new_customer)[:,1]
# 최종 답안
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder
X = df[['Age','Purchase Amount (USD)','Review Rating']]
y = df['Subscription Status']
le = LabelEncoder()
y_encoded = le.fit_transform(y)
df['Subscription Status_le'] = 1 - y_encoded # 이거 할 필요 없음
y2 = df['Subscription Status_le'] # 이거 할 필요 없음
X_train, X_test, y_train, y_test = train_test_split(X,y_encoded,
test_size=0.3,
random_state=42)
model = LogisticRegression()
model.fit(X_train, y_train)
new_customer = [[30, 50, 4.0]]
model.predict_proba(new_customer)[:,1]'데이터 분석 > 개인 과제' 카테고리의 다른 글
| 파이썬 개인과제 (5번~8번) (0) | 2025.03.16 |
|---|