python机器学习决策树和SVM向量机算法实现红酒分类

这篇具有很好参考价值的文章主要介绍了python机器学习决策树和SVM向量机算法实现红酒分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、红酒数据介绍

经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本,每个样本有13个特征,可以用于分类任务。

具体每个字段的含义如下:
alcohol:酒精含量百分比
malic_acid:苹果酸含量(克/升)
ash:灰分含量(克/升)
alcalinity_of_ash:灰分碱度(以mEq/L为单位)
magnesium:镁含量(毫克/升)
total_phenols:总酚含量(以毫克/升为单位)
flavanoids:类黄酮含量(以毫克/升为单位)
nonflavanoid_phenols:非类黄酮酚含量(以毫克/升为单位)
proanthocyanins:原花青素含量(以毫克/升为单位)
color_intensity:颜色强度(以 absorbance 为单位,对应于 1cm 路径长度处的相对宽度)
hue:色调,即色彩的倾向性或相似性(在 1 至 10 之间的一个数字)
od280/od315_of_diluted_wines:稀释葡萄酒样品的光密度比值,用于测量葡萄酒中各种化合物的浓度
proline:脯氨酸含量(以毫克/升为单位),是一种天然氨基酸,与葡萄酒的品质和口感有关。

2、引入依赖库

import pandas as pd
import numpy as np
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

3、加载红酒数据集

# 加载红酒数据集
wineBunch = load_wine()
type(wineBunch)

sklearn.utils.Bunch
sklearn.utils.Bunch是Scikit-learn库中的一个数据容器,类似于Python字典(dictionary),
它可以存储任意数量和类型的数据,并且可以使用点(.)操作符来访问数据。Bunch常用于存储机器学习模型的数据集,
例如描述特征矩阵的数据、相关联的目标向量、特征名称等等,以便于组织和传递这些数据到模型中进行训练或预测。

len(wineBunch.data),len(wineBunch.target)

(178, 178)

featuresDf = pd.DataFrame(data=wineBunch.data, columns=wineBunch.feature_names)   # 特征数据
labelDf = pd.DataFrame(data=wineBunch.target, columns=["target"])               # 标签数据
wineDf = pd.concat([featuresDf, labelDf], axis=1)  # 横向拼接
wineDf.head(5).append(wineDf.tail(5))              # 打印首尾5行

python机器学习决策树和SVM向量机算法实现红酒分类

wineDf.columns

Index([‘alcohol’, ‘malic_acid’, ‘ash’, ‘alcalinity_of_ash’, ‘magnesium’,
‘total_phenols’, ‘flavanoids’, ‘nonflavanoid_phenols’,
‘proanthocyanins’, ‘color_intensity’, ‘hue’,
‘od280/od315_of_diluted_wines’, ‘proline’, ‘target’],
dtype=‘object’)

3、构造训练集、验证集和测试集

# 将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(wineDf.drop("target", axis=1), wineDf["target"], test_size=0.2)

# 将训练集和验证集进一步划分为训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2)
type(X_train),type(y_train)

(pandas.core.frame.DataFrame, pandas.core.series.Series)

X_train.shape, X_test.shape, y_train.shape, y_test.shape

((113, 13), (36, 13), (113,), (36,))

X_train.shape, X_val.shape, y_train.shape, y_val.shape

((113, 13), (29, 13), (113,), (29,))

wineDf.target.unique()  # 3个分类

array([0, 1, 2])

4、训练决策树模型

# 使用决策树算法进行训练
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
# 在验证集上评估模型性能以避免过拟合
val_pred = clf.predict(X_val)
val_accuracy = accuracy_score(y_val, val_pred)
print("验证集准确率:", val_accuracy)

验证集准确率: 0.9655172413793104

# 在测试集上评估模型性能
test_pred = clf.predict(X_test)
test_accuracy = accuracy_score(y_test, test_pred)
print("测试集准确率:", test_accuracy)

测试集准确率: 0.9166666666666666

clf.feature_importances_   # 使用特征的数量的重要性
[*zip(wineBunch.feature_names, clf.feature_importances_)]  # 特征名称和重要性

[(‘alcohol’, 0.0),
(‘malic_acid’, 0.0),
(‘ash’, 0.0),
(‘alcalinity_of_ash’, 0.0),
(‘magnesium’, 0.0),
(‘total_phenols’, 0.0),
(‘flavanoids’, 0.39118650550280015),
(‘nonflavanoid_phenols’, 0.0),
(‘proanthocyanins’, 0.0),
(‘color_intensity’, 0.4062066644389752),
(‘hue’, 0.0),
(‘od280/od315_of_diluted_wines’, 0.026685709144887784),
(‘proline’, 0.17592112091333678)]

5、训练SVM向量机模型

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
# 将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(wineDf.drop("target", axis=1), wineDf["target"], test_size=0.2)

# 将训练集和验证集进一步划分为训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2)
scaler = StandardScaler()
# 对特征进行标准化处理,以确保不同特征之间具有相同的范围
X_train = scaler.fit_transform(X_train)  # 特征标准化
X_test = scaler.fit_transform(X_test)  # 特征标准化
X_val = scaler.fit_transform(X_val)  # 特征标准化
# SVM模型训练
svm = SVC(kernel='rbf',    # 使用径向基函数(rbf)核
          C=1,             # 正则化参数C取值为1
          gamma=0.1)       # 核系数gamma取值为0.1
svm.fit(X_train, y_train)
# 在验证集上评估模型性能以避免过拟合
val_pred = svm.predict(X_val)
val_accuracy = accuracy_score(y_val, val_pred)
print("验证集准确率:", val_accuracy)
# 在测试集上评估模型性能
test_pred = svm.predict(X_test)
test_accuracy = accuracy_score(y_test, test_pred)
print("测试集准确率:", test_accuracy)

测试集准确率: 0.9722222222222222

结果说明:SVM向量机算法模型在红酒数据集上的性能表现优于决策树分类模型。文章来源地址https://www.toymoban.com/news/detail-475919.html

到了这里,关于python机器学习决策树和SVM向量机算法实现红酒分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习算法】决策树和随机森林在计算机视觉中的应用

    决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型,可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类,从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法,利用多棵决

    2024年04月13日
    浏览(61)
  • PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类

    鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set,使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据,每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花,分别为:Iris Setosa,Iris Versicolour,Iri

    2023年04月10日
    浏览(43)
  • [学习笔记] [机器学习] 10. 支持向量机 SVM(SVM 算法原理、SVM API介绍、SVM 损失函数、SVM 回归、手写数字识别)

    视频链接 数据集下载地址:无需下载 学习目标: 了解什么是 SVM 算法 掌握 SVM 算法的原理 知道 SVM 算法的损失函数 知道 SVM 算法的核函数 了解 SVM 算法在回归问题中的使用 应用 SVM 算法实现手写数字识别器 学习目标: 了解 SVM 算法的定义 知道软间隔和硬间隔 在很久以前的

    2024年02月09日
    浏览(91)
  • 基于机器学习的情绪识别算法matlab仿真,对比SVM,LDA以及决策树

    目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程        情绪识别是一种重要的情感分析任务,旨在从文本、语音或图像等数据中识别出人的情绪状态,如高兴、悲伤、愤怒等。本文介绍一种基于机器学习的情绪识别算法,

    2024年02月15日
    浏览(228)
  • 一文全解经典机器学习算法之支持向量机SVM(关键词:SVM,对偶、间隔、支持向量、核函数、特征空间、分类)

    之前所介绍的逻辑回归是基于似然度的分类方法,通过对数据概率进行建模来得到软输出。但这种分类方法其实稍加“繁琐”,因为要 估计数据的概率分布作为中间步骤 。这就像当一个人学习英语时,他只要直接报个班或者自己看书就行了,而不需要先学习诘屈聱牙的拉丁

    2024年02月03日
    浏览(63)
  • 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二维点分类

    实验2 感知机算法与支持向量机算法 一、预备知识 1.感知机算法 二、实验目的 掌握感知机算法的原理及设计; 掌握利用感知机算法解决分类问题。 三、实验内容 设计感知机算法求解, 设计SVM算法求解(可调用函数库),请找出支持向量和决策超平面。 四、操作方法和实验

    2023年04月26日
    浏览(90)
  • 机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)

    1.1 支持向量机的介绍 支持向量机( Support Vector Machine,SVM )是一种监督学习的分类算法。它的基本思想是找到一个能够最好地将不同类别的数据分开的超平面,同时最大化分类器的边际(margin)。SVM的训练目标是最大化间隔(margin),即支持向量到超平面的距离。 具体地,

    2024年02月05日
    浏览(64)
  • 机器学习之支持向量机(SVM)对乳腺癌数据二分类python实现

    支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。 间隔最大化,就是所有样本点中,离我们分类界限超平面最近的样本点,尽可能的远离超平面。这种思想

    2024年02月03日
    浏览(101)
  • Python实现支持向量机(SVM)算法及源代码

    Python实现支持向量机(SVM)算法及源代码 支持向量机(SVM)是一种经典的分类算法,它在解决二分类问题的性能优秀。本文将介绍如何使用Python实现SVM算法,并提供完整的源代码。 通过安装必要的Python库,我们可以开始编写SVM代码。首先,导入必要的库: 然后,使用make_blobs函数

    2024年02月10日
    浏览(59)
  • 基于Bayes、决策树和SVM的图像分类

           本实验数据集为一个垃圾分类图片数据集,总共包含cardboard、glass、metal、paper、plastic、trash六大类,在文件夹分别将其命名为0、1、2、3、4、5,将数据划分为训练集和测试集。 (1)读取数据集,使用循环依次读取图片,使用cv2.imread()方法打开图片。python代码如下:

    2024年01月18日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包