弥合其他机器学习和深度学习工具之间的差距,使可靠的事后分析成为可能。
awtest的Python项目详细描述
gaplearn
gaplearn在其他机器学习和深度学习工具之间架起了桥梁。所有模型都可以传递给下面的函数,而不管它们是基于什么框架构建的(scikit learn、tensorflow、xgboost,甚至是好的ole numpy)。
我的第一个软件包目标是通过使对超参数和特征选择过程的健壮的死后分析成为可能,使经常是黑箱型的模型训练过程透明化。下面的功能还进一步自动化了一些过程,同时仍然让用户完全控制结果。
许多功能正在开发中。不久将添加单元测试和完整的文档。
源代码位于GitHub
安装
pip install gaplearn
请参阅PyPI上的最新版本
子模块
Cvcv
子模块将拥有这些类(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工具包学习模型;如果自定义模型类型,则使用您传递的模型
- 拟合函数:(函数)将用于训练模型的函数;函数必须接受参数
model
、X
和y
;如果未设置此值,backwards_elimination
将尝试使用模型的fit
方法 - predict_function:(函数)将用于对模型进行预测的函数;函数必须接受参数
model
,和X
;如果未设置此值,backwards_elimination
将尝试使用模型的predict
方法 - score_function:(function)用于对模型进行评分并确定特征排列重要性的函数;该函数必须接受参数
y
和preds
;如果未设置此值,则将使用精度 - 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查询分块并在多个线程上处理它们。
推荐PyPI第三方库
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工具包学习模型;如果自定义模型类型,则使用您传递的模型
- 拟合函数:(函数)将用于训练模型的函数;函数必须接受参数
model
、X
和y
;如果未设置此值,backwards_elimination
将尝试使用模型的fit
方法 - predict_function:(函数)将用于对模型进行预测的函数;函数必须接受参数
model
,和X
;如果未设置此值,backwards_elimination
将尝试使用模型的predict
方法 - score_function:(function)用于对模型进行评分并确定特征排列重要性的函数;该函数必须接受参数
y
和preds
;如果未设置此值,则将使用精度 - 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查询分块并在多个线程上处理它们。