实战|利用机器学习解决一个多分类任务(下)

简介: 对于机器学习而言,如果你已经大致了解了相关算法的原理、理论推导,你也不是大家口中刚入门的小白了。接下来你需要将自己所学的知识利用起来,最好的方式应该就是独立完成几个项目实战,项目难度入门级即可,因为重点是帮助你了解一个项目的流程,比如缺失值和异常值的处理、特征降维、变量转换等等。


而剩下的几个类别型变量皆为无序变量,可以将其转化为哑变量,再进一步转化为虚拟变量。相比于sklearn中的API,pandas自带的方法看起来更加简洁。


#哑变量编码
dummy_df = pd.get_dummies(data1.iloc[:,6:10])

101.jpg

如果你感觉这种方式简单,并没有懂哑变量编码的意思和过程,可以试着了解一下下面这个函数,同样是实现哑变量编码。

def dummy_code(var):
    #获取特征中所有变量
    var_unique = var.unique()
    #新建一个DataFrame
    dummy = pd.DataFrame()
    for val in var_unique:
        #利用一个布尔型数组存储编码后的变量
        bo = (val==var)
        #命名,并将True转为1,False转为0
        dummy[var.name+"_"+str(val)] = bo.astype(int)
    return dummy

将哑变量进一步转化为虚拟变量合并至数据集中,代码如下:

#每个特征删去一个类别,得到虚拟变量
dummy_df1 = dummy_df.drop(['land_condition_S','foundation_type_O','roof_type_H','ground_floor_type_T'],axis = 1)
#删去原特征,合并虚拟变量
data1 = data1.drop(['land_condition','foundation_type','roof_type','ground_floor_type'],axis = 1)
data1 = pd.concat([data1,dummy_df1],axis = 1)

可能很多伙伴不太了解为什么虚拟变量可以这样转换,虚拟变量与哑变量相比,减少了特征的维度,本质是类似的,以"roof_type"这一特征举例,经过哑变量转换形成三个新特征:["roof_type_H","roof_type_L","roof_type_R"],如果在"roof_type"为"R"的样本,在哑变量的表达方式应该是[0,0,1],但是如果从哑变量中删去"roof_type_R"这一特征,表达方式就可以变成[0,0],通过唯一性就可以利用前两个特征推出第三个特征的值,所以减少了不必要的特征以实现降维。当然这里还可以做一下方差过滤、相关性分析等操作进一步实现特征降维,各位在实操的时候可以自己试一下。

建模工作

前面说过了这个是一个多元分类项目,所以在建模的时候可以有两种选择,一是利用多元分类器,比如随机森林、朴素贝叶斯,二就是利用二元分类器实现多元分类任务,比如逻辑回归、SVM。后面文章会写一篇关于二元分类器实现多元分类的文章,本文就集中于多元分类器的实现,主要用到的两个分类器是随机森林和LGBM。一般建模的流程大致是在训练集上切分训练集和测试集,有的数据需要标准化处理,然后训练模型,利用测试集进行预测,获取模型的准确率或其他衡量模型好坏的指标,下面以随机森林分类器模拟一下该流程。首先进行数据切分,可以选择控制训练集和测试集的比例:

from sklearn.model_selection import train_test_split
features = data2.iloc[:,0:-1].values
label = data2.iloc[:,-1].values
X_train,X_test,y_train,y_test = train_test_split(features,label,test_size = 0.3)

这里介绍一下可以减少代码量的管道流,如果正常来说,我们可能要分别实例化标准化和PCA的API,然后再传入训练和测试集,这些操作可以利用管道流封装到一起,让代码看起来更加简洁。

from sklearn.ensemble import RandomForestClassifier
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline,Pipeline
#管道流简化工作流
pipe_rf = make_pipeline(StandardScaler(),
                        PCA(n_components=10),
                        RandomForestClassifier())
pipe_rf.fit(X_train,y_train)
#得到每个类别的概率
pred_y_rf = pipe_rf.predict_prob(X_test)

利用predict_prob计算出标签变量得到每个类别的概率,然后利用索引排序可以得到概率最大的两个类别:

pred_df = pd.DataFrame(data=pred_y_rf.argsort()[:, -2:][:, ::-1], columns=['y1', 'y2'])
pred_df.to_csv("eq_submission.csv",index=False)

由于数据量比较大,调参比较费时,在没有调参的情况下,随机森林模型的概率大致为68%,LGBM模型的准确率大致为70%,准确率并不是太好,除准确率外还可以通过查全率、查准率、F1-score衡量一下模型的好坏,上文大体上提供了一个建模前及建模的思路而已,伙伴们可以利用自己的思路,再加上调参应该会得到一个不错的模型。

102.jpg


这幅图是关于特征重要度的饼图,可以根据饼图再调节特征,其中area占比是比最大的,然后"distict_id"占比也是不小的,但是上文关系矩阵中与标签变量的相关性又很小,所以分析要相互结合、更加全面一些才好。

说在最后

上面的一系列操作都是为了最后的模型,但如果作为一个竞赛,你需要提交一份文件,而这份文件从何来?竞赛会给出一个不含标签变量的测试集!注意与测试集中分割出的测试集不同。我们同样需要对测试集做一些数据处理,操作和训练集类似,然后将训练出的模型应用在测试集上,会得出最后的结果保存成一个新的csv文件,这就是你最后需要提交的文件啦。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
本文探讨了在深度学习和机器学习中针对非时间序列的回归任务的多种改进策略,包括数据预处理、数据集增强、特征选择、模型选择、模型正则化与泛化、优化器选择、学习率调整、超参数调优以及性能评估与模型解释,旨在提升模型的性能和可解释性。
46 1
深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?
|
23天前
|
JSON 算法 数据可视化
5.3 目标检测YOLOv3实战:叶病虫害检测——损失函数、模型训练
这篇文章详细介绍了使用YOLOv3模型进行叶病虫害检测时的损失函数配置、模型训练过程、评估方法以及模型预测步骤,并提供了相应的代码实现和可能的改进方案。
|
6天前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。
|
5天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
14 1
|
15天前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
21天前
|
机器学习/深度学习 数据采集 TensorFlow
使用TensorFlow进行模型训练:一次实战探索
【8月更文挑战第22天】本文通过实战案例详解使用TensorFlow进行模型训练的过程。首先确保已安装TensorFlow,接着预处理数据,包括加载、增强及归一化。然后利用`tf.keras`构建卷积神经网络模型,并配置训练参数。最后通过回调机制训练模型,并对模型性能进行评估。此流程为机器学习项目提供了一个实用指南。
|
21天前
|
监控 测试技术
在模型训练中,如何衡量和平衡通用性和特定任务需求的重要性?
在模型训练中,如何衡量和平衡通用性和特定任务需求的重要性?
|
26天前
|
机器学习/深度学习 人工智能 算法
【人工智能】机器学习、分类问题和逻辑回归的基本概念、步骤、特点以及多分类问题的处理方法
机器学习是人工智能的一个核心分支,它专注于开发算法,使计算机系统能够自动地从数据中学习并改进其性能,而无需进行明确的编程。这些算法能够识别数据中的模式,并利用这些模式来做出预测或决策。机器学习的主要应用领域包括自然语言处理、计算机视觉、推荐系统、金融预测、医疗诊断等。
19 1
|
1月前
|
机器学习/深度学习 人工智能 算法
掌握机器学习:从基础到实战的全路径导览
在人工智能的浪潮中,机器学习如同一艘航船,引领我们探索数据的海洋。本文是一篇深入浅出的技术分享,旨在为初学者和进阶者提供一条清晰的学习路线图。我们将一起启航,从理论的灯塔到实践的港湾,逐步揭开机器学习的神秘面纱,让每一位旅者都能在这场智能革命中找到自己的位置。
|
29天前
|
机器学习/深度学习 人工智能 关系型数据库
【机器学习】Qwen2大模型原理、训练及推理部署实战
【机器学习】Qwen2大模型原理、训练及推理部署实战
228 0
【机器学习】Qwen2大模型原理、训练及推理部署实战