查看一些代码here:
guard
let statusCode = (response as? HTTPURLResponse)?.statusCode,
statusCode / 100 == 2
else {
return
}
一切都很有意义,但我只是不理解其中的含义:
data(wines)
set.seed(7)
training <- sample(nrow(wines), 120)
Xtraining <- scale(wines[training, ])
Xtest <- scale(wines[-training, ],
center = attr(Xtraining, "scaled:center"),
scale = attr(Xtraining, "scaled:scale"))
som.wines <- som(Xtraining, grid = somgrid(5, 5, "hexagonal"))
som.prediction <- predict(som.wines, newdata = Xtest,
trainX = Xtraining,
trainY = factor(wine.classes[training]))
table(wine.classes[-training], som.prediction$prediction)
它来自哪里?任何指针都将非常感激。谢谢!
答案 0 :(得分:0)
在table(wine.classes[-training], som.prediction$prediction)
中,无法找到wine.classes
并失败。
在上面predict
调用中,它没有失败的原因是因为这些参数不会在任何地方使用。如果您查看文档:
## S3 method for class 'kohonen'
predict(object,
newdata = NULL,
unit.predictions = NULL,
trainingdata = NULL,
whatmap = NULL,
threshold = 0,
...)
trainX = Xtraining, trainY = factor(wine.classes[training])
不是实际参数,因此根据文档...
将它们传递到省略号map.kohonen
,然后传递到?predict.kohonen
。
如果我们查看map.kohonen
的文档:
## S3 method for class 'kohonen'
map(x, newdata, whatmap = NULL, user.weights = NULL, maxNA.fraction = NULL, ...)
我们可以看到trainX
和trainY
也会传递给省略号。如果我们阅读省略号的文档,则表示目前已被忽略。
因此,它不会因错误而失败,因为wine.classes
未在函数内的任何位置使用。
作为证据,从调用中删除它们会返回相同的结果:
> som.prediction <- predict(som.wines, newdata = Xtest,
+ trainX = Xtraining,
+ trainY = factor(wine.classes[training]))
> som.prediction2 <- predict(som.wines, newdata = Xtest)
> identical(som.prediction, som.prediction2)
[1] TRUE
答案 1 :(得分:0)
查看包'kohonen'版本3.0.2的文档中的示例:
data(wines)
## som
som.wines <- som(scale(wines), grid = somgrid(5, 5, "hexagonal"))
summary(som.wines)
## xyf
xyf.wines <- xyf(scale(wines), vintages, grid = somgrid(5, 5, "hexagonal"))
summary(xyf.wines)
加载葡萄酒数据集时,会加载名为 vintages 的变量。这与您可能需要的 wine.classes 相同。
顺便说一下,SOM(自组织映射)不需要标签值,因为它是一种非监督算法。 xyf需要标签值,因为它确实是一种监督算法。