民大小硕士 2023-04-08 10:16 采纳率: 50%
浏览 9

C# 数据挖掘中决策树c4.5挖掘

img

想问一下(1)C#实现C4.5决策树挖掘后,其结果中的错误与预测分别表示啥?
(2)C4.5决策树挖掘中结果是不是剪枝前错误率和剪枝后的错误率都高,他的最终预测效果就好,预测的准确率就高?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-08 12:09
    关注
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7777853
    • 除此之外, 这篇博客: 推荐系统-基于物品的协同过滤推荐算法完整实现(从原始数据到推荐物品-C#版)中的 4、往数据库随生成成20万条购买记录(数据可重复,代表多次购买),1万用户量、1万物品量。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 在这个数据量下可以看到在物品量增加的情况下,效率很慢。

      所以我写的这个算法实现还需要进一步优化。

       

      更新:

      由于这个是c#的,不过其实不管什么实现语言,只要知道思路就行,推荐大家去看一下java版的apache开源的推荐系统:mahout。但是还是推荐大家去看一下。不过博主也还一直没看的。

      近期有很多人联系我说要源码,其实源码在这个里面已经都写了。少量的一些不重要的我就没放着上面。关于GlobalFunAndVar这个类是我自定义的一个全局类,在这里面就只是用到统计代码运行时间和连接数据库执行sql语句。OutPutArray这个方法是自定义的一个输出二维数组的方法。代码如下:

             /// <summary>
             /// 输出指定的二维数组
             /// </summary>
             /// <param name="array"></param>
             public void OutPutArray<T>(T[,] array)
             {
                 bool isDouble = false;
                 if (array[0, 0] is double)
                     isDouble = true;
                 int len1 = array.GetLength(0);
                 int len2 = array.GetLength(1);
                 for (int i = 0; i < len1; i++)
                 {
                     for (int j = 0; j < len2; j++)
                     {
                   
                         //if (j >= i)
                         switch (isDouble)
                         {
                             case false:
                                 Console.Write(array[i, j] + "    ");
                                 break;
      
                             case true:
                                 if (array[i, j].ToString().Length == 1)
                                     Console.Write(array[i, j] + ".00    ");
                                 else
                                     Console.Write(array[i, j] + "    ");
                                 break;
                         }
                         /*
                         else
                             Console.Write(array[i, j] + "    ");
                             */
                     }
                     Console.WriteLine();
                 }
      
             }

      191221更新(重大更新): 修复执行错误,并给出一个Demo使用样例代码,大家请重新重新下载dll,并可以参考样例代码来进行测试使用。

      191108更新:由于我看有人需要,我把这个最终的推荐算法以及一些辅助方法封装成了一个dll,大家只需引入这个dll就可以。

      点击进入b0c0.com下载

      xml文件为注释,因为只引入dll的话,在vs中调用dll中的方法是没有注释说明的,只需把这个注释xml和dll放在同一目录(dll和xml文件名必须相同!),vs直接引入dll就能显示注释。

      方法说明:

      一共有两个类接口调用:GlobalFunAndVar(辅助通用类)、RecommendBaseGood(基于物品的推荐接口)

      RecommendBaseGood:

      /// <summary>
      /// 构造方法(数据初始化)
      /// </summary>
      /// <param name="dataTable">
      /// 第1列为userId 用户id,
      /// 第2列为goodId 物品id,
      /// 第3列为rating 评分,
      /// </param>
      /// <param name="isDeBug">是否打开调试(只用于输出构建的矩阵结果以及统计运行时间)</param>
      public RecommendBaseGood(DataTable dataTable, bool isDeBug);
      
      /// <summary>
      /// 为某个具体用户计算预测兴趣度
      /// </summary>
      /// <param name="user">用户id</param>
      /// <returns>key:物品id,value:物品推荐度</returns>
      public Dictionary<int, double> Get_SimilarityByUser(int user);
      
      /// <summary>
      /// 为所有用户计算预测兴趣度
      /// </summary>
      /// <returns>key:用户id,value:(key:物品id,推荐度) </returns>
      public Dictionary<int, Dictionary<int, double>> Get_SimilarityAllUser()

      GlobalFunAndVar:

      /// <summary>
      /// 获得指定的MethodBase对象
      /// </summary>
      /// <param name="i">指定是属于谁的的方法</param>
      /// <returns></returns>
      public MethodBase getMethodBase(int i)
      
      /// <summary>
      /// 监视代码运行时间开始
      /// </summary>
      public void stopwatchBegin()
      
      /// <summary>
      /// 监视代码运行时间结束
      /// </summary>
      public void stopwatchEnd()
      
      /// <summary>
      /// 指定的sql查询并填充到DataSet返回
      /// </summary>
      /// <param name="sql">sql语句</param>
      /// <param name="connection">SqlConnection</param>
      /// <returns></returns>
      public DataSet SqlDataAdapDS(string sql, SqlConnection connection)
    • 您还可以看一下 韦语洋(Lccee)老师的一机一码加密、被破解自动销毁随时授权回收升级系列视频课程课程中的 反编译案例,获取C#源代码小节, 巩固相关知识点
    评论

报告相同问题?

问题事件

  • 创建了问题 4月8日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏