我使用以下代码进行随机森林回归和交叉验证。
我有两个问题。
谢谢。
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators=100, criterion='mse',random_state=1, n_jobs=-1)
rf.fit(X_trainr, y_trainr)
y_train_pred = rf.predict(X_trainr)
y_test_pred = rf.predict(X_testr)
y_all_pred = rf.predict(xsetr)
from sklearn.model_selection import cross_val_score
scores = cross_val_score(rf, xsetr, ysetr, cv=5)
print("Cross-validation scores:{}".format(scores))
答案 0 :(得分:1)
cv
给出,在您的情况下为5 scores
变量将是一个浮动的numpy数组,其形状为(5,)scores
数组包含5个值,每个值表示模型在特定拆分上的准确性(拆分是测试数据)scoring
参数,该参数必须是cross_val_score
函数的字符串,但我认为默认情况下是精确度答案 1 :(得分:1)
根据文档:cross_val_score的结果是每次交叉验证运行的估算器得分数。。默认情况下,根据我的理解,这是每个折叠上分类器的准确性。对于回归,由你决定,它可以是均方误差,也就是损失。如果您有兴趣,可以查看此功能的源代码。
答案 2 :(得分:0)
回归模型的sklearn中使用的默认分数是R^2 coefficient.
系数R ^ 2定义为(1-u / v),其中u是残差 平方和((y_true - y_pred)** 2).sum()和v是总和 of square((y_true - y_true.mean())** 2).sum()。最好的 得分为1.0,它可以是负数(因为模型可以是 任意恶化)。一个始终预测预期的常数模型 y的值,忽略输入特征,得到R ^ 2得分 0.0。
您可以通过将scoring parameter传递给cross_val_score来选择不同的简历得分。为了最小化均方误差,它将是neg_mean_squared_error(分数总是最大化):
scores = cross_val_score(rf, xsetr, ysetr, cv=5, scoring = 'neg_mean_squared_error')