首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Accord.NET中的回归分析

Accord.NET中的回归分析
EN

Stack Overflow用户
提问于 2018-04-12 04:57:02
回答 1查看 579关注 0票数 3

目前,我正在学校做我的项目,我有一个不寻常的任务。我的工作是从facebook上的某个页面中抓取数据,把它放到学习模型中,在那里应该有一个输入作为列表,输出作为Int32。

首先,让我简单地解释一下我已经设计的算法:

  1. 刮掉数据
  2. 封住
  3. 移除大写、标点符号、表情符号和空格
  4. 词根相同的合并词
  5. 统计每个单词的出现情况和指定的计数值
  6. 执行tf-idf计算来提取每个帖子中每个单词的权重,现在我有了一个Dictionary<String,List<double[],int>>,它表示

postId:[wordWeights],amountOfLikes as

23425234_35242352:[0.027,0.031,0.009,0.01233],89

我必须用不同的职位和他们的喜好来训练我的模特。为此,本文选择了在Accord.NET上使用C#库,并对其简单线性回归类进行了分析。

首先,我看到我可以使用OrdinaryLeastSqure并使用可能的输入和输出作为

代码语言:javascript
复制
double[] input = {0.123,0.23,0.09}
double[] output = {98,0,0}
OrdinaryLeastSquares ols = new OrdinaryLeastSquares();
regression = ols.Learn(inputs, output);

正如您所看到的,数组中的输入数量应该与输出数相匹配,因此,我用零实现了它。结果,我得到了明显的错误输出。我无法找到适当的方法将我的数据提供给Linear Regression Class。我知道用零实现数组的方法是错误的,但到目前为止,这是我想出的唯一解决方案。如果有人告诉我在这种情况下应该如何使用回归,并帮助选择合适的算法,我将不胜感激。干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-12 17:40:48

在浏览了Accord.NET中不同的回归算法之后,我想出了FanChenLinSupportVectorRegression,它是Accord.NET Machine Learning库的一部分。我相信范陈霖是这个算法的主要贡献者之一,因为它是以他的名字命名的。

算法采用支持向量回归(SVM)的概念。

FanChenLinSupportVectorRegression<TKernel>,其中Kernel获取或设置用于创建内核支持向量机的内核函数。如果设置了此属性,则UseKernelEstimation将设置为false。

回归函数将第一个输入作为数组,由两个数组组成(在我们的例子中,是某个帖子中单词的权重),第二个是由喜欢的数量组成的双重数组。

的重要性:权重的子数组必须与第二个输入中的喜好数量相对应,这样first sub-arraylikes数组中的索引下具有相同的数量,second sub-arraylikes数组中的1索引下应该具有相同的数量等等。

示例:

代码语言:javascript
复制
//Suppose those are posts with tf-idf weights
double[][] inputs =
{
  new[] { 3.0, 1.0 },
  new[] { 7.0, 1.0 },
  new[] { 3.0, 1.0 },
  new[] { 3.0, 2.0 },
  new[] { 6.0, 1.0 },
};
//amount of likes each corresponding post scored
double[] outputs = {2.0, 3.0, 4.0, 11.0, 6.0};
//Using FanChenLinSupportVectorRegression<Kernel>
var model = new FanChenLinSupportVectorRegression<Gaussian>();
//Train model and feed it with tf-idf of each post and corresponding like amount
var svm = model.Learn(inputs, outputs);
//Run a sample tf-idf input to get a prediction
double result = svm.Score(new double[] { 2.0,6.0});

我用相同值的交换输入测试了这个模型,结果非常好和准确。模型在大输入上也很好,但是需要更多的培训。希望这对未来的任何人都有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49788291

复制
相关文章

相似问题

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