弥合其他机器学习和深度学习工具之间的差距,使可靠的事后分析成为可能。

awtest的Python项目详细描述


gaplearn

gaplearn在其他机器学习和深度学习工具之间架起了桥梁。所有模型都可以传递给下面的函数,而不管它们是基于什么框架构建的(scikit learn、tensorflow、xgboost,甚至是好的ole numpy)。

我的第一个软件包目标是通过使对超参数和特征选择过程的健壮的死后分析成为可能,使经常是黑箱型的模型训练过程透明化。下面的功能还进一步自动化了一些过程,同时仍然让用户完全控制结果。

许多功能正在开发中。不久将添加单元测试和完整的文档。

源代码位于GitHub

安装

pip install gaplearn

请参阅PyPI上的最新版本

子模块

Cv

cv子模块将拥有这些类(sfs已发布):

sfs

说明:

  • 这是一个顺序特征选择器,使您能够对任何模型执行向后消除(而不仅仅是线性回归)。
  • 在每个步骤中,选择具有最低置换重要性的特征进行移除。默认情况下,排列重要性的度量是准确性的降低,但用户可以通过任何自定义的评分功能。

路上的改进:

  • 添加正向选择和所有子集测试
  • 为评估功能排列的重要性添加更多内置评分功能
  • 创建自定义排列计分方法,将eli5作为依赖项删除
  • 使用户能够获取符合特定条件的功能集(“有N个功能”、“有分数”>;x”)
方法

向后消除(x,y,model='logit',params={},fit_function=none,predict_function=none,score_function=none,score_name='accurity',cols=[],verbose=0)

  • 反向消除
  • params:
    • x:(数据帧或矩阵)具有自变量
    • y:(iterable)因变量对应值
    • params:(dict)模型的参数集
    • 模型:(str或自定义模型类型)如果str('logit'或'rfc'),则使用相应的sci工具包学习模型;如果自定义模型类型,则使用您传递的模型
    • 拟合函数:(函数)将用于训练模型的函数;函数必须接受参数modelXy;如果未设置此值,backwards_elimination将尝试使用模型的fit方法
    • predict_function:(函数)将用于对模型进行预测的函数;函数必须接受参数model,和X;如果未设置此值,backwards_elimination将尝试使用模型的predict方法
    • score_function:(function)用于对模型进行评分并确定特征排列重要性的函数;该函数必须接受参数ypreds;如果未设置此值,则将使用精度
    • score-name:(str)默认情况下由score_function;'accurity'计算的分数的名称

示例:

importpandasaspdfromgaplearn.cvimportsfs#### Perform a backwards elimination with sci-kit learn's random forest model ####X=pd.read_csv('X_classification.csv')y=pd.read_csv('y_classification.csv')fs_rfc=sfs()print('The backwards elimination has been run: {}'.format(fs_rfc.be_complete))fs_rfc.backwards_elimination(X,y,model='rfc',params={'n_jobs':-1})# Get the step-by-step summarysummary_rfc=fs_rfc.get_summary_be()# Alternatively, `summary_rfc = fs_rfc.summary_be`# Get the predictions and true values for each observationresults_rfc=fs_rfc.get_results_be()# Alternatively, `results_rfc = fs_rfc.results_be# Get the features used in the analysisfeatures_rfc=fs_rfc.features_be# Alternatives, `sorted(list(results_rfc['feature to remove']))# Identify which feature set can achieve at least 85% accuracy with the smallest number of featuressummary_rfc[summary_rfc['overall accuracy']>.85]#### Perform a more complex backwards elimination with sci-kit learn's naive bayes model ####fromsklearn.linear_modelimportSGDRegressormodel_sgd=SGDRegressor(loss='modified_huber',penalty='elasticnet')X=pd.read_csv('X_regression.csv')y=pd.read_csv('y_regression.csv')fs_nb=sfs()defmse(y,preds):score=sum([(preds[i]-y[i])**2foriinrange(y.shape[0])])/y.shape[0]returnscoredefarbitrary_prediction(model,X):preds=model.predict(X)+1# arbitrarily deciding to add 1 to the prediction (realistically, this would be a wrapper for model that don't have a `fit` method)returnpredsfs_nb.backwards_elimination(X,y,model=model_sgd,predict_function=arbitrary_prediction,score_function=mse)# Get the step-by-step summarysummary_nb=fs_nb.get_summary_be()# Alternatively, `summary = fs_nb.summary_be`# Get the predictions and true values for each observationresults_nb=fs_nb.get_results_be()# Alternatively, `results = fs_nb.results_be# Get the features used in the analysisfeatures_nb=fs_nb.features_be# Alternatives, `sorted(list(results['feature to remove']))

参数搜索群集(正在开发中)

说明:

  • 这是对聚类算法的超参数网格/随机搜索
  • 与其他网格/随机搜索算法不同,此算法使您能够根据每个参数集的观察结果获取观察结果,以便可以对网格/随机搜索进行深入的事后分析。

参数搜索(正在开发中)

说明:

  • 这是回归算法和分类算法的超参数网格/随机搜索
  • 与其他网格/随机搜索算法不同ITHMS,这一个使您能够通过每个参数集的观察结果获得观察结果,这样您就可以对网格/随机搜索进行深入的事后分析。

数据引擎

data_eng子模块将拥有这些类(sfs已发布):

分布式SQL(开发中)

说明:

  • 这允许用户将多参数sql查询分块并在多个线程上处理它们。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何告诉上下文。搜索(…)。hasMore()返回false,而不是抛出PartialResultException   java SeekBar RGB选择器不断停止   java使用propertyplaceholder处理jar中的属性文件   java使用Javax注释和Hibernate处理三元关系   java为什么我的位集大小为0?   java与Xloggc一起使用相对路径   java无法单击ArrayList项   java Apache Camel jms inOut bean绑定返回类型   java活动不起作用   java如何在代码中确定Android设备的纹理内存限制?   java Wicket AjaxSelfUpdatengTimerBehavior在使用2个浏览器标记打开时刷新整个页面   java如何使用swingworker从一个类到另一个类使用按钮   nio Azure通知中心java。网ConnectException:连接超时:无进一步信息   java Soap客户端:SAAJ0514无法从给定源创建信封,因为根元素未命名为信封   无法访问对象子类的变量?(Java/Android)   java需要BlueJ帮助:方法调用数组   linux您可以使用Applet Java运行shell脚本吗?   java startActivity不工作2   spring boot如何在itext pdf java中动态更改水印值