Lv.的博客

linux xlearn安装

 

 xlearn的优势:

  • 1.通用性好,包括主流的算法(lr, fm, ffm 等),用户不用再切换于不同软件之间
  • 2.性能好,测试 xLearn 可以比 libfm 快13倍,比 libffm 和 liblinear 快5倍
  • 3.易用性和灵活性,xLearn 提供简单的 python 接口,并且集合了机器学习比赛中许多有用的功能
  • 4.可扩展性好。xLearn 提供 out-of-core 计算,利用外存计算可以在单机处理 1TB 数据
    image.png

    二、xlearn安装:巨简单

    目前xlearn只支持,Linux和Mac,Windows用户可能要等等了。以下操作在Ubuntu系统进行。

    2.1安装GCC(或Clang)和CMake:

    建议安装GCC,Clang下载文件大,而且安装过程出现问题,便直接安装的GCC。

    安装gcc

    sudo apt-get install build-essential

    测试是否安装成功:
    gcc --version

    出现以下界面代表安装成功:

    gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
    Copyright (C) 2015 Free Software Foundation, Inc.

    安装cmake

    我实在不明白为什么有些教程要下载文件,等等骚操作,那么麻烦。一行搞定。

    sudo apt-get install cmake

    测试是否安装成功:
    cmake --version

    出现以下界面代表安装成功:

    cmake version 3.5.1
    CMake suite maintained and supported by Kitware (kitware.com/cmake).

    2.2 安装xlearn:

    sudo pip install xlearn

    这个地方注意下,如果安装了Anaconda,确认xlearn是否安装在你所运行的Anaconda的虚拟环境中。找到安装包的位置可以查看下,如果显示安装成功,却不能import xlearn,八成是这个问题。

    三、xlearn实战:

    简单实战,每一行都有详细的注释。主要是简单学会使用模型,并没有对特征过多分析。

    3.1 快速入门

    import xlearn as xl
    ffm_model = xl.create_ffm()
    # 训练集
    ffm_model.setTrain("small_train.txt")
    # 设置验证集
    ffm_model.setValidate("small_test.txt")
    
    # 设置参数
    param = {'task':'binary','lr':0.2,'lambda':0.002}
    
    # 设置不同的评价指标
    # 分类问题:acc(Accuracy);prec(precision);f1(f1 score);auc(AUC score)
    param1 = {'task':'binary','lr':0.2,'lambda':0.002,'metric':'rmse'}
    # 回归问题:mae,mape,rmsd(RMSE)
    param2 = {'task':'binary','lr':0.2,'lambda':0.002, 'metric':'rmse'}
    
    # 训练模型
    ffm_model.fit(param, "model.out")
    
    # 测试集
    ffm_model.setTest("small_test.txt")
    # 输出样本预测概率,范围(-1,1)
    ffm_model.predict("model.out","output.txt")
    
    # 设置预测概率范围为(0,1)
    ffm_model.setSigmoid()
    ffm_model.predict("model.out","output.txt")
    
    # 转化为二分类(0,1),没有阈值吗???
    ffm_model.setSign()
    ffm_model.predict("model.out","output.txt")
    
    # 模型保存为txt格式,
    ffm_model.setTXTModel("model.txt")
     

    3.2 更进一步:

    # 选择不同的机器学习算法
    # FM,LR可以使用csv和libsvm格式,FFM应该接受libffm格式
    fm_model = xl.create_fm()
    lr_model = xl.create_linear()
    
    # 设置交叉验证(Cross Validation)
    ffm_model = xl.create_ffm()
    ffm_model.setTrain("train.txt")
    param = {'task':'binary','lr':0.2,'lambda':0.002,'fold':3}
    # 默认5-folds,可通过param设置
    ffm_model.cv(param)
    
    # 设置优化算法:SGD,AdaGrad,Ftrl(Follow-the-Regularized-Leader)
    param3 = {'task':'binary','lr':0.002,'lambda':0.01,'opt':'ftrl'}
    # Ftrl的额外参数
    param = {'alpha':0.002,'beta':0.8,'lambda_1':0.001,'lambda_2':1.0}
    # 如何自动进行超参数训练
    
    # 设置Epoch数量
    param4 = {'task':'bianry','lr':0.2,'lambda':0.01,'epoch':3}
    # Early stopping,设置提前停止窗口
    param5 = {'task':'binary','lr':0.2,'lambda':0.002,'epoch':10,'stop_window':3}
    
    # Lock-Free 训练,可以充分利用多核来加速训练,但是结果具有不确定性,默认开启
    ffm_model.disableLockFree()  # disable lock-free training
    
    # Instance-wise Normalization,对CTR预测问题,非常有效,但是有损性能
    ffm_model.disableNorm()    # disable Instance-wise Normalization
    
    # Quite Training 提高训练速度,不计算评指标,只训练模型
    ffm_model.setQuiet()
     

    3.3 与Sklearn相结合

    建议利用sklearn接口,众多sklearn的功能都能使用。

    # 调用Sklearn的API
    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    
    iris_data = load_iris()
    X = iris_data['data']
    y = iris_data['target' == 2]
    
    X_train,X_test,y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=0)
    linear_model = xl.LRModel(task='binary',init=0.1,epoch=10,lr=0.1,reg_lambda=1.0,opt='sgd')
    
    linear_model.fit(X_train,y_train,eval_set=[X_test, y_test],is_lock_free=False)
    
    y_pred = linear_model.predict(X_test)
    
    
    
    版权声明:本文为CSDN博主「linxid」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/linxid/article/details/80382569
    
    posted @   Avatarx  阅读(660)  评论(0编辑  收藏  举报
    (评论功能已被禁用)
    编辑推荐:
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    · 基于Microsoft.Extensions.AI核心库实现RAG应用
    · Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
    · 开发者必知的日志记录最佳实践
    · SQL Server 2025 AI相关能力初探
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · 震惊!C++程序真的从main开始吗?99%的程序员都答错了
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    历史上的今天:
    2015-09-23 mysql中enum的用法
    2015-09-23 Hack工具
    2015-09-23 qt 与mysql建立交互式连接
    2015-09-23 mysql 交互式连接和非交互式连接
    2015-09-23 mysql wait_timeout和interactive_timeout总结
    2015-09-23 mysql 超时设置
    点击右上角即可分享
    微信分享提示