728x90
Social Network Ads
같은 데이터에 대해 kernel SVM모델을 만들어보자.
이전에 만든 SVM모델과 다른것은 하나도 없고 kernel을 rbf로 바꾸어주면된다.
# Support Vector Machine (SVM)
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
# Training the SVM model on the Training set
from sklearn.svm import SVC
classifier = SVC(kernel = 'rbf', random_state = 0) # kernel을 RBF로 설정
classifier.fit(X_train, y_train)
# Predicting a new result
print(classifier.predict(sc.transform([[30,87000]])))
[0]
# Predicting the Test set results
y_pred = classifier.predict(X_test)
print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))
[[0 0]
[0 0]
[0 0]
[0 0]
[0 0]
[0 0]
[0 0]
[1 1]
[0 0]
[1 0]
[0 0]
[0 0]
[0 0]
[0 0]
[0 0]
[1 0]
[0 0]
[0 0]
[1 1]
[0 0]
[0 0]
[1 1]
[0 0]
[1 1]
[0 0]
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix, accuracy_score
cm = confusion_matrix(y_test, y_pred)
print(cm)
accuracy_score(y_test, y_pred)
[[64 4]
[ 3 29]]
0.93
kernel을 통해 비선형성을 부여해주니 classification 모델의 복잡도가 올라가면서 linear SVM에 비해 정확도가 올라간것을 볼 수 있다.
728x90
'Drawing (AI) > MachineLearning' 카테고리의 다른 글
Udemy - 머신러닝의 모든 것 (Naive Bayes) (0) | 2023.06.20 |
---|---|
Udemy - 머신러닝의 모든 것 (Kernel SVM - 1) (0) | 2023.04.26 |
Udemy - 머신러닝의 모든 것 (SVM) (0) | 2023.04.02 |
Udemy - 머신러닝의 모든 것 (K-NN) (0) | 2023.03.31 |
Udemy - 머신러닝의 모든 것 (로지스틱 회귀) (1) | 2023.03.26 |