比Keras更好用的机器学习“模型包”:无需预处理,0代码上手做模型-1

    科技2022-07-17  111

    做机器学习模型时,只是融合各种算法,就已经用光了脑细胞?

    又或者觉得,数据预处理就是在“浪费时间”?

    一位毕业于哥廷根大学、做机器学习的小哥也发现了这个问题:原本只是想设计个模型,结果“实现比设计还麻烦”。

    于是他自己动手做了个项目igel (德语中意为“刺猬”,但也是Init、Generate、Evaluate Machine Learning的缩写),无需编写任何多余代码,就能设计出想要的模型。

     

    也就是说,用户只需要知道各种机器学习模型的原理,但不需要再自己动手写代码。

    相比于Keras,这个项目进一步简化了预处理、输入输出的工作,就像“模型包”一样简便。

    作者用了两周的时间,做出了项目的1.0版本,一天以内已有842 Star,目前还在快速上涨中。

    由于只是1.0版本,作者表示,这个项目仍然有很大的完善空间。

    但就目前的功能来说,已经足够进行基本的机器学习建模了。

    作者建立这个项目的初衷,是希望为所有人提供机器学习模型。

    无论是技术向工程师、还是非技术向的其他行业用户,都能使用机器模型让自己的工作更简单。

    说白了,就是将机器学习变成一个“自动化”的过程,而他也这么设计了。

    项目igel包含了当前最新的所有机器学习模型(回归、分类、聚类),而且作者表示,项目还在持续更新中。

     

    也就是说,后续如果还有更新的机器学习模型,也会再加进项目。

    模型目前支持的功能有以下几种:

    支持所有最新的机器学习模型(甚至是预览模型)

    支持不同的数据预处理方法

    在编写配置时提供灵活性和数据控制

    支持交叉验证

    支持yaml和json格式

    支持不同的sklearn指标以进行回归,分类和聚类

    支持多输出/多目标回归和分类

    支持多处理并行模型构建

    可以看出,作者为了偷懒让机器学习生产变得更简洁,也是操碎了心。

    如果要上手的话,也非常简便。

    与其他程序一样,作者为这个程序提供了“帮助”菜单,只需要输入“igel -h” (或igel -help),就能了解它的使用方法。

     

    学习完使用方法后,就可以开始创建配置文件了,无论是yaml还是json格式,都ok。

    如果你是个“懒癌患者” (像作者一样),可以使用“igel init”来初始化。

    例如,想做个判断“是否生病”功能的配置文件:

    第一步,选择功能、模型、目标:igel init -type “classification” -model “NeuralNetwork” -target “sick”

    第二步,初始化:igel init

    那么,程序就会给你生成一份配置文件,根据需要进行修改。

     

    在那之后,就是选择具体的算法参数、并提供你所选的数据集了。

    例如,想用随机森林处理数据,那么,只需要提供参数给系统(以及数据集、配置文件路径),它就会帮你训练:

    此外,还可以对模型/预训练模型进行评估:

    感觉不错?生成预测模型:

    直接用起来:

    简单6步,机器模型(预览模型)就已经生成了,非常方便。

    此外,作者也非常乐意采纳各个网友的意见。

    例如,一个网友指出,如果能用交叉验证进行超参数搜索/调整,那么会是个很好的改进,而作者本人也立即采纳了这个建议。

    不过,也有网友表示,“让一切程序自动化”是没有意义的。

    毕竟作者已经声明,项目是建立在scikit-learn的基础上的。但后者同样几行代码就能做机器学习,那么scikit-learn和这个项目有什么区别?

    作者对此回应称,最大的区别在于,相比于编写代码,这个项目旨在以更“可读”的方式设计想做的模型。

    有网友认可这样的观点,毕竟对于许多做生产的机器学习工程师来说,“任何不需要做的编程工作”都是没有意义的,是在“浪费时间和金钱”。

    对于这个项目,更多的网友表示了支持,并希望看见他的新功能。

    对这个机器学习项目感兴趣的小伙伴,可以通过下方传送门查看~

     

    Nidhal Baccouri,于今年4月在德国哥廷根大学取得硕士学位,研究方向是软件、控制工程和人工智能。

    目前,Nidhal Baccouri在汽车行业工作,研究方向是数字双胞胎技术,会同时应用人工智能和物联网的知识。业余时间,他喜欢做做项目,尤其是与AI和Python相关的项目。

    道翰天琼CiGril机器人API

    道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:

    在平台注册账号登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。

    开始接入

    请求地址:http://www.weilaitec.com/cigirlrobot.cgr

    请求方式:post

    请求参数:

    参数

    类型

    默认值

    描述

    userid  

    String  

    平台注册账号

    appid  

    String  

    平台创建的应用id

    key  

    String  

    平台应用生成的秘钥

    msg  

    String  

    ""

    用户端消息内容

    ip  

    String  

    ""

    客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。

     

    接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552 注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。

    示例代码JAVA:

    import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class apitest {     /**      * Get请求,获得返回数据      * @param urlStr      * @return      */     private static String opUrl(String urlStr)     {                 URL url = null;         HttpURLConnection conn = null;         InputStream is = null;         ByteArrayOutputStream baos = null;         try         {             url = new URL(urlStr);             conn = (HttpURLConnection) url.openConnection();             conn.setReadTimeout(5 * 10000);             conn.setConnectTimeout(5 * 10000);             conn.setRequestMethod("POST");             if (conn.getResponseCode() == 200)             {                 is = conn.getInputStream();                 baos = new ByteArrayOutputStream();                 int len = -1;                 byte[] buf = new byte[128];                 while ((len = is.read(buf)) != -1)                 {                     baos.write(buf, 0, len);                 }                 baos.flush();                 String result = baos.toString();                 return result;             } else             {                 throw new Exception("服务器连接错误!");             }         } catch (Exception e)         {             e.printStackTrace();         } finally         {             try             {                 if (is != null)                     is.close();             } catch (IOException e)             {                 e.printStackTrace();             }             try             {                 if (baos != null)                     baos.close();             } catch (IOException e)             {                 e.printStackTrace();             }             conn.disconnect();         }         return "";     }               public static void main(String args []){                     //msg参数就是传输过去的对话内容。                         System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));                  } }

     

    Processed: 0.010, SQL: 8