Como executar dados de teste e avaliar um svm supervisionado modelo de aprendizagem

Video: Let’s Write a Pipeline - Machine Learning Recipes #4

aprendizagem supervisionada é uma tarefa de aprendizagem de máquina que aprende a partir de dados de análise preditiva que tem sido rotulados. Uma maneira de pensar sobre a aprendizagem supervisionada é que a rotulagem dos dados é feito sob a supervisão do modeler- aprendizagem não supervisionada, por outro lado, não exige dados rotulados. aprendizagem supervisionada é comumente realizada utilizando um algoritmo de classificação.

Video: Como fazer a mudança do pacote de dados da operadora

Como executar os dados de teste

Usando 10 por cento dos 150 casos do conjunto de dados dá-lhe 15 pontos de teste de dados para executar através do modelo. Vamos ver como o seu modelo preditivo irá executar. Digite o seguinte listagem de código para o intérprete:

Video: teste beechler gmc

gt; gt; gt; previu = svmClassifier.predict (X_test) gt; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2])

o prever função na primeira linha de código é o que faz a previsão, como você deve ter adivinhado. Leva os dados de teste como entrada e emite os resultados para a variável previu. A segunda linha imprime a saída.

A última linha na secção de código é o de saída, ou previsão: um array de 15 - isto é, 10 por cento do conjunto de dados de amostra, que é o tamanho do conjunto de dados de teste. Os números na matriz representam as classes da flor da íris.

Como avaliar o modelo

Para avaliar a precisão de seu modelo, você pode comparar a matriz de saída com o y_test matriz. Para este pequeno conjunto de dados de amostra, você pode facilmente dizer como ele realizado por ver que a matriz da função de prever a saída é quase o mesmo que o y_test matriz. A última linha no código é uma verificação simples igualdade entre as duas matrizes, suficiente para este caso de teste simples.

Aqui está o código:

gt; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) gt; gt; gt; y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; previu == y_testarray ([verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, Falso, verdadeiro,], dtipo = boleano)

Olhando para a matriz de saída com todo o booleano (Verdade e Falso) valores, você pode ver que o modelo previu todos, mas um resultado. No ponto de dados xm, é previsto um (versicolor) quando ele deveria ter sido 2 (Virginica). o Falso valor (s) indicam que o modelo previsto a classe da íris incorrecta para esse ponto de dados. O percentual de previsões corretas irá determinar a precisão do modelo preditivo.

Neste caso, você pode simplesmente usar divisão básica e obter a precisão:

resultados correctos / tamanho de teste = gt; 14/15 = gt; 0,9333 ou 93,33 por cento

Não é nenhuma surpresa que o modelo não conseguiram prever Virginica ou Versicolor- eles não estão claramente separados por uma linha reta. A incapacidade de prever setosa, no entanto, seria surpreendente porque setosa é claramente linearmente separáveis. Ainda assim, a precisão foi de 14 de 15, ou 93,33 por cento.



Para um teste definido com mais pontos de dados, você pode querer usar o Métricas módulo para fazer suas medições. O código a seguir irá obter a precisão do modelo:

gt; gt; gt; de sklearn metricsgt importação; gt; gt; metrics.accuracy_score (y_test, previu) ,93333333333333335

Outro indicador útil é a matriz de confusão. Sim, é real. É uma matriz (formato tabular) que mostra as previsões de que o modelo feitas nos dados de teste. Aqui está o código que exibe a matriz de confusão:

Video: Galaxy S8 Teste de câmera - O celular mais caro tem câmera boa?

gt; gt; gt; metrics.confusion_matrix (y_test, previu) matriz ([[5, 0, 0], 
[0, 2, 0],
[0, 1, 7]])

A linha diagonal a partir do canto superior-esquerdo para o canto inferior-direito é o número de previsões correctas para cada linha. Cada linha corresponde a uma classe de Iris.

Por exemplo: A primeira linha corresponde à classe setosa. O modelo previu cinco pontos de dados de teste correto e não tinha erros prevendo a classe setosa. Se tivesse um erro, um número diferente de zero estaria presente em qualquer uma das colunas nessa linha.

A segunda linha corresponde à classe versicolor. O modelo previu dois pontos de dados de teste corretas e sem erros. A terceira linha corresponde à classe Virginica. O modelo previu sete pontos de dados de teste correto, mas também tinha um erro.

O modelo erroneamente previu uma observação de Virginica para uma Versicolor. Você pode dizer que, olhando para a coluna onde o erro está aparecendo. Coluna 1 pertence a Versicolor.

A precisão dos resultados de um modelo preditivo irá afetar diretamente a decisão de implantar que Modelo- quanto maior a precisão, o apoio mais facilmente você pode reunir para implantar o modelo.

Ao criar um modelo preditivo, começar por construir uma solução de trabalho simples rapidamente - e, em seguida, continuar a construir de forma iterativa até obter o resultado desejado. Passar meses a construção de um modelo preditivo - e não ser capaz de mostrar suas partes interessadas qualquer resultado - é uma maneira de perder a atenção e apoio de seus stakeholders.

Aqui está a lista completa do código para criar e avaliar um modelo de classificação SVM:

gt; gt; gt; de sklearn.datasets importar load_irisgt; gt; gt; LinearSVCgt de importação sklearn.svm; gt; gt; de sklearn cross_validationgt importação; gt; gt; de sklearn metricsgt importação; gt; gt; íris = load_iris () gt; gt; gt; X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) gt; gt; gt; svmClassifier = LinearSVC (random_state = 111) gt; gt; gt; svmClassifier.fit (X_train, y_train) gt; gt; gt; previu = svmClassifier.predict (X_test) gt; gt; gt; predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) gt; gt; gt; y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) gt; gt; gt; metrics.accuracy_score (y_test, previu) 0.93333333333333335gt; gt; gt; previu == y_testarray ([verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, verdadeiro,,, verdadeiras, Falso, verdadeiro,], dtipo = boleano)

Publicações relacionadas