我正在尝试评估功能的相关性,我正在使用DecisionTreeRegressor()
代码的相关部分如下所示:
# TODO: Make a copy of the DataFrame, using the 'drop' function to drop the given feature
new_data = data.drop(['Frozen'], axis = 1)
# TODO: Split the data into training and testing sets(0.25) using the given feature as the target
# TODO: Set a random state.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(new_data, data['Frozen'], test_size = 0.25, random_state = 1)
# TODO: Create a decision tree regressor and fit it to the training set
from sklearn.tree import DecisionTreeRegressor
regressor = DecisionTreeRegressor(random_state=1)
regressor.fit(X_train, y_train)
# TODO: Report the score of the prediction using the testing set
from sklearn.model_selection import cross_val_score
#score = cross_val_score(regressor, X_test, y_test)
score = regressor.score(X_test, y_test)
print score # python 2.x
当我运行print
函数时,它返回给定的分数:
-0.649574327334
您可以在here及以下{<3}}下找到分数函数实现和一些解释:
返回预测的确定系数 R ^ 2 。 ... 最好的分数是1.0,它可能是负的(因为 模型可以任意恶化。)
我无法掌握整个概念,所以这个解释对我没有多大帮助。例如,我无法理解为什么得分可能是负面的,它究竟表明了什么(如果某些东西是平方的,我希望它只能是正数)。
这个分数表示什么,为什么它是负面的?
如果您知道任何文章(对于初学者),它也可能有用!
答案 0 :(得分:1)
R^2
从其定义(https://en.wikipedia.org/wiki/Coefficient_of_determination)可能是负数。基本上
R^2 = 1 - SS_res/SS_tot
且SS_res
和SS_tot
始终为正。如果SS_res >> SS_tot
,您的结果为R^2
。看看这个答案:https://stats.stackexchange.com/questions/12900/when-is-r-squared-negative
答案 1 :(得分:0)
文章执行const compare = (a,b) =>
a.map((el,i)=>i?el-b[i]:"")
.map(n => ((n && n>0)?"+":"")+n);
,其中cross_val_score
已实施。您可以查看scikitlearn DecisionTreeRegressor的文档。
基本上,你看到的分数是R ^ 2,或(1-u / v)。 U是预测的平方和残差,v是总平方和(样本平方和)。