《Python机器学习——预测分析核心算法》——2.5 用实数值属性预测实数值目标:评估红酒口感

简介:

本节书摘来异步社区《Python机器学习——预测分析核心算法》一书中的第2章,第2.5节,作者:【美】Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 用实数值属性预测实数值目标:评估红酒口感

红酒口感数据集包括将近1 500种红酒的数据。每一种红酒都有一系列化学成分的测量指标,包括酒精含量、挥发性酸、亚硝酸盐。每种红酒都有一个口感评分值,是三个专业评酒员的评分的平均值。问题是构建一个预测模型,输入化学成分的测量值,预测口感评分值,使之与评酒员的评分一致。

代码清单2-14为获得红酒数据集统计信息的代码。代码打印输出数据集的数值型统计信息,在代码清单的最后部分可以看到。代码还产生了归一化属性的箱线图,可以直观发现数据集中的异常点。图2-16为箱线图。数值型统计信息和箱线图都显示含有大量的边缘点。在对此数据集进行训练时要记住这一点。当分析预测模型的性能时,这些边缘点很可能就是分析模型预测错误的一个重要来源。

代码清单2-14 红酒数据统计信息-wineSummary.py

__author__ = 'mike_bowles'
import pandas as pd
from pandas import DataFrame
from pylab import *
import matplotlib.pyplot as plot

target_url = ("http://archive.ics.uci.edu/ml/machine-"
"learning-databases/wine-quality/winequality-red.csv")
wine = pd.read_csv(target_url,header=0, sep=";")

print(wine.head())

#generate statistical summaries
summary = wine.describe()
print(summary)

wineNormalized = wine
ncols = len(wineNormalized.columns)

for i in range(ncols):
    mean = summary.iloc[1, i]
    sd = summary.iloc[2, i]

wineNormalized.iloc[:,i:(i + 1)] = \
        (wineNormalized.iloc[:,i:(i + 1)] - mean) / sd
array = wineNormalized.values
boxplot(array)
plot.xlabel("Attribute Index")
plot.ylabel(("Quartile Ranges - Normalized "))
show()

Output - [filename - wineSummary.txt]
    fixed acidity volatil acid citric acid resid sugar chlorides
0             7.4          0.70       0.00         1.9     0.076
1             7.8          0.88       0.00         2.6     0.098
2             7.8          0.76       0.04         2.3     0.092
3            11.2          0.28       0.56         1.9     0.075
4             7.4          0.70       0.00         1.9     0.076

    free sulfur dioxide tot sulfur dioxide density   pH sulphates
0                    11                 34  0.9978 3.51      0.56
1                    25                 67  0.9968 3.20      0.68
2                    15                 54  0.9970 3.26      0.65
3                    17                 60  0.9980 3.16      0.58
4                    11                 34  0.9978 3.51      0.56

    alcohol quality
0       9.4       5
1       9.8       5
2       9.8       5
3       9.8       6
4       9.4       5
        fixed acidity volatile acidity citric acid residual sugar
count     1599.000000      1599.000000 1599.000000    1599.000000
mean         8.319637         0.527821    0.270976       2.538806
std          1.741096         0.179060    0.194801       1.409928
min          4.600000         0.120000    0.000000       0.900000
25%          7.100000         0.390000    0.090000       1.900000
50%          7.900000         0.520000    0.260000       2.200000
75%          9.200000         0.640000    0.420000       2.600000
max         15.900000         1.580000    1.000000      15.500000

         chlorides free sulfur dioxide tot sulfur dioxide     density
count  1599.000000         1599.000000        1599.000000 1599.000000
mean      0.087467           15.874922          46.467792    0.996747
std       0.047065           10.460157          32.895324    0.001887
min       0.012000            1.000000           6.000000    0.990070
25%       0.070000            7.000000          22.000000    0.995600
50%       0.079000           14.000000          38.000000    0.996750
75%       0.090000           21.000000          62.000000    0.997835
max       0.611000           72.000000         289.000000    1.003690

                pH   sulphates     alcohol     quality
count  1599.000000 1599.000000 1599.000000 1599.000000
mean      3.311113    0.658149   10.422983    5.636023
std       0.154386    0.169507    1.065668    0.807569
min       2.740000    0.330000    8.400000    3.000000
25%       3.210000    0.550000    9.500000    5.000000
50%       3.310000    0.620000   10.200000    6.000000
75%       3.400000    0.730000   11.100000    6.000000
max       4.010000    2.000000   14.900000    8.000000```

<div style="text-align: center"><img src="https://yqfile.alicdn.com/578ad5dab79e74a2a748ae50a20dba6ff4a43cd3.png" width="" height="">
</div>

加入颜色标记的平行坐标图更易于观察属性与目标的相关程度。代码清单2-15为生成平行坐标图的代码。图2-17为平行坐标图。图2-17的主要不足在于对取值范围较小的变量进行了压缩。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/311664f2c315332466e67a1b0b0998527ccdc0ca.png" width="" height="">
</div>

为了克服这个问题,代码清单2-15对红酒数据进行了归一化,然后重画了平行坐标图。图2-18为归一化之后的平行坐标图。

代码清单2-15 红酒数据的平行坐标图-wineParalleIPLot.Py

author = 'mike_bowles'
import pandas as pd
from pandas import DataFrame
from pylab import *
import matplotlib.pyplot as plot
from math import exp

target_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/
wine-quality/winequality-red.csv"
wine = pd.read_csv(target_url,header=0, sep=";")

generate statistical summaries

summary = wine.describe()
nrows = len(wine.index)
tasteCol = len(summary.columns)
meanTaste = summary.iloc[1,tasteCol - 1]
sdTaste = summary.iloc[2,tasteCol - 1]
nDataCol = len(wine.columns) -1

for i in range(nrows):

#plot rows of data as if they were series data
dataRow = wine.iloc[i,1:nDataCol]
normTarget = (wine.iloc[i,nDataCol] - meanTaste)/sdTaste
labelColor = 1.0/(1.0 + exp(-normTarget))
dataRow.plot(color=plot.cm.RdYlBu(labelColor), alpha=0.5)

plot.xlabel("Attribute Index")
plot.ylabel(("Attribute Values"))
plot.show()

wineNormalized = wine
ncols = len(wineNormalized.columns)

for i in range(ncols):

mean = summary.iloc[1, i]
sd = summary.iloc[2, i]
wineNormalized.iloc[:,i:(i + 1)] =
(wineNormalized.iloc[:,i:(i + 1)] - mean) / sd

Try again with normalized values

for i in range(nrows):

#plot rows of data as if they were series data
dataRow = wineNormalized.iloc[i,1:nDataCol]
normTarget = wineNormalized.iloc[i,nDataCol]
labelColor = 1.0/(1.0 + exp(-normTarget))
dataRow.plot(color=plot.cm.RdYlBu(labelColor), alpha=0.5)

plot.xlabel("Attribute Index")
plot.ylabel(("Attribute Values"))
plot.show()`
归一化红酒数据的平行坐标图可以更方便地观察出目标与哪些属性相关。图2-18展示了属性间清晰的相关性。在图的最右边,深蓝线(高口感评分值)聚集在酒精含量属性的高值区域;但是图的最左边,深红线(低口感评分值)聚集在挥发性酸属性的高值区域。这些都是最明显的相关属性。在第5章和第7章的预测模型中将会对属性基于对预测所做的贡献进行评分,我们会看到预测模型是如何支撑上述这些观察结果的。

561618510ff3d99ac857c5cd6e6feb524fd74215

图2-19为属性之间、属性与目标之间的关联热图。在这个热图中,暖色对应强相关(颜色标尺的选择与平行坐标图中的正好相反)。红酒数据的关联热图显示口感评分值(最后一列)与酒精含量(倒数第二列)高度正相关,但是与其他几个属性(包括挥发性酸等)高度负相关。

515ae037adcca7d83408bbb139d3b80531626b2b

分析红酒数据所用的工具在前面都已经介绍和使用过。红酒数据集展示了这些工具可以揭示的信息。平行坐标图和关联热图都说明酒精含量高则口感评分值高,然而挥发性酸高则口感评分值低。在第5、第7章可以看到,预测模型中的一部分工作就是研究各种属性对预测的重要性。红酒数据集就是一个很好的例子,展示了如何通过探究数据来知晓向从哪个方向努力来构建预测模型以及如何评价预测模型。下节将探究多类别分类问题的数据集。

相关文章
|
6月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
227 7
|
4月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
685 12
Scikit-learn:Python机器学习的瑞士军刀
|
7月前
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
Python与机器学习:使用Scikit-learn进行数据建模
|
6月前
|
人工智能 JSON 自然语言处理
如何用大模型评估大模型——PAI-Judge裁判员大语言模型的实现简介
阿里云人工智能平台 PAI 推出 PAI-Judge 裁判员大模型,为用户构建符合应用场景的多维度、细粒度的评测体系,支持单模型评测和双模型竞技两种模式,允许用户自定义参数,实现准确、灵活、高效的模型自动化评测,为模型迭代优化提供数据支撑。 相比通用大模型尤其在回答确定性/数学类问题、角色扮演、创意文体写作、翻译等场景下,PAI-Judge 系列模型表现优异,可以直接用于大模型的评估与质检。
|
6月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
6月前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
6月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
10月前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
378 8
|
10月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
318 6
|
10月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
236 1

推荐镜像

更多