Como criar um modelo de aprendizado supervisionado com floresta aleatória para análise preditiva

O modelo de floresta aleatório é um modelo conjunto que pode ser usado em analytics- preditivo leva um ensemble (seleção) de árvores de decisão para criar seu modelo. A idéia é levar uma amostra aleatória de alunos fracos (um subconjunto aleatório dos dados de treinamento) e tê-los votar para escolher o modelo mais forte e melhor. O modelo de floresta aleatório pode ser usado para qualquer classificação ou regressão. No exemplo a seguir, o modelo de floresta aleatória é usada para classificar as espécies da íris.

Carregar seus dados

Esta listagem de código irá carregar o íris conjunto de dados em sua sessão:

gt; gt; gt; de load_iris sklearn.datasets importação

gt; gt; gt; íris = load_iris ()

Criando uma instância do classificador

As duas linhas de código seguintes criar uma instância do classificador. A primeira linha importa a biblioteca floresta aleatória. A segunda linha cria uma instância do algoritmo Floresta aleatória:

gt; gt; gt; de RandomForestClassifier importação sklearn.ensemble

gt; gt; gt; rf = (RandomForestClassifier n_estimators = 15,

random_state = 111)

o n_estimators parâmetro no construtor é um parâmetro de ajuste comumente utilizado para o modelo de floresta aleatória. O valor é usado para construir o número de árvores na floresta. É geralmente entre 10 e 100 por cento do conjunto de dados, mas depende dos dados que você está usando. Aqui, o valor é fixado em 15, que é de 10 por cento dos dados. Mais tarde, você vai ver que a mudança do valor do parâmetro para 150 (100 por cento) produz os mesmos resultados.

Então_estimators é usado para o desempenho do modelo sintonia e overfitting. Quanto maior o valor, melhor o desempenho, mas ao custo de overfitting. Quanto menor o valor, maior as chances de não overfitting mas à custa de menor desempenho. Além disso, há um ponto em que o aumento do número geralmente degradam na melhoria da precisão e pode aumentar dramaticamente o poder computacional necessário. Os padrões de parâmetros a 10 se for omitido no construtor.

Correndo os dados de treinamento

Você precisa dividir o conjunto de dados para treinamento e teste sets antes de criar uma instância do classificador floresta aleatória. O código a seguir irá realizar essa tarefa:

Video: ML Toolkit (TensorFlow Dev Summit 2017)

gt; gt; gt; de sklearn cross_validation importação

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; rf = rf.fit (X_train, y_train)

  • Linha 1 importa a biblioteca que permite dividir o conjunto de dados em duas partes.
  • Linha 2 chama a função da biblioteca que divide o conjunto de dados em duas partes e atribui os conjuntos de dados agora dividido para dois pares de variáveis.
  • Linha 3 leva a instância do classificador floresta aleatório que você acabou de criar, em seguida, chama a em forma método para treinar o modelo com o conjunto de dados de treinamento.

Executando os dados de teste

No código a seguir, a primeira linha alimenta o conjunto de dados de teste para o modelo, em seguida, a terceira linha exibe a saída:

gt; gt; gt; previu = rf.predict (X_test)

gt; gt; gt; previu

matriz ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2])

Avaliando o modelo



Pode referência cruzada a saída a partir da previsão contra a y_test matriz. Como resultado, você pode ver que ele previu dois pontos de dados de teste incorretamente. Assim, a precisão do modelo florestal aleatória foi de 86,67 por cento.

Aqui está o código:

gt; gt; gt; a partir de métricas de importação sklearn

gt; gt; gt; previu

matriz ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2])

gt; gt; gt; y_test

matriz ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2])

gt; gt; gt; metrics.accuracy_score (y_test, previu)

,8666666666666667 # 1.0 é 100 por cento de precisão

gt; gt; gt; previu == y_test

array ([verdadeiro, verdadeiro, True, True, False, True, True,

Verdade, verdade, verdade, verdade, verdadeiro, falso, verdadeiro,

Verdadeiro], dtipo = boleano)

Como o modelo de floresta aleatória executar se você alterar o n_estimators parâmetro para 150? Parece que ele não vai fazer a diferença para este pequeno conjunto de dados. Ela produz o mesmo resultado:

gt; gt; gt; rf = (RandomForestClassifier n_estimators = 150,

random_state = 111)

gt; gt; gt; rf = rf.fit (X_train, y_train)

gt; gt; gt; previu = rf.predict (X_test)

gt; gt; gt; previu

matriz ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2])


Publicações relacionadas