zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【LeetCode】Validate Binary Search Tree
    【LeetCode】Search in Rotated Sorted Array II(转)
    【LeetCode】Search in Rotated Sorted Array
    【LeetCode】Set Matrix Zeroes
    【LeetCode】Sqrt(x) (转载)
    【LeetCode】Integer to Roman
    贪心算法
    【LeetCode】Best Time to Buy and Sell Stock III
    【LeetCode】Best Time to Buy and Sell Stock II
    CentOS 6 上安装 pip、setuptools
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/11570992.html
Copyright © 2011-2022 走看看