728x90
반응형
안녕하세요!
23년 6월 24일에 있을 빅데이터 분석기사 실기를 준비하면서 준비를 해도 불안함 마음으로 더 많은 자료를 찾는 분들이 있으실 텐데요
조금이라도 도움이 되고자 Kaggle 데이터를 활용해서 작업형 2 유형을 다뤄보겠습니다!
Kaggle 입문자들에게도 좋을 것 같네요
https://www.kaggle.com/datasets/aljarah/xAPI-Edu-Data
데이터는 오른쪽 상단에서 Copy API command를 통해 가져오실 수 있습니다
이후 다음처럼 발급받은 username과 key를 입력하도록 하겠습니다
os.environ['KAGGLE_USERNAME'] = 'sihyunlee9604'
os.environ['KAGGLE_KEY'] = 'kaggle_key'
또 아래 명령어를 통해 데이터를 받아오겠습니다
참고로 캐글을 통해 진행하였습니다
!kaggle datasets download -d aljarah/xAPI-Edu-Data
!unzip '*.zip'
df = pd.read_csv('xAPI-Edu-Data.csv')
df.head()
* 데이터 전처리
범주형 데이터를 처리하기 위해 데이터를 원핫인코딩 해주겠습니다
이때 결과인 Class 속성은 y로 지정하고, 결함이 많은 데이터는 제거하였습니다
X = pd.get_dummies(df.drop(['ParentschoolSatisfaction','Class'],axis=1),
columns = ['gender', 'NationalITy', 'PlaceofBirth', 'StageID', 'GradeID',
'SectionID', 'Topic', 'Semester', 'Relation',
'ParentAnsweringSurvey','StudentAbsenceDays'], drop_first=True)
y = df['Class']
다음으로 데이터를 학습 데이터 / 테스트 데이터로 분류해주겠습니다
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.3, random_state=4234)
* 모델 학습 및 평가
먼저 RogisticRegression으로 분류를 해보겠습니다
from sklearn.linear_model import LogisticRegression
model_lr = LogisticRegression(max_iter = 10000)
model_lr.fit(X_train, y_train)
from sklearn.metrics import classification_report
pred = model_lr.predict(X_test)
print(classification_report(y_test, pred))
속성들이 모델에 기여한 정도를 보겠습니다
fig = plt.figure(figsize=(15,6))
plt.bar(X.columns, model_lr.coef_[0,:])
plt.xticks(rotation=90)
plt.show()
마지막 컬럼이 가장 기여를 많이하는 것을 볼 수 있겠네요
다음으로 RandomForestClassifier를 이용한 분류를 해보겠습니다
from sklearn.ensemble import RandomForestClassifier
model_rf = RandomForestClassifier()
model_rf.fit(X_train, y_train)
pred = model_rf.predict(X_test)
print(classification_report(y_test, pred))
마찬가지로 Feature Importance를 확인하겠습니다
fig = plt.figure(figsize=(15,6))
plt.bar(X.columns, model_rf.feature_importances_)
plt.xticks(rotation=90)
plt.show()
이번에는 꽤 많은 컬럼들이 크게 기여를 했네요
감사합니다!
728x90
반응형