学习总结:基于心脏病数据集的机器学习模型构建与评估

1. 数据准备与缺失值处理

首先,使用 ucimlrepo 库获取了 UCI 的心脏病数据集(ID=45),并将其特征数据和目标数据转换为 NumPy 数组格式:

<PYTHON>

heart_disease = fetch_ucirepo(id=45)
features_array = heart_disease.data.features.to_numpy()
target_array = heart_disease.data.targets.to_numpy()

在处理数据时,发现特征数据中存在缺失值。为了处理这些缺失值,使用了 Scikit-learn 的SimpleImputer 工具,采用众数填补策略:

<PYTHON>

imputer = SimpleImputer(strategy='most_frequent')
imputed_data = imputer.fit_transform(data)
imputed_data1 = imputer.fit_transform(data1)

将填补后的数据重新赋值给原始特征数组,确保数据完整性:

<PYTHON>

features_array[:, -2] = imputed_data.reshape(-1)
features_array[:, -1] = imputed_data1.reshape(-1)

2. 数据集划分与模型训练

为了构建机器学习模型,将数据集划分为训练集和测试集,其中测试集占 30%:

<PYTHON>

Xtrain, Xtest, Ytrain, Ytest = train_test_split(features_array, target_array, test_size=0.3)

使用决策树分类器进行模型训练。在本次实验中,选择了基尼系数(Gini)作为划分标准,未设置最大深度和随机种子,以充分挖掘数据特性:

<PYTHON>

clf = tree.DecisionTreeClassifier(criterion="gini")
clf = clf.fit(Xtrain, Ytrain)

3. 模型评估

训练完成后,使用测试集对模型进行评估,并输出准确率:

<PYTHON>

score = clf.score(Xtest, Ytest)print(score)

通过这一步骤,可以初步了解模型在未见数据上的表现。


4. 学习曲线分析

为了进一步分析模型的性能,绘制了学习曲线。学习曲线展示了随着训练样本数量的增加,模型在训练集和验证集上的得分变化:

<PYTHON>

train_sizes, train_scores, test_scores = learning_curve(
    clf, features_array, target_array, cv=5,
    train_sizes=np.linspace(0.1, 1.0, 5)
)

通过计算训练集和验证集得分的均值,使用 Matplotlib 绘制学习曲线:

<PYTHON>

plt.plot(train_sizes, train_scores_mean, label="Training score")
plt.plot(train_sizes, test_scores_mean, label="Cross-validation score")
plt.xlabel("Training examples")plt.ylabel("Score")
plt.title("Learning Curve")
plt.legend()
plt.show()

学习曲线的结果可以帮助判断模型是否存在过拟合或欠拟合问题。如果训练集得分和验证集得分都较高且接近,说明模型性能良好;如果两者差距较大,则可能存在过拟合。


5. 总结与反思

通过本次实验,我学到了以下知识:

  1. 数据处理:如何利用 SimpleImputer 处理缺失值,确保数据质量。
  2. 模型构建:如何使用决策树分类器构建机器学习模型,并理解其参数的含义。
  3. 模型评估:如何通过准确率和学习曲线评估模型性能。
  4. 可视化:如何通过 Matplotlib 绘制学习曲线,直观展示模型表现。

在实验过程中,遇到了以下问题:

  • 数据特征理解不足:对心脏病数据集的具体特征含义不熟悉,可能影响模型参数的调整效果。
  • 模型调优不足:本次实验中未对决策树的超参数(如 max_depthrandom_state 等)进行调优,未来可以尝试网格搜索或随机搜索优化模型。

6. 未来改进方向
  1. 数据探索与分析:对数据集进行更深入的探索,理解每个特征的含义及其对目标变量的影响。
  2. 模型调优:通过交叉验证和超参数调优(如 max_depthmin_samples_split 等)进一步提升模型性能。
  3. 特征工程:尝试构建新特征或进行特征选择,提高模型的预测能力。
  4. 模型比较:尝试其他分类算法(如随机森林、支持向量机等),并与决策树模型进行对比。

通过本次实验,我对机器学习的基本流程有了更深入的理解,同时也认识到数据预处理和模型调优的重要性。未来将继续学习和实践,提升机器学习建模的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值