Data Science and Machine Learning - #34 SVM
08/02/2022No tutorial de hoje aprenderemos um novo modelo de generalização de dados, conhecido como SVM (Suport Vector Machine).
Aprendendo o Algorítimo SVM
Importando Módulos
Vamos começar importando os módulos necessários:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split, GridSearchCV,cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report, confusion_matrix
%matplotlib inline
Importando Data Frame e Preparando os Dados
Vamos importar o Data Frame de diagnóstico de câncer e vamos preparar os dados para uso desse algorítimo:
df = pd.read_csv("cancer.csv")
df.head()
del df["id"]
del df["Unnamed: 32"]
df['diagnosis'].unique()
idCat, cat = pd.factorize(df['diagnosis'])
idCat
#M = 0 B = 1
df['diagnosisCat']=idCat
del df['diagnosis']
df.head()
Divisão dos Dados em Treino e Teste
Vamos dividir os nossos dados em treino e teste:
X = df.drop('diagnosisCat',axis=1)
y = df['diagnosisCat']
y.head()
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2, random_state=100)
Escalonamento dos Dados
Agora padronizaremos nossos dados na mesma escala para que o algorítimo não dê maior importância a números maiores:
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_train = pd.DataFrame(X_train, columns=X.columns)
X_test = sc.transform(X_test)
X_test = pd.DataFrame(X_test, columns=X.columns)
X_test
Escolhendo os melhores hiperparâmetros
Vamos escolher os melhores hiperparâmetros para o nosso algorítimo:
params = [
{
'C':[0.1,1,10,100,100],
'gamma':[0.1,1,10,100,100]
}
]
ins = SVC(gamma=0.1)
#grid_search = GridSearchCV(ins,params,cv=10)
#grid_search.fit(X_train,y_train)
#grid_search.best_params_
Ajustando e Fazendo Previsões
Iremos fazer as previsões se pelos dados os pacientes possuem câncer benigno ou maligno:
ins.fit(X_train,y_train)
pred = ins.predict(X_test)
pred[:5]
y_test[:5]
Testando o Desempenho
Vamos testar o desempenho do algorítimo para verificar sua eficiência:
ins.score(X_test,y_test)
cross = cross_val_score(ins,X_test,y_test,cv=10,scoring="accuracy")
final = sum(cross) / len(cross)
final
print(classification_report(y_test,pred))
print(confusion_matrix(y_test,pred))
Por hoje é só! Sucesso nos códigos e na vida!