使用Python ML预测葡萄酒质量

2025年1月5日 | 阅读 7 分钟

葡萄酒分类简介

世界各地都有各种各样的葡萄酒,例如起泡酒、甜酒、果酒、餐酒和陈酿酒。

您可能想知道如何判断葡萄酒的好坏。机器学习就是这个问题的答案!

有许多不同的方法可以对葡萄酒进行分类。其中一些如下所述

  1. 逻辑回归
  2. SVM
  3. 朴素贝叶斯
  4. CART
  5. 随机森林
  6. 看法
  7. KNN

在 Python 中实现葡萄酒分类

现在让我们深入一个非常基础的 Python 葡萄酒分类实现。这将为您提供分类器的介绍,并向您展示如何在 Python 中将它们用于各种实际应用。

1. 模块导入

将所需的模块和库导入应用程序是第一步。一些基础模块对于分组是必需的。下一步是导入使用 Sklearn 库的应用程序中的每个模型。还将包含一些额外的 sklearn 库函数。

2. 数据集准备

下一步是准备我们的数据集。在将数据集导入我们的应用程序之前,我将先概述一下数据集。

2.1 数据集简介

数据集中共有 12 个特征和 6497 个观测值。没有变量具有 NAN 值。数据非常易于下载。

以下是 12 个特征的名称和描述

  • 固定酸度:葡萄酒的固定酸度水平
    葡萄酒的挥发性酸度是指乙酸的含量、柠檬酸的含量、发酵后残留的糖分含量以及盐或氯化物存在的量。
    游离二氧化硫的含量。总二氧化硫的含量,包括结合态和游离态。
  • 密度:葡萄酒的质量/体积密度
  • pH 值:葡萄酒的 pH 值范围为 0 到 14。
  • 亚硫酸盐:葡萄酒中的二氧化硫气体 (S02) 的含量;
  • 酒精:葡萄酒中的酒精含量;
  • 质量:葡萄酒的最终质量指示。

2.2 加载数据集

加载数据集并打印数据集的基本信息,如列名和数据类型。

输出

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1599 entries, 0 to 1598
Data columns (total 12 columns):
 #   Column                Non-Null Count  Dtype  
-  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  -   -  -  -  -  
 0   fixed acidity         1599 non-null   float 64
 1   volatile acidity      1599 non-null   float 64
 2   citric acid           1599 non-null   float 64
 3   residual sugar        1599 non-null   float 64
 4   chlorides             1599 non-null   float 64
 5   free sulfur dioxide   1599 non-null   float 64
 6   total sulfur dioxide  1599 non-null   float 64
 7   density               1599 non-null   float 64
 8   pH                    1599 non-null   float 64
 9   sulphates             1599 non-null   float 64
 10  alcohol               1599 non-null   float 64
 11  quality               1599 non-null   int 64  
dtypes: float64(11), int64(1)
memory usage: 150.0 KB

2.3 数据清洗

数据集的清洗包括删除不必要的列和 NaN 值,方法如下面的代码所示

2.4 数据可视化

在进一步处理数据之前,首先可视化数据是一个重要的步骤。可视化有两种形式,即:

  1. 直方图
  2. 散点图

绘制直方图

输出

Wine Quality Predicting with Python ML

下面显示了所有变量值的分布。图形表明,“pH”和“密度”变量的值遵循一个大致正常的分布。

  1. “固定酸度”变量的大部分值介于 7 和 8 之间;
  2. “挥发性酸度”变量的大部分值介于 0.4 和 0.7 之间;
  3. “柠檬酸”变量的大部分值介于 0.0 和 0.1 之间;
  4. “残糖”变量的大部分值介于 1 和 2.5 之间;
  5. “氯化物”变量的大部分值介于 0.085 和 0.15 之间;
  6. “游离二氧化硫”变量的大部分值。
  7. “总二氧化硫”变量的大部分值介于 0 - 30 之间。
  8. “密度”变量的大部分值介于 \mark>\b>0.996 - 0.998 之间
  9. “pH”变量的大部分值介于 3.2-3.4 之间;
  10. “亚硫酸盐”变量的大部分值介于 0.50 - 0.75 之间。
  11. “酒精”变量的大部分值介于 9 - 10 之间。
  12. “质量”变量的大部分值介于 5 和 6 之间。

绘制散点图

输出

Wine Quality Predicting with Python ML

在统计环境中,当两个或多个变量的值发生变化并导致第二个变量的值随第一个变量的值变化而变化时(尽管也可能反向变化),则称它们是相关的。\mark>例如,如果工作小时数的增加与收入的增加相关,那么“工作小时数”和“赚取的收入”这两个变量之间就存在关系。如果考虑到“价格”和“购买力”,那么一个人的购买力会随着价格的上涨而降低(假设收入不变)。

相关性是衡量两个或多个变量之间关系强度和方向的统计量,并表示为一个数字。

然而,两个变量之间的相关性并不一定意味着一个变量的变化是另一个变量值变化的因果结果。

这两个事件之间存在因果关系,这表明一个事件是另一个事件发生的结果。这也被称为原因和结果。

这两种关系之间的区别理论上应该是显而易见的:一个事件或行为可以导致另一个事件(例如,吸烟会增加患肺癌的风险)或与另一个事件相关(例如,吸烟与酗酒相关,但它不会导致酗酒)。然而,在实际中,确定因果关系仍然很困难。

2.5 训练-测试分割和数据归一化

要将数据分割成 训练和测试数据,没有最优的分割比例。

但一个公平的分割规则是 80/20 法则,其中 80% 的数据用于训练数据,其余 20% 用于测试数据。

此步骤还包括对数据集进行归一化。

3. 葡萄酒分类模型

在此程序中,我们使用了两种算法:SVM 和 Logistic Regression。

3.1 支持向量机 (SVM) 算法

该模型的准确率约为 50%。

3.2 Logistic Regression 算法

输出

在这种情况下,准确率也约为 50%。我们使用或开发的模型是主要原因。


下一个主题PowerShell 与 Python