我有一个在R中创建的数据集,其结构如下:
> head(btc_data)
Date btc_close eth_close vix_close gold_close DEXCHUS change
1647 2010-07-18 0.09 NA NA NA NA 0
1648 2010-07-19 0.08 NA 25.97 115.730 NA -1
1649 2010-07-20 0.07 NA 23.93 116.650 NA -1
1650 2010-07-21 0.08 NA 25.64 115.850 NA 1
1651 2010-07-22 0.05 NA 24.63 116.863 NA -1
1652 2010-07-23 0.06 NA 23.47 116.090 NA 1
我正在尝试使用k-means对观测值进行聚类。然而,我收到了以下错误信息:
> km <- kmeans(trainingDS, 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
这是什么意思?我是否在错误地预处理数据? 我该怎么办才能解决这个问题? 我不能删除NA,因为在4500次初始观测中,如果我运行
complete cases
,我只剩下100次观测。基本上,我希望基于具有-1、0、1值的
change
列形成3个聚类。 然后,我希望分析每个聚类的组件,以找出变化最强的预测因子。 哪些其他算法对此最有用?我还尝试使用以下代码删除所有NA值,但仍然收到相同的错误消息:
> complete_cases <- btc_data[complete.cases(btc_data), ]
> km <- kmeans(complete_cases, 3, nstart = 20)
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
> sum(!sapply(btc_data, is.finite))
[1] 8008
> sum(sapply(btc_data, is.nan))
[1] 0
>
> sum(!sapply(complete_cases, is.finite))
[1] 0
> sum(sapply(complete_cases, is.nan))
[1] 0
以下是数据格式:
> sapply(btc_data, class)
Date btc_close eth_close vix_close gold_close DEXCHUS change
"Date" "numeric" "numeric" "numeric" "numeric" "numeric" "factor"
sum
是721
,特别是因为只有103个观察值...当我手动检查df时,没有NA。 - zsad512!
并编辑了问题...你的意思是knn
应该在complete_cases
上工作,但我仍然收到相同的错误消息。 - zsad512