机器学习多分类算法项目实践

  • 实验名称

机器学习多分类算法项目实践

  • 实验目的
  1. 掌握机器学习算法使用的一般流程;
  2. 能够使用合适的方法对数据集进行预处理;
  3. 能够正确调用机器学习算法,实现多分类任务;
  4. 能够通过绘制混淆矩阵及计算准确度、精确度、召回率等,评估算法性能。
  • 实验内容

本实验使用红酒品类分类数据,让学生能够自主的根据所学内容,对该数据集进行数据的预处理、特征的筛选,然后调用合适的机器学习算法对数据进行训练、预测,最后使用准确度、精确度、召回率、混淆矩阵等模型性能评价方法对算法性能进行评估。

  • 实验器材

装有pycharm、anaconda软件的计算机一台

五、实验步骤及结果分析
(1)读取数据集,并对数据进行正确预处理,处理成机器学习算法能够调用的形式。

    导入pandas库,用于数据处理和分析,使用pd.Excelfile函数读取wine.xlsx文件。最后将文件内的数据赋值给df,此时df是一个包含葡萄酒数据的DataFrame对象。

(2)将数据集以 7:3 的比例划分成训练数据集和测试数据集

    从sklearn.model_selection模块导入rtain_test_split函数,用于划分数据集,使用df.drop('class', axis=1)将class列从df中删除,剩余的列作为特征变量,赋值给X,使用df['class']选取class列作为目标变量,赋值给y,使用train_test_split函数将特征变量X和目标变量y按照 7:3 的比例划分为训练集和测试集。其中,test_size=0.3表示测试集占比 30%,random_state=42用于设置随机种子,保证每次划分结果的一致性。划分后的训练集特征变量、测试集特征变量、训练集目标变量和测试集目标变量分别赋值给X_train、X_test、y_train和y_test。
 

(3)调用 KNN、决策树、支持向量机、逻辑回归四个机器学习算法,对数据进行训练及预测。


    导入KNeighborsClassifier、DecisionTreeClassifier、SVC、LogisticRegression。在分别创建了 KNN、决策树、支持向量机和逻辑回归四个模型的实例。对于LogisticRegression,设置了max_iter=1000,这是为了指定最大迭代次数,防止算法在无法收敛时陷入无限循环。

    将四个模型实例存储在列表models中,同时将对应的模型名称存储在列表model_names中。

使用zip函数将models和model_names进行配对,通过for循环依次对每个模型进行操作。

model.fit(X_train, y_train):使用训练集的特征变量X_train和目标变量y_train对当前模型进行训练,让模型学习数据中的模式和规律。

model.predict(X_test):使用训练好的模型对测试集的特征变量X_test进行预测,得到预测结果y_pred。

print(f'{name} 预测完成'):打印出当前模型的名称和预测完成的信息,方便用户了解每个模型的执行进度。


 

(4)分别对不同机器学习算法预测的结果绘制混淆矩阵和分类报告矩阵

4 个混淆矩阵对比显示:逻辑回归在各类别预测中均无错分,表现最佳;决策树除将 1 个类别 3 样本错分到类别 2 外,对类别 1 和 2 预测准确;SVM 对类别 1 预测良好,但将大量类别 3 样本错分到类别 2;KNN 在各类别均存在较多错分情况,对类别区分能力相对较弱。

六、实验过程问题总结

(1)问题 1:特征未标准化导致模型性能偏差

问题描述:KNN 和 SVM 表现显著差于逻辑回归,尤其是 KNN 错分较多

问题1解决方案:

from sklearn.preprocessing import StandardScaler



scaler = StandardScaler()

X_train_scaled = scaler.fit_transform(X_train)

X_test_scaled = scaler.transform(X_test)



# 对KNN/SVM使用标准化后的数据

knn.fit(X_train_scaled, y_train)

svm.fit(X_train_scaled, y_train)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值