gpt4 book ai didi

r - 线性 SVM 中的错误预测

转载 作者:行者123 更新时间:2023-11-30 08:45:52 27 4
gpt4 key购买 nike

我正在编写一个 R 脚本,运行时会给出因变量的预测值。我的所有变量都被分类(如图所示)并分配了一个编号,总类数为101。(每个类是歌曲名称)。 Training dataset

所以我有一个训练数据集,其中包含 {(2,5,6,1)82, (2,5,6,1)45, (2,5,3,1)34, ... }。我在 R studio 中使用线性 svm 训练了这个数据集,对于给定的某些值 (x,y,z,w),它给出了正确的答案。但即使训练数据集中存在 (2,5,6,1)X 这样的记录,为什么它不预测值 82 或 45?我很困惑,因为它忽略了这些术语并显示了全新的输出 23。

training_set = dataset;
library(e1071)
classifier = svm(formula = Song ~ .,
data = training_set,
type = 'C-classification',
kernel = 'linear')
y_pred = predict(classifier, data.frame(Emotion = 2, Pact = 5, Mact = 6, Session = 1)).

我想要的是最接近的答案。 我可以做什么来实现这些目标?

  1. 获得至少 10 个最接近的结果,而不是 R 中的 1 个。
  2. 线性支持向量机模型在这里表现良好吗?
  3. 如何像训练数据集中那样获得值 82,45,如果不存在条目,则找到最接近的条目。 (是否有任何模型不需要简单的欧几里德距离)?

最佳答案

是什么让您认为您的分类器将预测一组预测变量的结果与您的原始观察结果相同?我认为对于分类的工作原理可能存在一些根本性的误解。

这是一个使用线性回归模型的简单反例。同样的原则也适用于您的 SVM。

  1. 模拟一些数据

    set.seed(2017);
    x <- seq(1:10);
    y <- x + rnorm(10);
  2. 我们现在修改 y 的一个值并显示 (x,y) 对的数据。

    y[3] = -10;
    df <- cbind.data.frame(x = x, y = y);
    df;
    # x y
    #1 1 2.434201
    #2 2 1.922708
    #3 3 -10.000000
    #4 4 2.241395
    #5 5 4.930175
    #6 6 6.451906
    #7 7 5.041634
    #8 8 7.998476
    #9 9 8.734664
    #10 10 11.563223
  3. 拟合模型并获得预测。

    fit <- lm(y ~ x, data = df);
    pred <- predict(fit);
  4. 让我们看一下预测响应 y.pred 并将其与原始数据(xy)进行比较。

    data.frame(df, y.pred = pred)
    # x y y.pred
    #1 1 2.434201 -2.1343357
    #2 2 1.922708 -0.7418526
    #3 3 -10.000000 0.6506304
    #4 4 2.241395 2.0431135
    #5 5 4.930175 3.4355966
    #6 6 6.451906 4.8280796
    #7 7 5.041634 6.2205627
    #8 8 7.998476 7.6130458
    #9 9 8.734664 9.0055288
    #10 10 11.563223 10.3980119

请注意,即使您观察到 y=-10,x=3 的预测响应也是 y.pred=0.65 .

关于r - 线性 SVM 中的错误预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49766278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com