Machine Learning

[Machine Learning] 분류(Classification)_2

구루싸 2019. 11. 23. 12:30
반응형
SMALL

오늘은 SVM(Support Vector Machine) 에 대해 알아보겠습니다

여태 사용했던 데이터프레임의 각 열은 열 벡터(Vector) 형태로 구현되고

이 열 벡터들이 각각 고유의 축을 갖는 벡터 공간을 생성하고 

분석 대상이 되는 개별 관측값은

모든 속성에 관한 값을 해당 축의 좌표로 표시합니다

역시 직접 해보는게 이해하는 가장 빠른 길이겠죠-_-

# 판다스(Pandas)
import pandas
import seaborn

# Prepare Data
titanic_data = seaborn.load_dataset('titanic')
pandas.set_option('display.max_columns', 15)
print(titanic_data.head(), end = '\n')

# Explore Data
print(titanic_data.info(), end = '\n')

# Drop Columns 'deck', 'embark_town'
run_data = titanic_data.drop(['deck', 'embark_town'], axis = 1)
print(run_data.columns.values, end = '\n')

# Delete row 
run_data = run_data.dropna(subset = ['age'], how = 'any', axis = 0)
print(len(run_data), end = '\n')

# Replace value
most_freq = run_data['embarked'].value_counts(dropna = True).idxmax()
print(most_freq, end = '\n')
run_data['embarked'].fillna(most_freq, inplace = True)

# Extract data & one-hot-encoding
extract_data = run_data[['survived', 'pclass', 'sex', 'age', 'sibsp', 'parch', 'embarked']]
onehot_sex = pandas.get_dummies(extract_data['sex'])
onehot_embarked = pandas.get_dummies(extract_data['embarked'], prefix = 'town')
extract_data = pandas.concat([extract_data, onehot_sex], axis = 1)
extract_data = pandas.concat([extract_data, onehot_embarked], axis = 1)
extract_data.drop(['sex', 'embarked'], axis = 1, inplace = True)
print(extract_data.head(), end = '\n')

x = extract_data[['pclass', 'age', 'sibsp', 'parch', 'female', 'male', 'town_C', 'town_Q', 'town_S']]
y = extract_data['survived']

# Normalization
from sklearn import preprocessing
x = preprocessing.StandardScaler().fit(x).transform(x)

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 = 10)

# SVM
from sklearn import svm
svm_model = svm.SVC(kernel = 'rbf') #kernel : 데이터를 벡터 공간으로 매핑 RBF(Radial Basis Function), Linear, Polynimial, Sigmoid 등
svm_model.fit(x_train, y_train)
y_hat = svm_model.predict(x_test)

# Evaluation
from sklearn import metrics
svm_matrix = metrics.confusion_matrix(y_test, y_hat)
print(svm_matrix, end = '\n')
svm_report = metrics.classification_report(y_test, y_hat)
print(svm_report, end = '\n')

KNN과 이용방법이 크게 다르지 않았네요

그럼 이만-_-

반응형
LIST