如何对使用数据存储功能存储的数据使用kmeans函数?

时间:2016-04-29 12:35:11

标签: matlab csv parallel-processing k-means

我正在尝试使用kmeans对大数据进行聚类,我找到了一个可以在此处执行类似操作的代码

Mu = bsxfun(@times,ones(20,30),(1:20)'); % Gaussian mixture mean
rn30 = randn(30,30);
Sigma = rn30'*rn30; % Symmetric and positive-definite covariance
Mdl = gmdistribution(Mu,Sigma);

rng(1); % For reproducibility
X = random(Mdl,10000);
%%
pool = parpool;                      % Invokes workers

stream = RandStream('mlfg6331_64');  % Random number stream
options = statset('UseParallel',1,'UseSubstreams',1,...
'Streams',stream);

%%

tic;
[idx,C,sumd,D] = kmeans(X,20,'Options',options,'MaxIter',10000,...
'Display','final','Replicates',10);
toc % Terminate stopwatch timer

但正如你所看到的,X是双倍的。

我的问题是我有一个名为HIS.csv的文件,我使用数据存储功能将其存储如下

ds = datastore('HIS_all.csv', 'DatastoreType', 'tabulartext','TreatAsMissing', 'NA');

当我尝试

 [idx,C,sumd,D] = kmeans(ds,20,'Options',options,'MaxIter',10000, 'Display','final','Replicates',10);

我收到以下错误

 Undefined function 'isnan' for input arguments of type         'matlab.io.datastore.TabularTextDatastore'.

 Error in kmeans (line 158)
 wasnan = any(isnan(X),2);

我正在使用matlab 2015a

有什么建议吗?

0 个答案:

没有答案