Python 학습: 머신러닝
Python은 강력한 머신러닝 라이브러리를 제공하여 데이터 분석과 모델링을 쉽게 수행할 수 있게 합니다. 이번 글에서는 Scikit-Learn을 사용한 기본 머신러닝 알고리즘과 모델 훈련 및 평가, TensorFlow/Keras를 사용한 딥러닝 기초에 대해 알아보겠습니다.
1. Scikit-Learn: 기본 머신러닝 알고리즘, 모델 훈련과 평가
Scikit-Learn은 Python에서 널리 사용되는 머신러닝 라이브러리로, 다양한 알고리즘과 도구를 제공합니다. Scikit-Learn을 사용하면 데이터 준비, 모델 선택, 훈련, 평가를 쉽게 할 수 있습니다.
Scikit-Learn 설치 : pip install scikit-learn
기본 머신러닝 알고리즘 예제 : 아래 예제에서는 Scikit-Learn을 사용하여 간단한 분류 작업을 수행합니다. Iris 데이터셋을 사용하여 K-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘을 적용합니다.
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target
# 데이터 분할 (훈련 세트와 테스트 세트)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 모델 선택 및 훈련
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 예측
y_pred = knn.predict(X_test)
# 모델 평가
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
위의 예제에서 Iris 데이터셋을 로드하고, 데이터를 훈련 세트와 테스트 세트로 분할합니다. KNN 알고리즘을 사용하여 모델을 훈련시키고, 테스트 세트에 대한 예측을 수행하여 정확도를 평가합니다.
기타 Scikit-Learn 기능 : Scikit-Learn은 다양한 머신러닝 알고리즘 외에도 데이터 전처리, 모델 선택, 하이퍼파라미터 튜닝 등의 기능을 제공합니다.
from sklearn.model_selection import GridSearchCV
# 데이터 표준화
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 하이퍼파라미터 튜닝
param_grid = {'n_neighbors': [3, 5, 7, 9]}
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid_search.fit(X_train_scaled, y_train)
# 최적의 모델 선택 및 평가
best_model = grid_search.best_estimator_
y_pred_best = best_model.predict(X_test_scaled)
accuracy_best = accuracy_score(y_test, y_pred_best)
print(f"Best Accuracy: {accuracy_best * 100:.2f}%")
위의 예제에서 데이터 표준화를 수행하고, 그리드 서치를 통해 KNN 알고리즘의 최적 하이퍼파라미터를 찾습니다. 최적 모델을 선택하여 정확도를 평가합니다.
2. TensorFlow/Keras: 딥러닝 기초
TensorFlow와 Keras는 딥러닝 모델을 쉽게 구축하고 훈련할 수 있는 라이브러리입니다. Keras는 TensorFlow 위에서 동작하는 고수준 API로, 직관적이고 사용하기 쉽습니다.
TensorFlow/Keras 설치 : pip install tensorflow
딥러닝 기초 예제 : 아래 예제에서는 TensorFlow/Keras를 사용하여 간단한 신경망 모델을 구축하고, MNIST 데이터셋을 사용하여 숫자 이미지를 분류합니다.
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical
# 데이터 로드
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 데이터 전처리
X_train = X_train / 255.0
X_test = X_test / 255.0
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# 모델 구성
model = Sequential([
Flatten(input_shape=(28, 28)),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# 모델 컴파일
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 모델 훈련
model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.2)
# 모델 평가
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {test_acc * 100:.2f}%")
위의 예제에서 MNIST 데이터셋을 로드하고, 이미지를 0과 1 사이의 값으로 정규화합니다. Sequential 모델을 구성하여 입력층, 은닉층, 출력층을 정의하고, 모델을 컴파일한 후 훈련합니다. 마지막으로 테스트 데이터를 사용하여 모델의 성능을 평가합니다.
더 복잡한 딥러닝 모델 : TensorFlow/Keras를 사용하면 더 복잡한 딥러닝 모델도 쉽게 구축할 수 있습니다. 예를 들어, 합성곱 신경망(CNN)을 사용하여 이미지 분류 성능을 높일 수 있습니다.
# 데이터 로드 및 전처리
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(-1, 28, 28, 1) / 255.0
X_test = X_test.reshape(-1, 28, 28, 1) / 255.0
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# CNN 모델 구성
cnn_model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# 모델 컴파일
cnn_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 모델 훈련
cnn_model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.2)
# 모델 평가
test_loss, test_acc = cnn_model.evaluate(X_test, y_test)
print(f"Test Accuracy: {test_acc * 100:.2f}%")
위의 예제에서 Conv2D와 MaxPooling2D 레이어를 사용하여 CNN을 구성하고, MNIST 데이터셋에 대해 훈련합니다. CNN 모델은 일반적인 신경망보다 이미지 분류 성능이 뛰어납니다.
이 글에서는 Python을 사용한 머신러닝과 딥러닝에 대해 알아보았습니다. Scikit-Learn을 사용한 기본 머신러닝 알고리즘과 모델 훈련 및 평가, TensorFlow/Keras를 사용한 딥러닝 기초를 이해하고 활용하면 데이터 분석과 모델링을 더 효과적으로 수행할 수 있습니다. Happy Coding!
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 15. Python의 "프로젝트 및 실습" (0) | 2024.06.18 |
---|---|
[Python] 13. Python의 "데이터 분석 및 시각화" (0) | 2024.06.18 |
[Python] 12. Python의 "웹 개발" (0) | 2024.06.18 |
[Python] 11. Python의 "데이터베이스" (0) | 2024.06.18 |
[Python] 10. Python의 "고급 주제" (0) | 2024.06.18 |