반응형
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
'Machine Learning' 카테고리의 다른 글
[Machine Learning] 군집(Clustering)_1 (0) | 2019.11.24 |
---|---|
[Machine Learning] 분류(Classification)_3 (0) | 2019.11.23 |
[Machine Learning] 분류(Classification)_1 (0) | 2019.11.11 |
[Machine Learning] 회귀분석(Regression)_3 (0) | 2019.11.07 |
[Machine Learning] 회귀분석(Regression)_2 (0) | 2019.10.28 |