C# Can';t使用Accord.Net框架实现基本决策树

C# Can';t使用Accord.Net框架实现基本决策树,c#,visual-studio,id3,C#,Visual Studio,Id3,我正在学习如何在C#中实现决策树。我对这门学科真的很陌生,我正在使用雅阁网站上给出的例子来学习。 我的代码都是从网站上复制的,但visual studio一直告诉我: visual studio无法启动调试,因为缺少调试目标。 我的代码是: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threadi

我正在学习如何在C#中实现决策树。我对这门学科真的很陌生,我正在使用雅阁网站上给出的例子来学习。 我的代码都是从网站上复制的,但visual studio一直告诉我: visual studio无法启动调试,因为缺少调试目标。 我的代码是:

    using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Accord;
using Accord.MachineLearning.DecisionTrees;
using Accord.MachineLearning.DecisionTrees.Learning;
using Accord.Math;
using Accord.Statistics.Filters;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {


            DataTable data = new DataTable("Mitchell's Tennis Example");

            data.Columns.Add("Day", "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis");

            data.Rows.Add("D1", "Sunny", "Hot", "High", "Weak", "No");
            data.Rows.Add("D2", "Sunny", "Hot", "High", "Strong", "No");
            data.Rows.Add("D3", "Overcast", "Hot", "High", "Weak", "Yes");
            data.Rows.Add("D4", "Rain", "Mild", "High", "Weak", "Yes");
            data.Rows.Add("D5", "Rain", "Cool", "Normal", "Weak", "Yes");
            data.Rows.Add("D6", "Rain", "Cool", "Normal", "Strong", "No");
            data.Rows.Add("D7", "Overcast", "Cool", "Normal", "Strong", "Yes");
            data.Rows.Add("D8", "Sunny", "Mild", "High", "Weak", "No");
            data.Rows.Add("D9", "Sunny", "Cool", "Normal", "Weak", "Yes");
            data.Rows.Add("D10", "Rain", "Mild", "Normal", "Weak", "Yes");
            data.Rows.Add("D11", "Sunny", "Mild", "Normal", "Strong", "Yes");
            data.Rows.Add("D12", "Overcast", "Mild", "High", "Strong", "Yes");
            data.Rows.Add("D13", "Overcast", "Hot", "Normal", "Weak", "Yes");
            data.Rows.Add("D14", "Rain", "Mild", "High", "Strong", "No");

            // Create a new codification codebook to 
            // convert strings into integer symbols
            Codification codebook = new Codification(data, "Outlook", "Temperature", "Humidity", "Wind", "PlayTennis");


            // Translate our training data into integer symbols using our codebook:
            DataTable symbols = codebook.Apply(data);
            int[][] inputs = symbols.ToArray<int>("Outlook", "Temperature", "Humidity", "Wind");
            int[] outputs = symbols.ToArray<int>("PlayTennis");

            // Gather information about decision variables
            DecisionVariable[] attributes =
{
            new DecisionVariable("Outlook",     3), // 3 possible values (Sunny, overcast, rain)
            new DecisionVariable("Temperature", 3), // 3 possible values (Hot, mild, cool)  
            new DecisionVariable("Humidity",    2), // 2 possible values (High, normal)    
            new DecisionVariable("Wind",        2)  // 2 possible values (Weak, strong) 
    };

            int classCount = 2; // 2 possible output values for playing tennis: yes or no

            //Create the decision tree using the attributes and classes
            DecisionTree tree = new DecisionTree(attributes, classCount);

            // Create a new instance of the ID3 algorithm
            ID3Learning id3learning = new ID3Learning(tree);

            // Learn the training instances!
            id3learning.Run(inputs, outputs);

            string answer = codebook.Translate("PlayTennis", tree.Compute(codebook.Translate("Sunny", "Hot", "High", "Strong")));

            Console.WriteLine("Calculate for: Sunny, Hot, High, Strong");
            Console.WriteLine("Answer: " + answer);

        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统数据;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用Accord;
使用Accord.MachineLearning.DecisionTrees;
使用Accord.MachineLearning.DecisionTrees.Learning;
使用Accord.Math;
使用Accord.Statistics.Filters;
名称空间控制台EAPP1
{
班级计划
{
静态void Main(字符串[]参数)
{
DataTable数据=新的DataTable(“米切尔网球示例”);
添加(“日”、“展望”、“温度”、“湿度”、“风”、“网球”);
数据行。添加(“D1”、“晴天”、“炎热”、“高”、“弱”、“否”);
添加(“D2”、“阳光”、“炎热”、“高”、“强”、“否”);
添加(“D3”、“阴天”、“炎热”、“高”、“弱”、“是”);
添加(“D4”、“雨”、“温和”、“高”、“弱”、“是”);
添加(“D5”、“雨”、“冷”、“正常”、“弱”、“是”);
添加(“D6”、“雨”、“冷”、“正常”、“强”、“否”);
添加(“D7”、“阴天”、“凉爽”、“正常”、“强”、“是”);
添加(“D8”、“晴朗”、“温和”、“高”、“弱”、“无”);
添加(“D9”、“晴朗”、“凉爽”、“正常”、“微弱”、“是”);
添加(“D10”、“雨”、“温和”、“正常”、“弱”、“是”);
添加(“D11”、“晴朗”、“温和”、“正常”、“强烈”、“是”);
添加(“D12”、“阴天”、“温和”、“高”、“强”、“是”);
添加(“D13”、“阴”、“热”、“正常”、“弱”、“是”);
添加(“D14”、“雨”、“温和”、“高”、“强”、“否”);
//创建一个新的编目代码簿以
//将字符串转换为整数符号
编目代码本=新编目(数据,“展望”、“温度”、“湿度”、“风”、“网球”);
//使用我们的代码本将我们的训练数据转换为整数符号:
DataTable symbols=codebook.Apply(数据);
int[][]输入=符号。ToArray(“展望”、“温度”、“湿度”、“风”);
int[]输出=symbols.ToArray(“打网球”);
//收集有关决策变量的信息
DecisionVariable[]属性=
{
新决策变量(“Outlook”,3),//3个可能值(晴天、阴天、下雨)
新的决策变量(“温度”,3),//3个可能值(热、温和、冷)
新决策变量(“湿度”,2),//2个可能值(高,正常)
新决策变量(“风”,2)//2个可能值(弱、强)
};
int classCount=2;//2个可能的网球输出值:是或否
//使用属性和类创建决策树
DecisionTree=新的DecisionTree(属性、类计数);
//创建ID3算法的新实例
ID3Learning ID3Learning=新的ID3Learning(树);
//学习培训实例!
id3learning.Run(输入、输出);
string answer=codebook.Translate(“playneting”,tree.Compute(codebook.Translate(“Sunny”,“Hot”,“High”,“Strong”)));
Console.WriteLine(“计算:晴朗、炎热、高温、强烈”);
Console.WriteLine(“回答:+回答”);
}
}
}
另外,我正在使用visual studio社区2017。

来自

  • 确保项目的输出路径正确(项目>属性>生成>输出路径)
  • 进入菜单中的Build>Configuration Manager,检查主/入口项目是否已选中Build。如果没有,请检查它

  • 这似乎解决了大多数用户的问题。

    您的项目是否生成?你设置了启动项目吗?是的,它构建得很好,我已经设置了启动项目。。。但我仍然得到同样的错误,我建议你从头开始创建一个新项目,并重建它。示例代码构建和运行没有问题,只是需要替换这一行
    data.Columns.Add(“日”、“展望”、“温度”、“湿度”、“风”、“网球”)和单独调用,如下所示:
    data.Columns.Add(“Day”)
    data.Columns.Add(“Outlook”)
    data.Columns.Add(“温度”)
    data.Columns.Add(“湿度”)
    data.Columns.Add(“风”)
    data.Columns.Add(“playneting”)。您的问题与Accord.net和ID3算法没有任何关系。但这是一个一般性的问题,可能会发生在你的项目中的任何其他代码。它没有解决我的问题,但无论如何,谢谢