只是试图将K-means聚类应用于一些数据,以找到最佳K并以图形方式说明过程,但我遇到了麻烦。我认为这可能与我的数据结构有关,但我对这一切都很陌生。
这是我的代码:
nci <- read.csv('/Users/myname/Desktop/ML/nci.datanames.csv')
names(nci)[1] <- "gene"
kmeans(nci, 10)
> head(nci)
gene CNS CNS.1 CNS.2 RENAL BREAST CNS.3 CNS.4 BREAST.1 NSCLC NSCLC.1
1 g1 0.300 0.679961 0.940 2.80e-01 0.485 0.310 -0.830 -0.190 0.460 0.760
2 g2 1.180 1.289961 -0.040 -3.10e-01 -0.465 -0.030 0.000 -0.870 0.000 1.490
3 g3 0.550 0.169961 -0.170 6.80e-01 0.395 -0.100 0.130 -0.450 1.150 0.280
4 g4 1.140 0.379961 -0.040 -8.10e-01 0.905 -0.460 -1.630 0.080 -1.400 0.100
5 g5 -0.265 0.464961 -0.605 6.25e-01 0.200 -0.205 0.075 0.005 -0.005 -0.525
6 g6 -0.070 0.579961 0.000 -1.39e-17 -0.005 -0.540 -0.360 0.350 -0.700 0.360
获取此错误消息:
do_one(nmeth(中出错:外部函数调用中的NA/NaN/Inf(arg 1(此外:警告消息:在存储中。mode(x(<-"双":强制引入的NA
任何帮助都将不胜感激!!
要重现错误,可以尝试
lala <- mtcars
lala$a <- LETTERS[1:nrow(mtcars)]
kmeans(lala, 3)
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In storage.mode(x) <- "double" : NAs introduced by coercion
尝试从kmeans调用中删除第一列。
kmeans(nci[,2:ncol(nci)], 10)