我的 R 平方分数为负,但使用 k 倍交叉验证的准确度分数约为 92%

2024-05-08

对于下面的代码,我的 r 平方分数为负,但使用 k 折交叉验证的准确度分数为 92%。这怎么可能?我使用随机森林回归算法来预测一些数据。数据集的链接在下面的链接中给出:https://www.kaggle.com/ludobenistant/hr-analytics https://www.kaggle.com/ludobenistant/hr-analytics

import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

dataset = pd.read_csv("HR_comma_sep.csv")
x = dataset.iloc[:,:-1].values   ##Independent variable
y = dataset.iloc[:,9].values     ##Dependent variable

##Encoding the categorical variables

le_x1 = LabelEncoder()
x[:,7] = le_x1.fit_transform(x[:,7])
le_x2 = LabelEncoder()
x[:,8] = le_x1.fit_transform(x[:,8])
ohe = OneHotEncoder(categorical_features = [7,8])
x = ohe.fit_transform(x).toarray()


##splitting the dataset in training and testing data

from sklearn.cross_validation import train_test_split
y = pd.factorize(dataset['left'].values)[0].reshape(-1, 1)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)

from sklearn.preprocessing import StandardScaler
sc_x = StandardScaler()
x_train = sc_x.fit_transform(x_train)
x_test = sc_x.transform(x_test)
sc_y = StandardScaler()
y_train = sc_y.fit_transform(y_train)

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
regressor.fit(x_train, y_train)

y_pred = regressor.predict(x_test)
print(y_pred)
from sklearn.metrics import r2_score
r2_score(y_test , y_pred)

from sklearn.model_selection import cross_val_score
accuracies = cross_val_score(estimator = regressor, X = x_train, y = y_train, cv = 10)
accuracies.mean()
accuracies.std()

你的问题有几个问题...

首先,你犯了一个非常基本的错误:你think当您处于回归设置时,您使用准确性作为指标,并且下面使用的实际指标是均方误差 https://en.wikipedia.org/wiki/Mean_squared_error (MSE).

准确度是一个衡量标准分类,它与正确分类示例的百分比有关 - 检查维基百科 https://en.wikipedia.org/wiki/Precision_and_recall条目了解更多详细信息。

您选择的回归器(随机森林)内部使用的度量包含在您的详细输出中regressor.fit(x_train, y_train)命令 - 注意criterion='mse'争论:

RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
           max_features='auto', max_leaf_nodes=None,
           min_impurity_split=1e-07, min_samples_leaf=1,
           min_samples_split=2, min_weight_fraction_leaf=0.0,
           n_estimators=10, n_jobs=1, oob_score=False, random_state=0,
           verbose=0, warm_start=False)

MSE 是一个正连续量,并且它的上限不为 1,即,如果您得到的值为 0.92,这意味着......好吧,0.92,并且not 92%.

知道这一点后,明确将 MSE 作为交叉验证的评分函数是一个很好的做法:

cv_mse = cross_val_score(estimator = regressor, X = x_train, y = y_train, cv = 10, scoring='neg_mean_squared_error')
cv_mse.mean()
# -2.433430574463703e-28

出于所有实际目的,这是零 - 您适合training设置几乎完美;为了确认,这里是(再次完美)您的 R 平方分数training set:

train_pred = regressor.predict(x_train)
r2_score(y_train , train_pred)
# 1.0

但是,一如既往,当您将模型应用到实际应用中时,关键时刻就会到来。test放;你的second这里的错误是,因为你用scaled训练你的回归器y_train,你还应该缩放y_test评估前:

y_test = sc_y.transform(y_test)
r2_score(y_test , y_pred)
# 0.9998476914664215

你会得到一个非常好的 R 平方test设置(接近 1)。

那么MSE呢?

from sklearn.metrics import mean_squared_error
mse_test = mean_squared_error(y_test, y_pred)
mse_test
# 0.00015230853357849051
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 R 平方分数为负,但使用 k 倍交叉验证的准确度分数约为 92% 的相关文章

随机推荐

  • VBA Office2010 Shapes.PasteSpecial 失败

    我在将 VBA 代码从 Office2003 迁移到 Office2010 时遇到问题 我想将单元格 Excel 的文本复制到Powerpoint Office2003生成了一个新的文本框 文本样式与Excel中相同 现在我的代码在 Off
  • 更改 jQuery 中链接的标题

    我有一个 id 为 helpTopicAnchorId 的链接 我想在 jQuery 中更改其文本 我该怎么做呢 helpTopicAnchorId text newText P S the jQuery 文档 http docs jque
  • 'val' 或 'var',可变还是不可变?

    我可以定义一个变量 通过var 是不可变的 var x scala collection immutable Set aaaaaa bbbbbb println x isInstanceOf scala collection immutab
  • 如何在外部程序集中的类型的构造函数注入中使用 Ninject

    我正在从外部程序集加载类型并希望创建该类型的实例 但是 此类型 类是由当前管理 绑定的对象设置为构造函数注入的Ninject 我该如何使用Ninject创建此类型的实例并注入任何构造函数依赖项 下面是我如何获得这种类型 Assembly m
  • 在 Go 中执行字节数组

    我正在尝试在 Go 程序中执行 shellcode 类似于使用其他语言执行此操作的方式 示例 1 C 程序中的 Shellcode https stackoverflow com questions 16626857 shellcode i
  • 如何避免强制解包变量?

    我如何避免使用 执行强制解包操作 因为使用它通常是一个糟糕的选择 对于像下面这样的代码 什么是更好的选择 使用它使代码看起来更简单 并且因为 if 检查变量 被调用的永远不会为零 因此不会崩溃 我的老师向我们介绍了 bang 运算符 然后告
  • 如何允许表单接受文件删除而不处理 Windows 消息?

    在 Delphi XE 中 我可以允许我的表单接受文件 拖放 但不必处理裸窗口消息吗 您不需要处理消息来实现这一点 你只需要实施IDropTarget并打电话RegisterDragDrop RevokeDragDrop 这真的非常非常简单
  • Spring OAuth2 Keycloak Kubernetes 内部/外部访问

    我在 Kubernetes 集群内配置了 Keycloak 10 0 3 服务器 keycloak 服务器必须处理外部用户的身份验证 使用外部 url 并处理用于 Spring 微服务通信的 oauth2 令牌 然后Web应用程序Sprin
  • 如何使用用户输入来寻址 Pascal 中的特定变量(Eval/Exec?)

    我正在尝试在分形程序中做一些非常具体的事情隆起7X http apophysis 7x org 使用的脚本语言是Pascal 该项目是用德尔福写的 https svn code sf net p apophysis7x svn trunk
  • TeamCity 命令行构建运行程序:如何使构建失败?

    我们使用 TeamCity 的命令行构建运行程序来调用 bat 文件 bat 文件通过调用 Visual Studio 2008 的 devenv exe 来构建我们的解决方案 然后执行单元测试并创建正确的文件夹结构 我们想要做的是 如果对
  • 更改数据网格列顺序或索引

    这是我无法相信我无法弄清楚的事情 请告诉我我错过了一些简单的事情 我有一个数据网格 我用 LINQ 填充它以及一个自定义类来向其中添加数据 之后 我需要按特定顺序排列数据 它似乎忽略了我 如何更改列属性 例如索引等 这是我正在使用的 LIN
  • 如何从存储在变量中的字符串调用函数?

    我需要能够调用一个函数 但函数名称存储在变量中 这可能吗 例如 function foo code here function bar code here functionName foo I need to call the functi
  • Eclipse Package Explorer 和 Eclipse Project Explorer 之间有什么区别?

    在我看来 这两种观点实际上是相同的 尤其是自伽利略以来 这是真的吗 还是我错过了其中一个或另一个的某些功能 根据Eclipse帮助 Project Explorer 提供了一个分层视图 工作台中的工件 即 根据具体情况定制 您的工作台的配置
  • ASP MVC.NET3 本地 IIS7 对象引用错误

    在开发 mvc Web 应用程序期间 我遇到了运行站点本地实例的问题 当我尝试重新加载页面时 在首次加载成功后 我看到以下错误 如果我通过 VS 虚拟服务器运行该站点 则不会出现任何问题 我的应用程序池正在集成模式下运行 并且正在运行 ne
  • 连续调用startRecordingToOutputFileURL:

    苹果文档 https web archive org web 20140814091047 http developer apple com library ios DOCUMENTATION AVFoundation Reference
  • 将值添加到 rCharts hPlot 工具提示

    我想通过 rCharts 向标准 Highcharts 工具提示添加一些额外的值 示例代码 require rCharts df lt data frame x c 1 5 y c 5 1 z c A B C D E name c K L
  • 将 AngularJS 应用程序部署到普通 Apache HTTP 服务器是一种常见的选择吗?

    我很好奇 AngularJS 应用程序通常部署到什么样的服务器上 Google 没有给出令人满意的答案 特别是 在我看来 AngularJS 应用程序只是静态文件的集合 因此在生产中将这样的应用程序部署到普通 Apache HTTP 服务器
  • 是否可以在三元表达式上只放置一个选项?

    我只是好奇这是否可能 或者是否有办法使它成为 C 的有效语法 expression value do nothing here or put some empty block like SomeClass SomeMethod Edit 为
  • MVC 删除记录但如何在控制器中对此进行编码

    我是使用 ASP Net C 的 MVC3 初学者 但我没有遇到下一种删除记录的情况 我有一个视图要求用户确认删除项目 记录 作为代码 我用它来初始化视图 public ActionResult KeywordsDelete Guid id
  • 我的 R 平方分数为负,但使用 k 倍交叉验证的准确度分数约为 92%

    对于下面的代码 我的 r 平方分数为负 但使用 k 折交叉验证的准确度分数为 92 这怎么可能 我使用随机森林回归算法来预测一些数据 数据集的链接在下面的链接中给出 https www kaggle com ludobenistant hr