빅데이터 분석과정

김신영·2024년 6월 15일
0
post-thumbnail

Package Import

import numpy as np
import pandas as pd
import sklearn
import scipy
import scipy.stats as stats
import matplotlib.pyplot as plt

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

데이터 불러오기

df = pd.read_csv("...", sep=",")
df2 = pd.read_excel("...", sheet_name="Sheet1")

데이터 살펴보기

df.head()
df.tail()
df.shape
df.info()
df.describe()

데이터 전처리

EDA

Train / Test 데이터 준비

  • `sklearn.model_selection 패키지에 있는 **train_test_split`** 함수 활용
train_test_split(
    *arrays,
    test_size=None,
    train_size=None,
    random_state=None,
    shuffle=True,
    stratify=None,
)
from skelarn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1234)

데이터 분석 수행

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

decisionTree = DecisionTreeClassifier(random_state=11)

decisionTree.fit(x_train, y_train)

y_pred = decisionTree.predict(x_test)

df = pd.DataFrame({"predicted": y_pred, "actual": y_test})

accuracy1 = round((df["predicted"] == df["actual"]).sum() / y_test.shape[0], 2) # 검증 통과율

accuracy2 = round(accuracy_score(y_test, y_pred), 2)

assert accuracy1 == accuracy2

데이터 모델링 성능 검증

import sklearn.metrics as skmetric

skmetric.accuracy_score(y_test, y_pred)
skmetric.precision_score(y_test, y_pred, average=None)
skmetric.recall_score**(y_test, y_pred, average=None)
skmetric.f1_score**(y_test, y_pred, average=None)

skmetric.mean_absolute_error(y_test, y_pred)
skmetric.mean_squared_error(y_test, y_pred)
skmetric.median_absolute_error(y_test, y_pred)

분석모델 성능 평가 방법

F1 Score

  • Precision, Sensitivity(Recall)의 조화평균 지표
  • 값이 클수록 모형이 정확하다고 판단할 수 있다.

코드 예시

from sklearn.metrics import classification_report

report = classification_report(y_test, y_pred) # return str

print(report)

# 출력 결과
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00         9
  versicolor       0.83      1.00      0.91        10
   virginica       1.00      0.82      0.90        11

    accuracy                           0.93        30
   macro avg       0.94      0.94      0.94        30
weighted avg       0.94      0.93      0.93        30
import sklearn.metrics as metrics

print(metrics.**accuracy_score**(y_test, y_pred))
print(metrics.**precision_score**(y_test, y_pred, average=None))
print(metrics.**recall_score**(y_test, y_pred, average=None))
print(metrics.**f1_score**(y_test, y_pred, average=None))

# 출력 결과
0.9333333333333333
[1.         0.83333333 1.        ]
[1.         1.         0.81818182]
[1.         0.90909091 0.9       ]

average 매개변수

  • None: 각 클래스에 대한 개별 점수를 반환합니다.
  • 'micro': 전체 클래스에서의 총 합계를 기반으로 점수를 계산합니다.
  • 'macro': 각 클래스의 점수를 계산한 다음 그 평균을 냅니다. 클래스 간의 가중치를 고려하지 않습니다.
  • 'weighted': 각 클래스의 점수를 계산한 다음 그 평균을 냅니다. 각 클래스의 샘플 수로 가중치를 둡니다.
  • 'samples': 다중 레이블 분류에서 각 샘플의 점수를 평균화합니다.

scikit-learn 패키지 구성

분류Module설명
변수처리sklearn.preprocessing데이터 전처리에 필요한 기능 제공
sklearn.feature_selection알고리즘에 큰 영향을 미치는 변수를 우선순위대로 선택하는 기능 제공
sklearn.feature_extaction텍스트 데이터나 이미지 데이터의 벡터화된 Feature를 추출하는데 사용됨
데이터 분리, 검증sklearn.model_selection차원 축소와 관련한 알고리즘을 지원하는 모듈
평가sklearn.metrics분류, 회귀 등에 대한 다양한 성능 측정 방법 제공
Accuracy, Precision, Recall, ROC-AUC, RMSE 등 제공
머신러닝 알고리즘sklearn.tree의사결정트리 알고리즘 제공
sklearn.neighborsKNN(K-Nearest Neighborhood) 등 최근접 이웃 알고리즘 제공
sklearn.svm서포트벡터머신(SVM) 알고리즘 제공
sklearn.ensemble랜덤 포레스트, 그래디언트 부스팅 등 앙상블 알고리즘 제공
sklearn.linear_model선형회귀, 릿지, 라쏘 및 로지스틱 회귀 등 알고리즘 제공
sklearn.naive_bayes나이브 베이즈 알고리즘 제공
sklearn.cluster비지도 학습 Clustering 알고리즘 제공 (K-Mean, DBSCAN 등)

알고리즘 종류

분류

  • DecisionTreeClassifier
  • RandomForestClassifier
  • GradientBoostingClassifier
  • GaussianNB
  • SVC

회귀

  • LinearRegression
  • Ridge
  • Lasso
  • RandomForestRegressor
  • GradientBoostringRegressor
profile
Hello velog!

0개의 댓글