Como criar classificação e regressão árvores em python para a ciência de dados

Video: Loogica - Fundamentos de Estruturas de dados Python

cientistas de dados chamar árvores que se especializam em aulas de adivinhação na classificação Python árvores-árvores que trabalham com a estimativa vez são conhecidos como árvores de regressão. Aqui está um problema de classificação, usando conjunto de dados Iris de Fisher:

de sklearn.datasets importar load_irisiris = load_iris () X, Y = iris.data, iris.targetfeatures = iris.feature_names

Depois de colocar os dados em X, que contém preditores, e y, que detém as classificações, você pode definir uma validação cruzada para verificar os resultados usando árvores de decisão:

sklearn.cross_validation de importação cross_val_scorefrom sklearn.cross_validation importação KFoldcrossvalidation = KFold (n = X.shape [0], n_folds = 5, baralhamento = True, random_state = 1)

usando o DecisionTreeClassifier classe, você define profundidade máxima dentro de um ciclo iterativo para experimentar o efeito de aumentar a complexidade da árvore resultante. A expectativa é a atingir um ponto ideal rapidamente e, em seguida, testemunhar diminuindo o desempenho de validação cruzada devido a overfitting:



de importação sklearn treefor profundidade na gama de (1,10): tree_classifier = tree.DecisionTreeClassifier (max_depth = profundidade, random_state = 0) se tree_classifier.fit (X, Y) .tree_.max_depth lt; profundidade: breakscore = np.mean (cross_val_score (tree_classifier, X, Y, marcando = `precisão`, CV = validação cruzada, n_jobs = 1)) de impressão `Profundidade:% i Precisão:% .3f` % (profundidade, pontuação) Profundidade : 1 Precisão: 0.580Depth: 2 Precisão: 0.913Depth: 3 Precisão: 0.920Depth: 4 Precisão: 0.940Depth: 5 Precisão: 0,920

A melhor solução é uma árvore com quatro divisões. Confira a complexidade da árvore resultante.

Um modelo de árvore do conjunto de dados Iris usando uma profundidade de quatro divisões.

Video: Loogica - Fundamentos de Estruturas de dados Python - Pt2

Um modelo de árvore do conjunto de dados Iris usando uma profundidade de quatro divisões.

Para obter uma redução efectiva e simplificação, é possível definir min_samples_Dividido para 30 e evitar que as folhas terminais que são muito pequenas. Esta configuração poda deixa o pequeno terminal na nova árvore resultante, diminuindo a precisão validação cruzada, mas aumentando a simplicidade eo poder de generalização da solução.

tree_classifier = tree.DecisionTreeClassifier (min_samples_split = 30, min_samples_leaf = 10, random_state = 0) tree_classifier.fit (x, y) = pontuação np.mean (cross_val_score (tree_classifier, X, Y, marcando `precisão` =, CV = validação cruzada, n_jobs = 1)) print `Precisão:% .3f` % scoreAccuracy: 0,913

Da mesma forma, usando o DecisionTreeRegressor classe, você pode modelar um problema de regressão, como o conjunto de dados de preço da casa Boston. Ao lidar com uma árvore de regressão, as folhas terminais oferecem a média dos casos, como a saída de previsão.

de sklearn.datasets importar load_bostonboston = load_boston () X, Y = boston.data, boston.targetfeatures = boston.feature_namesfrom sklearn.tree importação DecisionTreeRegressorregression_tree = tree.DecisionTreeRegressor (min_samples_split = 30, min_samples_leaf = 10, random_state = 0) regression_tree.fit (x, y) = pontuação np.mean (cross_val_score (regression_tree, X, Y, pontuação = `mean_squared_error`, CV = validação cruzada, n_jobs = 1)) de impressão `erro quadrático médio:% .3f` % abs (pontuação) Mia erro ao quadrado: 22,593

Publicações relacionadas