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.
Conteúdo
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])