首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保存Accord.Net K-Means的集群结果以供重用?

如何保存Accord.Net K-Means的集群结果以供重用?
EN

Stack Overflow用户
提问于 2015-09-23 02:45:18
回答 3查看 1.8K关注 0票数 4

我试图保存Accord.Net K-Means的集群结果,这样我就不必每次运行程序时都要重新计算。

我还想为每个集群分配永久性的人类可读的标签。如果每次都要计算星系团,这是不可能的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-24 16:51:20

在Accord.NET中,可以使用标准.NET二进制序列化保存每个对象。这意味着您可以保存您的K-意思是使用:

代码语言:javascript
运行
复制
KMeans kmeans = ...

using (FileStream fs = new FileStream(path, FileMode.Create))
{
    new BinaryFormatter().Serialize(fs, kmeans);
}    

并使用以下方法加载它:

代码语言:javascript
运行
复制
KMeans kmeans = null;

using (FileStream fs = new FileStream(path, FileMode.Open))
{
    kmeans = new BinaryFormatter().Deserialize(fs) as KMeans;
}    

希望能帮上忙!

票数 2
EN

Stack Overflow用户

发布于 2017-02-12 01:29:19

Accord.Net有一个序列化类。在包Accord.IO中存在类Serializer。你可以把它当作

代码语言:javascript
运行
复制
KMeans means;
Accord.IO.Serializer.Save(means, filename);

代码语言:javascript
运行
复制
means = Accord.IO.Serializer.Load<KMeans>(filename);
票数 2
EN

Stack Overflow用户

发布于 2015-09-23 03:26:22

好的,在对Accord.Net做了一些研究之后,我想出了如何保存集群,所以我将在这里添加解决方案,以防其他人遇到同样的问题。

基本上,您所要做的就是保存集群质心,然后在运行计算之前使用它们初始化KMeans:

代码语言:javascript
运行
复制
// Saving the Centroids
int[] clusterIds = kmeans.Compute(observations);
double[][] centroids = kmeans.Clusters.Centroids;

..。

代码语言:javascript
运行
复制
// Initializing with Centroids
kmeans = new KMeans(numOfClusters);
kmeans.Clusters.Centroids = centroids;
int[] clusterIds = kmeans.Compute(observations);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32730157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档