《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章可以看到,预测模型中的一部分工作就是研究各种属性对预测的重要性。红酒数据集就是一个很好的例子,展示了如何通过探究数据来知晓向从哪个方向努力来构建预测模型以及如何评价预测模型。下节将探究多类别分类问题的数据集。

相关文章
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
547 7
|
机器学习/深度学习 数据可视化 算法
Python数值方法在工程和科学问题解决中的应用
本文探讨了Python数值方法在工程和科学领域的广泛应用。首先介绍了数值计算的基本概念及Python的优势,如易学易用、丰富的库支持和跨平台性。接着分析了Python在有限元分析、信号处理、优化问题求解和控制系统设计等工程问题中的应用,以及在数据分析、机器学习、模拟建模和深度学习等科学问题中的实践。通过具体案例,展示了Python解决实际问题的能力,最后总结展望了Python在未来工程和科学研究中的发展潜力。
388 0
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
1356 12
Scikit-learn:Python机器学习的瑞士军刀
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
Python与机器学习:使用Scikit-learn进行数据建模
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
274 2
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
894 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章

推荐镜像

更多