任务2.1:数据分析与可视化
-
字段x1至x8为用户相关的属性,为匿名处理字段。添加代码对这些数据字段的取值分析,那些字段为数值类型?那些字段为类别类型?
-
查看数据类型我使用的是dtypes查看字段类型,代码如下:
-
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 读取训练集和测试集文件 train_data = pd.read_csv('用户新增预测挑战赛公开数据/train.csv') test_data = pd.read_csv('用户新增预测挑战赛公开数据/test.csv') #查看数据类型 train_data.dtypes
同时也能使用这个代码来查看数值类型
train_data.select_dtypes(include=['number']).columns
任务2.2:模型交叉验证
-
DecisionTreeClassifier这个模型最好
-
原因:
-
数据集的特点:DecisionTreeClassifier在处理分类问题时,可以自动选择特征并进行剪枝,形成一个最优决策树。如果数据集中存在一些特征之间的关系较强,那么决策树模型可以很好地捕捉到这些关系,从而获得更好的分类性能。而对于其他模型,例如SGDClassifier(支持向量机)和MultinomialNB(朴素贝叶斯),它们在处理这类问题时可能没有决策树模型表现好。RandomForestClassifier虽然也是基于树的模型,但它是基于多个随机子集训练得到的,因此可能不如单个决策树模型的效果。
-
模型的复杂度:DecisionTreeClassifier的复杂度相对较低,它通过一颗决策树来进行分类预测。而其他模型,如SGDClassifier(支持向量机)和MultinomialNB(朴素贝叶斯)可能需要更多的参数调整和计算资源。RandomForestClassifier虽然也是基于树的模型,但它的复杂度相对较高,因为它涉及到多个随机子集。
-
训练数据量:如果训练数据量较大,DecisionTreeClassifier通常会表现得更好,因为它可以更好地学习到数据集中的特征关系。而对于其他模型,如SGDClassifier(支持向量机)和MultinomialNB(朴素贝叶斯),它们在训练数据量较小的情况下可能表现得更好。
-
特征选择:在分类问题中,特征选择是一个重要的步骤。DecisionTreeClassifier在构建树的过程中,会自动进行特征选择。这意味着它可以专注于对分类任务最有用的特征,从而提高分类性能。而其他模型,如SGDClassifier(支持向量机)和MultinomialNB(朴素贝叶斯),可能需要手动进行特征选择。
-
很好剩下的都不会