鲍鱼数据集的可视化展示

写在开头:这篇文章有别于上次的岩石与雷的分类问题,是个回归数据集的展示。我们将运用到之前的工具对这个数据集进行一些可视化。
关于数据集:数据集的来源同样是UCI库。
性别(M,F,I)由于鲍鱼年幼时分辨不出该属性,所以有三个类别。
长度 单位毫米
直径 单位毫米
高度 单位毫米
总重量
剥壳重量
内脏重量
壳重
环的数量 (整型 +1.5用于预测鲍鱼年龄)
鲍鱼的年龄是通过切割贝壳通过锥体,染色并通过显微镜计数环数来确定的。
任务是预测环数,从而预测鲍鱼的年龄。


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#列出数据的概况
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'
data = pd.read_csv(url,prefix='x',header=None)
head = data.head()
print(head)
print('-----------------------------------------------------------')
tail = data.tail()
print(tail)
summary = data.describe()
print(summary)

输出:这里写图片描述
通过数据的统计信息比较不同位数之间的差异以及其他一些参数来发现异常数据。
这里提供一种更加直观的方法:箱线图
关于箱线图,参考了这篇文章 箱线图

#由于第一列为非数值型属性,因此暂时排除在外
plt.figure(figsize=(10,6))
array = data.iloc[:,1:9].values
plt.boxplot(array)
plt.xlabel('variable(1:9)',fontsize=14)

输出:
这里写图片描述
这里的效果还不是很好,由图像可以发现,由于最后一列(环数)的取值范围,导致其他属性的箱线图被压缩,展示出来的效果不是很好。初步解决方法使可以剔除这一列,重新作图。

array1 = data.iloc[:,1:8].values
plt.figure(figsize=(10,6))
plt.boxplot(array1)
plt.xlabel('variable(1:8)',fontsize=14)

输出:
这里写图片描述
这里效果还没达到。试试特征缩放,应该可行。。

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
array2 = ss.fit_transform(array)
plt.figure(figsize=(10,6))
plt.boxplot(array2)
plt.xlabel('after standardscaler',fontsize=14)
plt.show()

输出:
这里写图片描述
至此可以看到我们的数据异常点还是不少。。

鲍鱼数据的变量关系可视化:(水平座标图)
每个样本对应一条折线,每个属性对应一个点。

plt.figure(figsize=(10,6))
for i in range(array1.shape[0]):
    point = array1[i,:]
    plt.plot(point)
plt.xticks(np.arange(7),('长度','直径','高度','全重','去壳重量','内脏重量','干燥后壳重'),fontsize = 13)
plt.show()

输出:
这里写图片描述
上图描述的使鲍鱼年龄(环数)和用于预测年龄的属性(性别除外)的属性之间的关系。

不得不说数据可视化还是挺有意思的。

import sklearn.datasets as ds
import pandas  as pd
import matplotlib.pyplot as plt
iris = ds.load_iris()
x_name = iris.feature_names   #['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
x = iris.data  #shape (150, 4)
y = iris.target
#鸢尾花水平座标图,不同类别的做了颜色区分
plt.figure(figsize=(10,6))
for i in range(150):
    if y[i] == 0:
        lcolor = 'red'
    elif y[i] == 1:
        lcolor = 'blue'
    else:
        lcolor = 'orange'
    line = x[i,:]
    plt.plot(line,color = lcolor)
plt.show()

这里写图片描述

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(12,10))
plt.subplot(221)
for i in range(150):
    x1 = x[i,0]
    plt.scatter(x1,y[i])
plt.title('变量1与最终目标的相关性')

plt.subplot(222)
for i in range(150):
    x1 = x[i,1]
    plt.scatter(x1,y[i])
plt.title('变量2与最终目标的相关性')

plt.subplot(223)
for i in range(150):
    x1 = x[i,2]
    plt.scatter(x1,y[i])
plt.title('变量3与最终目标的相关性')

plt.subplot(224)
for i in range(150):
    x1 = x[i,3]
    plt.scatter(x1,y[i])
plt.title('变量4与最终目标的相关性')

plt.show()

这个结果还是有点奇怪的好像,后续再学习学习
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43084928/article/details/82699683