欢迎使用Pywedge –预处理和构建基准模型的快速指南
机器学习过程涉及多个阶段,例如
数据准备阶段
了解数据
处理缺失值
处理分类变量
标准化数据
处理阶级失衡
建模阶段
分割或交叉验证数据集
选择合适的机器学习算法
检查所选算法的基准性能
微调模型
预测阶段
预测出色的测试数据
检查不足/过度拟合
上面的列表显然并不详尽,并且对每个数据集执行所有上述步骤(除非使用AutoML!)可能是不知所措。据说机器学习中80%的时间用于数据收集,清理和预处理,而20%的时间用于运行模型。
预处理块!
当我开始学习Python和数据科学时,就像每位数据科学爱好者一样,我想尝试一下机器学习模型。很快,我开始研究各种数据集。参加黑客马拉松非常高兴,并了解了机器学习的实际应用。
但是,当我想在各种类型的数据集和各种模型上的建模部分上进行更多研究时,我感到对各种数据集执行预处理步骤并运行各种基准模型非常耗时,而且花在探索建模技术上的时间更少,而我想将大量时间花在建模任务上。
当然,在这个爆炸性automl时代,完整的机器学习任务可以由automl完成。但是它给人一种建立完整的机器学习模型的感觉!
同样,当运行任何一个automl时,它会返回各种模型和性能最高的模型的预测,但是我无法从此类automl中提取清理后的数据集来进一步运行某些深度学习模型。我必须手动预处理数据并运行深度学习模型&
深度学习模型的输出可能无法与automl相提并论,因为数据已分别进行了预处理(除非已复制了确切的automl预处理步骤)
打包/库的想法到了……
皮基
Pywedge是一个pip可安装的python软件包,旨在
通过采用用户首选的预处理技术来快速进行数据预处理,并在第一步将已清理的数据集返回给用户。
在第二步中,Pywedge提供了一个具有分类摘要方法和回归摘要方法的基线类,该类可以返回十种不同的基线模型,这可以指示用户探索性能最佳的基线模型。
pywedge的目的是通过快速预处理数据来帮助用户,并正确指出给定数据集的最佳性能基线模型,以便用户可以花大量时间调整此类模型算法。
在不浪费您宝贵的时间的情况下,让我继续进行pywedge实验。
使用pywedge分类
让我们以Analytics(分析)Vidya hackathon的交叉销售分类资料集为例,
!pip安装pywedge
导入pywedge为pw
将熊猫作为pd导入
火车= pd.read_csv('https://raw.githubusercontent.com/taknev83/datasets/master/train_crosssell_classification.csv')
测试= pd.read_csv('https://raw.githubusercontent.com/taknev83/datasets/master/test_crosssell_classification.csv')
sample_submission = pd.read_csv('https://raw.githubusercontent.com/taknev83/datasets/master/sample_submission_crosssell_classification.csv')
train.info()
w
该数据集包含大约380k订单项,混合了数字列和分类列。
实例化Pre_process_data类,如下所示:
ppd = pw.Pre_process_data(train,test,c ='id',y ='Response')
Pre_process_data类采用以下参数,
火车=火车数据帧
测试=脱颖而出的测试数据帧(无目标列)
c =任何要删除的冗余列(例如ID列等,目前支持单个列删除,后续版本将提供多个列删除要求)
y =目标列名称为字符串
类型=分类/回归
如下所示在Pre_process_data类下运行dataframe_clean方法,
new_X,new_y,new_test = ppd.dataframe_clean()
dataframe_clean方法以交互方式要求用户选择以下预处理选项,
w
现有的分类余额汇总表已提供给用户信息,在这里我们可以看到分类不平衡,接下来的几步中我们将选择过采样,
要求用户选择阴极或getdummies来转换分类变量,让我们选择getdummies
在下一步中,它询问要使用哪种标准化方法,让我们选择Standardscalar
在下一步中,它询问是否要对过采样应用SMOTE,让我们选择是。
清理完成后,dataframe_clean方法将返回new_X,new_y和new_test。
将new_X,new_y和new_test分配给新变量X,y和so_test,以备将来使用。
X = new_X
y = new_y
so_test = new_test
实例化以下基线类,
blm = pw.baseline_model(X,y)
如下从baseline_model类中调用classification_summary方法,
blm.classification_summary()
分类摘要提供了十大功能重要性(使用Adaboost功能重要性计算)。
分类摘要要求用户提供测试尺寸,让我们以20%作为测试尺寸,
接下来是最酷的部分,基线模型的总结,
对于此基线模型摘要,可以观察到catboost分类器的性能很好,并且用户可以探索调整catboost分类器的超参数以获得进一步改进的结果。该超参数调整用户可以单独处理从pywedge接收到的清理数据集。
这里的一个有趣的简短观点是,如果我们运行相同的category_summary方法而不进行过采样,请查看下面的基线模型结果
准确性似乎超过80%,但是观察roc_score,所有分数都在50%左右,这表明在类不平衡的数据集中过采样的快速重要性。
哇!您一直阅读此书,非常感谢。
同样,可以使用几行代码来完成回归分析,让我不要在此博客中添加更多示例。
这些代码示例可在我的GitHub存储库中找到。
Pywedge是BETA版本,并且计划增加以下功能,
处理NLP列
处理时间序列数据集
处理股票价格的具体分析
生成良好图表的单独方法
题库