인공지능/데이터분석

사이킷런

Ryuzy 2024. 12. 31. 16:57
728x90
반응형

1. 사이킷런

사이킷런(scikit-learn)은 파이썬(Python)으로 작성된 오픈소스 머신러닝 라이브러리로, 데이터 분석과 예측 모델 구축을 위해 널리 사용됩니다. 간단하고 일관된 인터페이스를 제공하며, 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Learning) 알고리즘을 모두 지원합니다. 주로 분류(Classification), 회귀(Regression), 클러스터링(Clustering), 차원 축소(Dimensionality Reduction), 모델 선택(Model Selection), 전처리(Preprocessing)와 같은 다양한 작업을 수행할 수 있습니다. 사이킷런은 효율적인 수치 계산이 가능하며, 다양한 머신러닝 알고리즘을 손쉽게 사용할 수 있는 API를 제공합니다. 따라서 사이킷런은 데이터 과학과 인공지능 프로젝트에서 가장 많이 사용되는 라이브러리 중 하나입니다.

 

 

2. Iris 데이터셋

아이리스(Iris) 데이터셋은 머신러닝과 통계학에서 가장 널리 사용되는 대표적인 샘플 데이터셋입니다. 이 데이터셋은 붓꽃(Iris)의 세 가지 품종(Setosa, Versicolor, Virginica)에 대한 정보를 포함하고 있습니다. 각 품종별로 꽃받침(Sepal)의 길이와 너비, 꽃잎(Petal)의 길이와 너비로 이루어진 4개의 특성(Features)이 제공되며, 총 150개의 샘플 데이터가 있습니다. 각 품종당 50개의 샘플이 균등하게 분포되어 있어 다중 클래스 분류 문제를 연습하기에 적합합니다.

 

데이터셋

데이터셋(Dataset)은 머신러닝과 데이터 과학에서 모델을 학습, 검증, 테스트하기 위해 사용되는 데이터의 집합입니다. 데이터셋은 일반적으로 입력 데이터(Features)와 정답 레이블(Labels)로 구성되며, 학습용 데이터셋(Training Dataset), 검증용 데이터셋(Validation Dataset), 테스트용 데이터셋(Test Dataset)으로 나누어 사용합니다. 또한 모델을 학습시키고, 하이퍼파라미터를 조정하며, 최종 성능을 평가하는 데 사용됩니다. 데이터셋의 품질과 크기는 모델의 성능에 큰 영향을 미치기 때문에, 적절한 전처리(Preprocessing)와 특성 엔지니어링(Feature Engineering)이 중요합니다.

from sklearn.datasets import load_iris

iris = load_iris()
iris

 

# sepal length in cm: 꽃받침의 길이
# sepal width in cm: 꽃받침의 너비
# petal length in cm: 꽃잎의 길이
# petal width in cm: 꽃잎의 너비
print(iris['DESCR'])

 

data = iris['data']
data

 

feature_names = iris['feature_names']
feature_names

 

import pandas as pd

df_iris = pd.DataFrame(data, columns=feature_names)
df_iris

 

target = iris['target']
target

 

target.shape

 

df_iris['target'] = target
df_iris

 

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(df_iris.drop('target', axis=1),
                                                    df_iris['target'],
                                                    test_size=0.2,
                                                    random_state=2025)

 

X_train.shape, X_test.shape

 

y_train.shape, y_test.shape

 

X_train

 

y_train

 

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

 

SVC

SVC(Support Vector Classifier)는 서포트 벡터 머신(SVM, Support Vector Machine)을 사용한 분류(Classification) 알고리즘입니다. 사이킷런(sklearn.svm.SVC)에서 제공되며, 이진 분류(Binary Classification)와 다중 클래스 분류(Multi-Class Classification) 문제를 해결할 수 있습니다.

 

서포트 벡터 머신(Support Vector Machine, SVM)

서포트 벡터 머신(SVM)은 두 개 이상의 클래스(Class)를 구분하는 지도 학습(Supervised Learning) 알고리즘입니다. 주로 분류(Classification) 문제를 해결하는 데 사용되며, 일부 경우 회귀(Regression) 문제에도 사용됩니다. SVM의 목표는 두 클래스 간의 경계를 가장 잘 구분하는 최적의 초평면(Hyperplane)을 찾는 것입니다.

 

svc = SVC()
svc.fit(X_train, y_train) # 전체 배치 학습을 사용
y_pred = svc.predict(X_test)
y_pred

 

print('정답률', accuracy_score(y_test, y_pred))

 

accuracy_score

accuracy_score는 사이킷런(sklearn)의 metrics 모듈에서 제공하는 성능 평가 지표로, 분류(Classification) 모델의 예측 정확도(Accuracy)를 측정하는 함수입니다. 이 함수는 모델이 예측한 값과 실제 정답이 얼마나 일치하는지를 백분율로 나타내며, 전체 샘플 중 올바르게 예측된 샘플의 비율을 계산합니다.

 

Accuracy

정확도(Accuracy)는 머신러닝과 통계학에서 모델의 성능을 평가하는 가장 기본적인 지표 중 하나로, 전체 예측 중에서 얼마나 많은 예측이 실제 정답과 일치했는지를 나타내는 비율입니다.

 

 

y_pred = svc.predict(pd.DataFrame([[6.2, 2.1, 4.1, 1.5]], columns=['sepal length (cm)',	'sepal width (cm)',	'petal length (cm)', 'petal width (cm)']))
y_pred

 

728x90
반응형