library(dplyr)
iris1 <- select(iris, -c(Species))
iris1 <- data.frame(iris1)
Q <- dist(iris1, method = "euclidian", diag = TRUE, upper = TRUE)
Q[50]
A <- as.matrix(Q)
A
Q`
虹膜資料的相異系數
嗨,我一直在努力尋找能夠回答這個問題的正確代碼。我計算了相異系數并計算出有 150 種不同的相異,但似乎無法弄清楚這個問題。請幫助 :) 這是問題:在此資料上找到與花 50 相似度最高和最低的花朵。連同宣告一起顯示您的代碼和輸出以供識別。 這包括我的代碼和相異系數的第一部分
uj5u.com熱心網友回復:
這是一個基本的 R 解決方案。
定義一個函式來計算花 50、目標花和其他花之間的成對距離。然后應用距離串列中的距離。最后,得到最小值和最大值。
similarity <- function(method = "euclidian", x, y) {
apply(x, 1, \(row) {
stats::dist(rbind(row, y), method = method)
})
}
i_target_flower <- 50
target_flower <- unlist(iris[i_target_flower, -5, drop = TRUE])
dist_list <- c("euclidean", "maximum", "manhattan", "canberra", "minkowski")
sim <- lapply(dist_list, similarity, x = as.matrix(iris[-i_target_flower, -5]), y = target_flower)
names(sim) <- dist_list
sim_df <- as.data.frame(sim)
# which flowers in the original data set iris
sapply(sim_df, \(x) {
i <- c(which.min(x), which.max(x))
row.names(sim_df[i,])
})
#> euclidean maximum manhattan canberra minkowski
#> [1,] "8" "8" "8" "29" "8"
#> [2,] "119" "119" "119" "119" "119"
# corresponding distances
sapply(sim_df, \(x) x[c(which.min(x), which.max(x))])
#> euclidean maximum manhattan canberra minkowski
#> [1,] 0.1414214 0.1 0.2 0.03453322 0.1414214
#> [2,] 6.5145990 5.5 11.0 1.83389310 6.5145990
使用reprex v2.0.2創建于 2022-10-16
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515279.html
標籤:r
上一篇:根據其他兩列中的值對一列求和
下一篇:同時通過不同變數創建樣本子集