Como executar dados de teste e avaliar um modelo de aprendizagem SVM Supervisionado

aprendizagem supervisionada

é uma tarefa de aprendizagem de máquina que aprende a partir de dados de análise preditiva que tenha sido rotulada. Uma maneira de pensar sobre a aprendizagem supervisionada é que a rotulagem dos dados é feita sob a supervisão do modeler- aprendizagem não supervisionada, por contraste, não requer dados rotulados. aprendizagem supervisionada é comumente realizada usando um algoritmo de classificação.

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 seu modelo preditivo irá executar. Digite o seguinte listagem de código no interpretador:

>>> Previu = svmClassifier.predict (X_test) >>> 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 Iris Flor.

Como avaliar o modelo

Para avaliar a precisão do seu modelo, você pode comparar a matriz de saída com o y_test array. Para este pequeno conjunto de dados de exemplo, 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 array. 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:

>>> Predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>> y_testarray ([0, 0, 2, 2 , 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> previu y_testarray == ([verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade , True, True, True, False, True, True], dtipo = bool)

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 XIII, previu 1 (Versicolor), quando 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 / size test => 14/15 => 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:

>>> From métricas de importação sklearn >>> metrics.accuracy_score (y_test, previsto) 0,93333333333333335

Outra ferramenta útil é a medição matriz de confusão. Sim, é real. É uma matriz (formato tabular) que mostra as previsões de que o modelo feito com os dados de teste. Aqui está o código que exibe a matriz de confusão:

>>> Metrics.confusion_matrix (y_test, previsto) array ([[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 corretas 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 ele tinha um erro, um número diferente de zero estaria presente em qualquer uma das colunas em que fileira.

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 correcta, mas também teve um erro.

O modelo previu erroneamente uma observação de Virginica para um 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 essa 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:

>>> From sklearn.datasets importar load_iris >>> from importação sklearn.svm LinearSVC >>> from sklearn cross_validation importação >>> from métricas de importação sklearn >>> iris = load_iris () >>> X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) = >>> svmClassifier LinearSVC (random_state = 111) >>> svmClassifier.fit (X_train, y_train) previu >>> = svmClassifier. predizer (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>> y_testarray ([0, 0 , 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, previu) 0,93333333333333335 >>> previu == y_testarray ([Verdadeiro , verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, verdade, True, False, True, True], dtipo = bool)

menu