- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试学习机器学习,尤其是决策树,我从 Accord .Net 框架网站上复制了这段代码,但它似乎对我不起作用,我不明白为什么.它给我的错误是在第 40 行说:“System.IndexOutOfRangeException:'索引超出了数组的范围。'”我不确定我哪里出错了,它使用的数据集可以在这里找到:https://en.wikipedia.org/wiki/Iris_flower_data_set也许我无法以正确的方式提供数据集?顺便说一下,我使用的是 Visual Studio Community 2017。
这是代码:
using Accord.MachineLearning.DecisionTrees;
using Accord.MachineLearning.DecisionTrees.Learning;
using Accord.MachineLearning.DecisionTrees.Rules;
using Accord.Math;
using Accord.Math.Optimization.Losses;
using Accord.Statistics.Filters;
using ConsoleApp2.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
// In this example, we will process the famous Fisher's Iris dataset in
// which the task is to classify weather the features of an Iris flower
// belongs to an Iris setosa, an Iris versicolor, or an Iris virginica:
//
// - https://en.wikipedia.org/wiki/Iris_flower_data_set
//
// First, let's load the dataset into an array of text that we can process
// In this example, we will process the famous Fisher's Iris dataset in
// which the task is to classify weather the features of an Iris flower
// belongs to an Iris setosa, an Iris versicolor, or an Iris virginica:
//
// - https://en.wikipedia.org/wiki/Iris_flower_data_set
//
// First, let's load the dataset into an array of text that we can process
string[][] text = Resources.iris_data.Split(new[] { "\r\n" },
StringSplitOptions.RemoveEmptyEntries).Apply(x => x.Split(','));
// The first four columns contain the flower features
double [][] inputs = text.GetColumns(0, 1, 2, 3).To<double[][]>();
// The last column contains the expected flower type
string[] labels = text.GetColumn(4);
// Since the labels are represented as text, the first step is to convert
// those text labels into integer class labels, so we can process them
// more easily. For this, we will create a codebook to encode class labels:
//
var codebook = new Codification("Output", labels);
// With the codebook, we can convert the labels:
int[] outputs = codebook.Translate("Output", labels);
// Let's declare the names of our input variables:
DecisionVariable[] features =
{
new DecisionVariable("sepal length", DecisionVariableKind.Continuous),
new DecisionVariable("sepal width", DecisionVariableKind.Continuous),
new DecisionVariable("petal length", DecisionVariableKind.Continuous),
new DecisionVariable("petal width", DecisionVariableKind.Continuous),
};
// Now, we can finally create our tree for the 3 classes:
var tree = new DecisionTree(inputs: features, classes: 3);
// And we can use the C4.5 for learning:
var teacher = new C45Learning(tree);
// And finally induce the tree:
teacher.Learn(inputs, outputs);
// To get the estimated class labels, we can use
int[] predicted = tree.Decide(inputs);
// And the classification error (of 0.0266) can be computed as
double error = new ZeroOneLoss(outputs).Loss(tree.Decide(inputs));
// Moreover, we may decide to convert our tree to a set of rules:
DecisionSet rules = tree.ToRules();
// And using the codebook, we can inspect the tree reasoning:
string ruleText = rules.ToString(codebook, "Output",
System.Globalization.CultureInfo.InvariantCulture);
// The output is:
string expected = @"Iris-setosa =: (petal length <= 2.45)
Iris-versicolor =: (petal length > 2.45) && (petal width <= 1.75) && (sepal length <= 7.05) && (sepal width <= 2.85)
Iris-versicolor =: (petal length > 2.45) && (petal width <= 1.75) && (sepal length <= 7.05) && (sepal width > 2.85)
Iris-versicolor =: (petal length > 2.45) && (petal width > 1.75) && (sepal length <= 5.95) && (sepal width > 3.05)
Iris-virginica =: (petal length > 2.45) && (petal width <= 1.75) && (sepal length > 7.05)
Iris-virginica =: (petal length > 2.45) && (petal width > 1.75) && (sepal length > 5.95)
Iris-virginica =: (petal length > 2.45) && (petal width > 1.75) && (sepal length <= 5.95) && (sepal width <= 3.05)
";
Console.WriteLine("expected");
Console.ReadLine();
}
}
}
最佳答案
从代码示例本身来看,您只需要一个包含CSV
格式数据的static
类:
static public class Resources
{
public static string iris_data =
@"7.9,3.8,6.4,2,I. virginica
7.7,3.8,6.7,2.2,I. virginica
7.7,2.6,6.9,2.3,I. virginica
7.7,2.8,6.7,2,I. virginica
7.7,3,6.1,2.3,I. virginica
7.6,3,6.6,2.1,I. virginica
7.4,2.8,6.1,1.9,I. virginica
7.3,2.9,6.3,1.8,I. virginica
7.2,3.6,6.1,2.5,I. virginica
7.2,3.2,6,1.8,I. virginica
7.2,3,5.8,1.6,I. virginica
7.1,3,5.9,2.1,I. virginica
7,3.2,4.7,1.4,I. versicolor
6.9,3.1,4.9,1.5,I. versicolor
6.9,3.2,5.7,2.3,I. virginica
6.9,3.1,5.4,2.1,I. virginica
6.9,3.1,5.1,2.3,I. virginica
6.8,2.8,4.8,1.4,I. versicolor
6.8,3,5.5,2.1,I. virginica
6.8,3.2,5.9,2.3,I. virginica
6.7,3.1,4.4,1.4,I. versicolor
6.7,3,5,1.7,I. versicolor
6.7,3.1,4.7,1.5,I. versicolor
6.7,2.5,5.8,1.8,I. virginica
6.7,3.3,5.7,2.1,I. virginica
6.7,3.1,5.6,2.4,I. virginica
6.7,3.3,5.7,2.5,I. virginica
6.7,3,5.2,2.3,I. virginica
6.6,2.9,4.6,1.3,I. versicolor
6.6,3,4.4,1.4,I. versicolor
6.5,2.8,4.6,1.5,I. versicolor
6.5,3,5.8,2.2,I. virginica
6.5,3.2,5.1,2,I. virginica
6.5,3,5.5,1.8,I. virginica
6.5,3,5.2,2,I. virginica
6.4,3.2,4.5,1.5,I. versicolor
6.4,2.9,4.3,1.3,I. versicolor
6.4,2.7,5.3,1.9,I. virginica
6.4,3.2,5.3,2.3,I. virginica
6.4,2.8,5.6,2.1,I. virginica
6.4,2.8,5.6,2.2,I. virginica
6.4,3.1,5.5,1.8,I. virginica
6.3,3.3,4.7,1.6,I. versicolor
6.3,2.5,4.9,1.5,I. versicolor
6.3,2.3,4.4,1.3,I. versicolor
6.3,3.3,6,2.5,I. virginica
6.3,2.9,5.6,1.8,I. virginica
6.3,2.7,4.9,1.8,I. virginica
6.3,2.8,5.1,1.5,I. virginica
6.3,3.4,5.6,2.4,I. virginica
6.3,2.5,5,1.9,I. virginica
6.2,2.2,4.5,1.5,I. versicolor
6.2,2.9,4.3,1.3,I. versicolor
6.2,2.8,4.8,1.8,I. virginica
6.2,3.4,5.4,2.3,I. virginica
6.1,2.9,4.7,1.4,I. versicolor
6.1,2.8,4,1.3,I. versicolor
6.1,2.8,4.7,1.2,I. versicolor
6.1,3,4.6,1.4,I. versicolor
6.1,3,4.9,1.8,I. virginica
6.1,2.6,5.6,1.4,I. virginica
6,2.2,4,1,I. versicolor
6,2.9,4.5,1.5,I. versicolor
6,2.7,5.1,1.6,I. versicolor
6,3.4,4.5,1.6,I. versicolor
6,2.2,5,1.5,I. virginica
6,3,4.8,1.8,I. virginica
5.9,3,4.2,1.5,I. versicolor
5.9,3.2,4.8,1.8,I. versicolor
5.9,3,5.1,1.8,I. virginica
5.8,4,1.2,0.2,I. setosa
5.8,2.7,4.1,1,I. versicolor
5.8,2.7,3.9,1.2,I. versicolor
5.8,2.6,4,1.2,I. versicolor
5.8,2.7,5.1,1.9,I. virginica
5.8,2.8,5.1,2.4,I. virginica
5.8,2.7,5.1,1.9,I. virginica
5.7,4.4,1.5,0.4,I. setosa
5.7,3.8,1.7,0.3,I. setosa
5.7,2.8,4.5,1.3,I. versicolor
5.7,2.6,3.5,1,I. versicolor
5.7,3,4.2,1.2,I. versicolor
5.7,2.9,4.2,1.3,I. versicolor
5.7,2.8,4.1,1.3,I. versicolor
5.7,2.5,5,2,I. virginica
5.6,2.9,3.6,1.3,I. versicolor
5.6,3,4.5,1.5,I. versicolor
5.6,2.5,3.9,1.1,I. versicolor
5.6,3,4.1,1.3,I. versicolor
5.6,2.7,4.2,1.3,I. versicolor
5.6,2.8,4.9,2,I. virginica
5.5,4.2,1.4,0.2,I. setosa
5.5,3.5,1.3,0.2,I. setosa
5.5,2.3,4,1.3,I. versicolor
5.5,2.4,3.8,1.1,I. versicolor
5.5,2.4,3.7,1,I. versicolor
5.5,2.5,4,1.3,I. versicolor
5.5,2.6,4.4,1.2,I. versicolor
5.4,3.9,1.7,0.4,I. setosa
5.4,3.7,1.5,0.2,I. setosa
5.4,3.9,1.3,0.4,I. setosa
5.4,3.4,1.7,0.2,I. setosa
5.4,3.4,1.5,0.4,I. setosa
5.4,3,4.5,1.5,I. versicolor
5.3,3.7,1.5,0.2,I. setosa
5.2,3.5,1.5,0.2,I. setosa
5.2,3.4,1.4,0.2,I. setosa
5.2,4.1,1.5,0.1,I. setosa
5.2,2.7,3.9,1.4,I. versicolor
5.1,3.5,1.4,0.2,I. setosa
5.1,3.5,1.4,0.3,I. setosa
5.1,3.8,1.5,0.3,I. setosa
5.1,3.7,1.5,0.4,I. setosa
5.1,3.3,1.7,0.5,I. setosa
5.1,3.4,1.5,0.2,I. setosa
5.1,3.8,1.9,0.4,I. setosa
5.1,3.8,1.6,0.2,I. setosa
5.1,2.5,3,1.1,I. versicolor
5,3.6,1.4,0.2,I. setosa
5,3.4,1.5,0.2,I. setosa
5,3,1.6,0.2,I. setosa
5,3.4,1.6,0.4,I. setosa
5,3.2,1.2,0.2,I. setosa
5,3.5,1.3,0.3,I. setosa
5,3.5,1.6,0.6,I. setosa
5,3.3,1.4,0.2,I. setosa
5,2,3.5,1,I. versicolor
5,2.3,3.3,1,I. versicolor
4.9,3,1.4,0.2,I. setosa
4.9,3.1,1.5,0.1,I. setosa
4.9,3.1,1.5,0.2,I. setosa
4.9,3.6,1.4,0.1,I. setosa
4.9,2.4,3.3,1,I. versicolor
4.9,2.5,4.5,1.7,I. virginica
4.8,3.4,1.6,0.2,I. setosa
4.8,3,1.4,0.1,I. setosa
4.8,3.4,1.9,0.2,I. setosa
4.8,3.1,1.6,0.2,I. setosa
4.8,3,1.4,0.3,I. setosa
4.7,3.2,1.3,0.2,I. setosa
4.7,3.2,1.6,0.2,I. setosa
4.6,3.1,1.5,0.2,I. setosa
4.6,3.4,1.4,0.3,I. setosa
4.6,3.6,1,0.2,I. setosa
4.6,3.2,1.4,0.2,I. setosa
4.5,2.3,1.3,0.3,I. setosa
4.4,2.9,1.4,0.2,I. setosa
4.4,3,1.3,0.2,I. setosa
4.4,3.2,1.3,0.2,I. setosa
4.3,3,1.1,0.1,I. setosa
";
}
此外,您可能想要比较预期结果和实际结果:
Console.WriteLine("expected = \n{0}", expected);
Console.WriteLine("ruleText = \n{0}", ruleText);
它应该给你这样的东西:
expected =
Iris-setosa =: (2 <= 2.45)
Iris-versicolor =: (2 > 2.45) && (3 <= 1.75) && (0 <= 7.05) && (1 <= 2.85)
Iris-versicolor =: (2 > 2.45) && (3 <= 1.75) && (0 <= 7.05) && (1 > 2.85)
Iris-versicolor =: (2 > 2.45) && (3 > 1.75) && (0 <= 5.95) && (1 > 3.05)
Iris-virginica =: (2 > 2.45) && (3 <= 1.75) && (0 > 7.05)
Iris-virginica =: (2 > 2.45) && (3 > 1.75) && (0 > 5.95)
Iris-virginica =: (2 > 2.45) && (3 > 1.75) && (0 <= 5.95) && (1 <= 3.05)
ruleText =
I. virginica =: (2 > 2.45) && (3 <= 1.75) && (0 > 7.05)
I. virginica =: (2 > 2.45) && (3 > 1.75) && (0 > 5.95)
I. virginica =: (2 > 2.45) && (3 > 1.75) && (0 <= 5.95) && (1 <= 3.05)
I. versicolor =: (2 > 2.45) && (3 <= 1.75) && (0 <= 7.05) && (1 <= 2.85)
I. versicolor =: (2 > 2.45) && (3 <= 1.75) && (0 <= 7.05) && (1 > 2.85)
I. versicolor =: (2 > 2.45) && (3 > 1.75) && (0 <= 5.95) && (1 > 3.05)
I. setosa =: (2 <= 2.45)
关于c# - 如何为 Accord.NET DecisionTrees 正确提供输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607740/
我开发了一个具有基本安全性的 Spring Boot 应用程序。我有两个具有相同路径和不同 http 方法的端点。当我使用默认密码/使用 application.yml 中给出的密码包含基本安全性时,
我的代码是这样的: 或者,像这样: 如果我首先列出 webm 源,Firefox 4 会播放它,但 Firefox 3.6 也会尝试播放它(但会失败,因为它不支持 webm)。
我希望提供一个泛型类型作为类型参数而不首先将其解析为具体类型。换句话说,我正在寻找一种方法来指定从基类继承时可以使用的类型映射函数。 示例(不正确的)语法,希望比我能解释得更好: abstract c
我在 .NET 中编写了一些桌面应用程序,它们既提供了用于正常使用的前端 GUI,也提供了用于其他需求(例如扩展、调度、自动化、高级使用等)的命令行界面。命名两个可执行文件的最佳做法是什么,因为它们构
我最近在这里思考了很多关于屏幕抓取以及它可能是一项什么样的任务。所以我提出以下问题。 作为网站开发人员,您是否会公开简单的 API 以防止用户抓取屏幕,例如 JSON 结果? 然后这些结果可以实现缓存
我正在为一个项目使用 Dojo 1.9,但我不明白 dojo.provide 的正确替代方案与传统风格相比,AMD 风格。我正在阅读 this文档页面。 很明显,这就是旧语法映射到新语法的方式: 旧
我正在开发一个 Angular 应用程序。当我使用 ng serve 正常运行它时,它运行没有任何错误.但是,当我运行 ng build --prod ,它给出了以下错误。 ERROR in Ille
我有一个 Mac 应用程序。在我的 Mac 应用程序中,我的屏幕之一有一个包含文本字段的 scrollView。在同一屏幕上,我有一个需要提供打印选项的按钮。可以打印文本字段的文本。打印按钮应调用 M
我已经成功地为普通媒体文件提供媒体文件,但是当我尝试提供管理媒体文件时,我失败了。请帮我找出问题所在,因为我已经尝试解决问题几个小时但没有运气(也一直在谷歌搜索并阅读有关提供静态文件的 django
我正在尝试创建一个简单的错误处理项目,它会在收到错误(例如 404、422 或 500)后为 JSON 提供错误数据。我使用来自 this 的代码网站,但它不适合我。 我实际上有这两个类: 基本 Co
假设我有一个名为 Number 的类(class),我打算对 Number 进行大量相等比较对象。我担心通用 Number::equals(Object o) 的“开销”(类比较等...)方法。在这种
假定以下情况: 对等方A只希望将音频流发送给对等方B 对等B只希望将视频流发送给对等A 从而, 与创建报价 var sdpConstraints = { “必填”:{ 'OfferToReceiveA
因为我有一些角度,所以我想检查角度模数 360°: double angle = 0; double expectedAngle = 360; angle.Should().B
这是我的程序中构建的 monad 堆栈: type Px a = ReaderT PConf (State PState) a 其中 PConf 和 PState 是保存应用程序的配置和状态的任意数据
因为我有一些角度,所以我想检查角度模数 360°: double angle = 0; double expectedAngle = 360; angle.Should().B
我有一个小程序需要以某些权限运行,这意味着加载时会显示一条警告消息。如果用户拒绝警告消息,我想重定向到错误页面并解释发生了什么。有什么办法可以做到这一点吗? 我研究过让计时器运行并在特定时间段后重定向
从我可以从 Firebase 文档中推断出,似乎需要服务器来提供静态内容(html和 javascript),所以你需要有一台托管机器和一个静态内容服务器在某处启动并运行,或某些服务托管静态站点。 对
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 3 年前。 Improv
我的项目根目录的静态文件夹中有一个文本文件。 我想提供它,所以我创建了: @csrf_exempt def display_text(request): content = retur
我目前正在研究指针,为了进一步理解我正在尝试使用指针将两个数值数组连接成一个。代码如下所示。 #include void concat(int **pa,int **pb,int **pc) {
我是一名优秀的程序员,十分优秀!