#
# A execução deste código mostra que
# um modelo linear pode ter
# percentual de acerto inferior a 100 por cento
# mesmo que os dados submetidos à classificação
# sejam idênticos aos dados que originam o modelo linear
#
# features:
# tem pelo longo? (1 sim, 0 não)
# tem perna curta? (1 sim, 0 não)
# late? (1 sim, 0 não)
porco1 = [0, 1, 0]
porco2 = [0, 1, 1]
porco3 = [1, 1, 0]
cachorro1 = [0, 1, 1]
cachorro2 = [1, 0, 1]
cachorro3 = [1, 1, 1]
dados = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]
# classes de dados:
#
# 1 => porco
# 0 => cachorro
classes_exatas_de_dados = [1,1,1,0,0,0]
from sklearn.svm import LinearSVC
modelo_linear = LinearSVC ()
modelo_linear .fit ( dados , classes_exatas_de_dados )
dados_identicos_aos_originais = dados
classes_modeladas_de_dados = modelo_linear .predict ( dados_identicos_aos_originais )
from sklearn.metrics import accuracy_score
acuracia_de_acerto = accuracy_score ( classes_exatas_de_dados , classes_modeladas_de_dados )
percentual_de_acerto = 100.0 * acuracia_de_acerto
print ( "Ao classificar dados identicos aos que originam " )
print ( "um modelo linear verificamos o seguinte: ")
print ( )
print ( "- as classes dos dados originais são: " )
print ( classes_exatas_de_dados )
print ( )
print ( "- os dados originais são: " )
print ( dados )
print ( )
print ( "- os dados submetidos à classificação são: " )
print ( dados_identicos_aos_originais )
print ( )
print ( "- as classes que o modelo atribui aos dados submetidos são: " )
print ( classes_modeladas_de_dados )
print ( )
print ( "- neste exemplo, em que os dados submetidos à classificação " )
print ( "pelo modelo linear são idênticos aos dados que originam o próprio modelo, ")
print ( "o percentual de acerto é ", percentual_de_acerto )
print ( "então," )
print ( "podemos afirmar que o percentual de acerto" )
praticamente_igual_a_100 = "não é 100 por cento "
if ( percentual_de_acerto >= 99.99 ) :
praticamente_igual_a_100 = "é praticamente 100 por cento"
print ( praticamente_igual_a_100 )
print ( )
A execução deste código produz a seguinte escrita:
Ao classificar dados identicos aos que originam
um modelo linear verificamos o seguinte:
- as classes dos dados originais são:
[1, 1, 1, 0, 0, 0]
- os dados originais são:
[[0, 1, 0], [0, 1, 1], [1, 1, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]
- os dados submetidos à classificação são:
[[0, 1, 0], [0, 1, 1], [1, 1, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]
- as classes que o modelo atribui aos dados submetidos são:
[1 0 1 0 0 0]
- neste exemplo, em que os dados submetidos à classificação
pelo modelo linear são idênticos aos dados que originam o próprio modelo,
o percentual de acerto é 83.33333333333334
então,
podemos afirmar que o percentual de acerto
não é 100 por cento