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

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 Rest DSL路由无法启动路由,因为同一端点不允许有多个使用者   jvm有没有像JConsole或VisualVM这样的工具可以告诉我“类、对象、引用变量在java中存储在哪里?”   java为什么我的列表中的所有元素看起来都一样?   java运行时。运行shell脚本的exec无法打开文件   JPopupMenu的JMenuItem的java热键   会话在Java中被覆盖   如何在java中去除字符串中的尖锐重音?   java Mockito监视一个接口,模拟它的默认方法,获取NullPointerException   javascript如何在jquery中禁用同一时间选择   将数组列表附加到现有CSV文件,但它会附加并清除存储在Java文件中的以前的数据   java从我的jar中访问pdf文件   java Sonar issue参数必须为非Null,但标记为可为Null   java Salesforce流式API:在网络故障之后和重新订阅之前获取事件   在Java 1.8.0_65上运行Play2.0应用程序时出现playframework错误   java为什么字母的ASCII由方法自动转换。toCharArray()?   java如何知道JDialog是否关闭?   java向服务器发送POST请求,服务器的响应为null,启动   java如何设置JTable中特定单元格的值?   ImagePlus中的java保存问题