これは再現可能な例です:
set.seed(1)
want <- sample(50, 40)
Iris <- iris[c(51:100, 101:150), ] ## only keep versicolor and virginica
## take our training and test sets
train <- droplevels(Iris[c((1:50)[want], (51:100)[want]), , drop = FALSE])
test <- droplevels(Iris[c((1:50)[-want], (51:100)[-want]), , drop = FALSE])
## fit the PCA
pc <- prcomp(train[, 1:4])
pc$x
が回転したデータであることに注意してください。使用しましたがX %*% pc$rotation
(X
トレーニング データ マトリックスはどこにありますか)、最初にデータを中央に配置しませんでしたが、それらは同等です。回帰の予測子を中央に配置すると役立つ場合があります。
## create data frame for logistic regression
mydata <- data.frame(Species = train[, "Species"], pc$x)
## ...and fit the model
mod <- glm(Species ~ PC1, data = mydata, family = binomial)
テスト セット データの PC1 のスコアを予測します。つまり、トレーニング データの PC を形成するために使用したのと同じ回転を使用して、テスト セットを回転させます。そのためにpredict()
、クラスのメソッドを使用できます"prcomp"
test.p <- predict(pc, newdata = test[, 1:4])
これを使用してクラスを予測します
pred <- predict(mod, newdata = data.frame(test.p), type = "response")
pred
> pred
56 66 67 71 72
0.080427399 0.393133104 0.092661480 0.395813527 0.048277608
74 76 82 87 95
0.226191156 0.333553423 0.003860679 0.617977807 0.029469167
106 116 117 121 122
0.999648054 0.922145431 0.924464339 0.989271655 0.318477762
124 126 132 137 145
0.581235903 0.995224501 0.999770995 0.964825109 0.988121496
> 1 - pred
56 66 67 71 72
0.9195726006 0.6068668957 0.9073385196 0.6041864731 0.9517223918
74 76 82 87 95
0.7738088439 0.6664465767 0.9961393215 0.3820221934 0.9705308332
106 116 117 121 122
0.0003519463 0.0778545688 0.0755356606 0.0107283449 0.6815222382
124 126 132 137 145
0.4187640970 0.0047754987 0.0002290047 0.0351748912 0.0118785036
pred
テスト観測がIris virginicaである確率が含まれます。glm()
応答が (この例のように) 因子である場合、その因子の最初のレベル (ここでversicolor
は ) は失敗または0
と見なされ、2 番目以降のレベルは成功または を示すことに注意してください1
。この例ではクラスが 2 つしかないため、モデルは次のようにパラメータ化されますversicolor
。1 - pred
の予測確率が得られvirginica
ます。
私はあなたが質問に含めたエラー計算に従わないので、解決するのはあなた次第です. ただし、モデルの成功の相互分類表は、次の方法で生成できます。
> predSpecies <- factor(ifelse(pred >= 0.5, "virginica", "versicolor"))
> table(test$Species, predSpecies)
predSpecies
versicolor virginica
versicolor 9 1
virginica 1 9
モデルが 2 つのテスト セットの観測値に誤りがあることを示しています。