Как прогнозируется значение корневого узла? - PullRequest
0 голосов
/ 28 апреля 2019

Реализация DecisionRegressor использует sklearn и хотел бы вычислить значение разделения корневого узла

Вычислил дисперсию для типа потерь, но sklearn построил дерево с типом потерь со значением 0,5, но мое значение другое.

Ввод:

===== Location  LossType    FrontBumbper    RightSide  Duration(Days) 0          0           1           1     10, 0             0           0           1     5, 0          1           1           0     50, 0             0           0   1     20, 1             1           1           1     9, 1          0         1             0     8,

Variance for losstype: loss type = 0: mean value (10+5+20+8)/4 =10.75 variance =[(10-10.75)^2+(5-10.75)^2+(20-10.75)^2]/4=31.6875

loss type = 1: mean value (50+9)/2 = 29.5 variance = [(50-29.5)^2+(9-29.5)^2]]/2=420.5

sum of weighted variance(losstype) = 4/7*(31.6875) + 2/7*(420.5)

Но дерево склеарна предсказано ниже: здесь losstype <=0.5 в качестве условия вычисляется, но моя дисперсия ему не соответствует.

tree view

code


import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt 
 from sklearn.tree import DecisionTreeRegressor

 dataset = pd.read_excel("/home/datascience/Docume /decisiontreeclassifier/Data.xls")
 print (dataset)
 X = dataset.iloc[:, 0:4]
 print (X)
 y = dataset.iloc[:,4]
 print(y)
 regressor = DecisionTreeRegressor(random_state = 0)  

 regressor.fit(X, y) 

 pred_data =[[1,0,0,0]]
 y_pred = regressor.predict(pred_data)
 print (y_pred)

 from sklearn.tree import export_graphviz
 export_graphviz(regressor, out_file='tree.dot', feature_names=    ['Location','LossType','FrontBumbper','RightSide'])
...