• 注册
当前位置:1313e > python >正文

python数据处理可视化_使用Python数据预处理,分析和可视化进行机器学习

   referrerpolicy=

在现实世界中,我们经常遇到许多原始数据,这些数据不适合机器学习算法。我们需要在将原始数据输入各种机器学习算法之前对其进行预处理。本章讨论在Python机器学习中预处理数据的各种技术。

数据预处理

在本节中,让我们了解如何在Python中预处理数据。

最初,在文本编辑器(如记事本)中打开扩展名为.py的文件,例如prefoo.py文件。

然后,将以下代码添加到此文件中-

import numpy as np

from sklearn import preprocessing

#We imported a couple of packages. Let's create some sample data and add the line to this file:

input_data= np.array([[3, -1.5, 3, -6.4], [0, 3, -1.3, 4.1], [1, 2.3, -2.9, -4.3]])

现在我们已经准备好对这些数据进行操作了。

预处理技术

可以使用这里讨论的几种技术对数据进行预处理-

平均去除

它涉及从每个要素中删除均值,使其以零为中心。平均删除有助于消除特征中的任何偏差。

您可以使用以下代码进行平均删除-

data_standardized= preprocessing.scale(input_data)

print "nMean= ", data_standardized.mean(axis= 0)

print "Std deviation= ", data_standardized.std(axis= 0)

现在在终端上运行以下命令-

$ python prefoo.py

您可以观察以下输出-

Mean= [ 5.55111512e-17 -3.70074342e-17 0.00000000e+00 -1.85037171e-17]

Std deviation= [1. 1. 1. 1.]

观察输出中的平均值几乎为0且标准差为1.

缩放

数据点中每个要素的值可以在随机值之间变化。因此,重要的是缩放它们以使其符合指定的规则。

您可以使用以下代码进行缩放-

data_scaler= preprocessing.MinMaxScaler(feature_range= (0, 1))

data_scaled= data_scaler.fit_transform(input_data)

print "nMin max scaled data= ", data_scaled

现在运行代码,您可以观察以下内容输出-

Min max scaled data= [ [ 1. 0. 1. 0. ]

[ 0. 1. 0.27118644 1. ]

[ 0.33333333 0.84444444 0. 0.2 ]

]

请注意,所有值都已在给定范围之间缩放。

标准化

标准化涉及调整特征向量中的值,以便以共同的尺度衡量它们。这里,调整特征向量的值,使它们总和为1.我们将以下行添加到prefoo.py文件中-

您可以使用以下代码进行规范化-

data_normalized= preprocessing.normalize(input_data, norm= 'l1')

print "nL1 normalized data= ", data_normalized

现在运行代码,您可以观察以下输出-

L1 normalized data= [ [ 0.21582734 -0.10791367 0.21582734 -0.46043165]

[ 0. 0.35714286 -0.1547619 0.48809524]

[ 0.0952381 0.21904762 -0.27619048 -0.40952381]

]

规范化用于确保数据点不会因其功能的性质而得到提升。

二值化

二值化用于将数字特征向量转换为布尔向量。您可以使用以下代码进行二值化-

data_binarized= preprocessing.Binarizer(threshold=1.4).transform(input_data)

print "nBinarized data=", data_binarized

现在运行代码,您可以观察以下输出-

Binarized data= [[ 1. 0. 1. 0.]

[ 0. 1. 0. 1.]

[ 0. 1. 0. 0.]

]

当我们事先了解数据。

一个热编码

可能需要处理少量和分散的数值,您可能不需要存储这些值。在这种情况下,您可以使用一种热编码技术。

如果不同值的数量是k,它会将该特征转换为k维 vector只有一个值1且所有其他值都是0。

您可以将以下代码用于一个热编码- GGGoogg10gggoogg

现在运行代码,您可以观察以下输出-

Encoded vector= [[ 0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]

在上面的示例中,让我们考虑每个特征向量中的第三个特征。值为1,5,2和4.

这里有四个单独的值,这意味着单热编码向量的长度为4.如果我们要编码值5,它将是向量[0,1,0,0]。此向量中只有一个值可以是1。第二个元素是1,表示该值为5.

标签编码

在监督学习中,我们主要遇到各种标签,这些标签可以是数字形式或者说话。如果它们是数字,则它们可以由算法直接使用。但是,很多时候,标签需要是可读的形式。因此,训练数据通常用单词标记。

标签编码是指将单词标签更改为数字,以便算法可以理解如何处理它们。让我们详细了解如何执行标签编码-

创建一个新的Python文件,并导入预处理包-

from sklearn import preprocessing

label_encoder= preprocessing.LabelEncoder()

input_classes= ['suzuki', 'ford', 'suzuki', 'toyota', 'ford', 'bmw']

label_encoder.fit(input_classes)

print "nClass mapping:"

for i, item in enumerate(label_encoder.classes_):

print item, '-->', i

现在运行代码,您可以观察以下内容输出-

Class mapping:

bmw --> 0

ford --> 1

suzuki --> 2

toyota --> 3

如上面的输出所示,单词已被更改为0索引号。现在,当我们处理一组标签时,我们可以将它们转换为以下和缩小;

labels= ['toyota', 'ford', 'suzuki']

encoded_labels= label_encoder.transform(labels)

print "nLabels=", labels

print "Encoded labels=", list(encoded_labels)

现在运行代码,您可以观察以下输出-

Labels= ['toyota', 'ford', 'suzuki']

Encoded labels= [3, 1, 2]

这是比手动维护单词和数字之间的映射更有效。您可以通过将数字转换回单词标签进行检查,如代码中所示-

encoded_labels= [3, 2, 0, 2, 1]

decoded_labels= label_encoder.inverse_transform(encoded_labels)

print "nEncoded labels=", encoded_labels

print "Decoded labels=", list(decoded_labels)

现在运行代码,您可以观察以下输出-

Encoded labels= [3, 2, 0, 2, 1]

Decoded labels= ['toyota', 'suzuki', 'bmw', 'suzuki', 'ford']

从输出,你可以观察到映射保存完好。

数据分析

本节详细讨论了Python机器学习中的数据分析-

加载数据集

我们可以直接从UCI机器学习库加载数据。请注意,这里我们使用pandas来加载数据。我们还将使用pandas来探索数据,包括描述性统计和数据可视化。请注意以下代码,并注意我们在加载数据时指定每列的名称。

import pandas

data= ‘pima_indians.csv’

names= ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', ‘Outcome’]

dataset= pandas.read_csv(data, names= names)

运行代码时,您可以观察到数据集已加载并准备好进行分析。在这里,我们已经下载了pima_indians.csv文件并将其移动到我们的工作目录中并使用本地文件名加载它。

汇总数据集

汇总数据可以在许多方式如下- 检查数据集的维度

列出整个数据

查看所有数据的统计摘要属性

按类变量分类数据

数据集的维度

您可以使用以下命令检查实例数(行数) )和数据包含的属性(列)与t然后,对于我们讨论过的代码,我们可以看到769个实例和6个属性-

(769, 6)

列出整个数据

您可以查看整个数据并了解其摘要-

print(dataset.head(20))

此命令打印数据的前20行,如下所示-

Sno Pregnancies Glucose BloodPressure SkinThickness Insulin Outcome

1 6 148 72 35 0 1

2 1 85 66 29 0 0

3 8 183 64 0 0 1

4 1 89 66 23 94 0

5 0 137 40 35 168 1

6 5 116 74 0 0 0

7 3 78 50 32 88 1

8 10 115 0 0 0 0

9 2 197 70 45 543 1

10 8 125 96 0 0 1

11 4 110 92 0 0 0

12 10 168 74 0 0 1

13 10 139 80 0 0 0

14 1 189 60 23 846 1

15 5 166 72 19 175 1

16 7 100 0 0 0 1

17 0 118 84 47 230 1

18 7 107 74 0 0 1

19 1 103 30 38 83 0

查看统计摘要

您可以使用以下命令查看每个属性的统计摘要,其中包括count,unique,top和freq。

print(dataset.describe())

上面的命令为您提供以下输出,显示每个属性的统计摘要-

Pregnancies Glucose BloodPressur SkinThckns Insulin Outcome

count 769 769 769 769 769 769

unique 18 137 48 52 187 3

top 1 100 70 0 0 0

freq 135 17 57 227 374 500

按类变量细分数据

您还可以查看属于每个结果的实例(行)数作为绝对计数,使用此处显示的命令-

print(dataset.groupby('Outcome').size())

然后您可以看到实例的结果数量显示-

Outcome

0 500

1 268

Outcome 1

dtype: int64

Data Visualiza

您可以使用两种类型的图表来显示数据,如图所示- 单变量图以了解每个属性

了解属性之间关系的多变量图

单变量图

单变量图是每个变量的图。考虑输入变量是数字的情况,我们需要创建每个输入变量的方框和胡须图。您可以使用以下代码来实现此目的。

import pandas

import matplotlib.pyplot as plt

data= 'iris_df.csv'

names= ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset= pandas.read_csv(data, names=names)

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

plt.show()

您可以更清楚地了解输入属性的分布,如图所示-

   referrerpolicy=

框和晶须图

您可以使用下面显示的命令创建每个输入变量的直方图,以了解分布;

#histograms

dataset.hist()

plt().show()

   referrerpolicy=

从输出中,您可以看到两个输入变量具有高斯分布。因此,这些图有助于了解我们可以在程序中使用的算法。

多变量图

多变量图有助于我们理解变量之间的相互作用。

散点图矩阵

首先,让我们看一下所有属性对的散点图。这有助于发现输入变量之间的结构化关系。

from pandas.plotting import scatter_matrix

scatter_matrix(dataset)

plt.show()

您可以观察输出如图所示-

   referrerpolicy=

观察输出中存在一些属性对角分组。这表明高度相关性和可预测的关系。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录