작업형 1유형
데이터 출처 :https://www.kaggle.com/iabhishekofficial/mobile-price-classification?select=train.csv (참고, 데이터 수정)
데이터 설명 : 핸드폰 가격예측 (price_range컬럼 0(저렴) ~3(매우비쌈) 범위 ) 2000 rows × 21 columns
Data url https://raw.githubusercontent.com/Datamanim/datarepo/main/mobile/train.csv
데이터 상위 5개 컬럼
1
2
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/mobile/train.csv")
Q1. price_range 의 각 value를 그룹핑하여 각 그룹의 n_cores 의 빈도가 가장높은 value와 그 빈도수를 구하여라
1
df[['price_range','n_cores']].groupby(['price_range','n_cores']).size().sort_values(0).groupby(level=0).tail(1)
개인적으로는 문제가 별로 좋지 못한거 같아서 넘어가겠습니다. 문장을 읽고 뭘 원하는지 한눈에 안들어오네요
Q2. price_range 값이 3인 그룹에서 상관관계가 2번째로 높은 두 컬럼과 그 상관계수를 구하여라
1
2
corrdf = df.loc[df['price_range']==3].corr().unstack().sort_values(ascending=False)
corrdf_remove = corrdf.loc[corrdf!=1]
price_range를 3인 것에서 corr()은 상관관계를 추출을쭉 하게 됩니다. 하지만 이대로 값을 구하기가 힘드니 unstack을 통해서 1줄로 쭉 쌓게됩니다. 그리고 정렬을 하는데 문제가 있습니다. 같은 행렬간의 상관관계수는 1입니다. 즉 자기 자신의 값으 빼야하니 상관계수가 1을 빼고 값을 확인합시다. 정답 : pc - fc 0.635166
작업형 2유형
데이터 출처 :https://www.kaggle.com/iabhishekofficial/mobile-price-classification?select=train.csv (참고, 데이터 수정)
데이터 설명 : 핸드폰 가격예측 (price_range컬럼 0(저렴) ~3(매우비쌈) 범위 )
문제타입 : 분류유형
평가지표 : accuracy
trainData url : https://raw.githubusercontent.com/Datamanim/datarepo/main/mobile/train.csv
testData url : https://raw.githubusercontent.com/Datamanim/datarepo/main/mobile/test.csv
데이터 상위 5개 컬럼
먼저 price_range가 어떤 값에 속하는지 확인을 합니다. 데이터 설명에서 0~3사이라고 하는데 직접 확인해봅시다.
1
train.price_range.unique()
말그대로 1,2,3,0으로 분류가 됩니다. 이번에는 결측값도 없고 스케일도 따로 안하겠습니다. 랜덤포레스트분류를 통해서 바로 학습을 해보겠습니다.
1
2
y = train.pop('price_range')
summit = pd.DataFrame(test.pop('id'))
train에서 y값을 뺍시다. 그런데 test데이터에는 train에는 없던 id가 들어 있습니다. 미리 summit에 빼버립시다.
1
2
3
4
5
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(train,y)
summit['price_range'] = model.predict(test)
summit.to_csv('Predict_price_range.csv', index=False)
바로 분류기를 불러와서 학습을 해버리고 csv파일로 저장을 해줍시다.
이번에도 딱히 데이터를 나눠서 훈련을 하지는 않겠습니다.
Comments powered by Disqus.