Python数据分析之绘图库(matplotlib&seaborn)

文章目录

  • 数据分析绘图库Matplotlib
      • 绘图基础知识
      • 绘图步骤
      • 属性信息
  • K近邻算法分类可视化分析
      • K近邻算法原理
      • K近邻算法数据集
      • K近邻算法回归可视化分析
  • seaborn库
      • seaborn整体风格
      • seaborn设置子图风格

数据分析绘图库Matplotlib

matplotlib全部操作代码链接code

  • matplotlib是python比较底层的可视化库,可定制性强、图表资源丰富、简单易用、达到出版质量级别。
  • Seaborn是在matplotlib的基础上进行了更高级的API封装, 作图更加容易。
  • 它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。
  • Matplotlib 是 Python 的绘图库。
  • 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
  • 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

绘图基础知识

图例Legend 代表图形里的内容
网格Grid,图形中的虚线,True显示网格
点 Markers:表示点的形状。
Python数据分析之绘图库(matplotlib&seaborn)_第1张图片

  • 基本的视觉元素有三种:点、线、柱状。分析下面需求绘制什么图形?
  • 学生为某科课程花费的时间和考试成绩两者之间的关系,查看两者之间的相关性。

Python数据分析之绘图库(matplotlib&seaborn)_第2张图片

绘图步骤

Python数据分析之绘图库(matplotlib&seaborn)_第3张图片

属性信息

Python数据分析之绘图库(matplotlib&seaborn)_第4张图片
maker标记样式
Python数据分析之绘图库(matplotlib&seaborn)_第5张图片

标记颜色color

K近邻算法分类可视化分析

K近邻算法原理

  1. K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
  2. 该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。
  3. K近邻算法,即近朱者赤,近墨者黑。新的数据点离谁(一个或多个近邻点)最近, 就和谁属于同一类。
    Python数据分析之绘图库(matplotlib&seaborn)_第6张图片

K近邻算法数据集

在skilit-learn中内置了若干个玩具数据集(Toy Datasets), 还有一些API可以自己动手生成数据集, 如下面代码所示:

# 导入数据集生成器
from sklearn.datasets import  make_blobs
# 导入KNN分类器
from sklearn.neighbors import  KNeighborsClassifier
# 导入画图工具
import matplotlib.pyplot as  plt
# 导入数据集拆分工具(训练集和测试集的分割)
from sklearn.model_selection import  train_test_split
 
# 生成样本数为200, 分类数为2的数据集.
# random_state随机种子,保证每次随机生成的样本信息一致。
X, y = make_blobs(n_samples=200, centers=2, random_state=8)
# cmap: 色彩盘, edgecolors:轮廓颜色
plt.scatter(X[:, 0], X[:, 1], edgecolors='c')
plt.title('KNN')
plt.show()

生成结果:Python数据分析之绘图库(matplotlib&seaborn)_第7张图片

K近邻算法回归可视化分析

K近邻算法也可以用于回归, 原理和分类相同。 计算每个数据点的预测值时,模型会选择离该数据点最近的若干个点,并将它们的y值取平均值,并作为新数据点的预测值。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.neighbors import KNeighborsRegressor
 
# 产生回归的数据集(训练集)
X, y = make_regression(n_samples=100, n_features=1, n_informative=1,
                       noise=50, random_state=8)
 
# 通过K近邻的回归器, 拟合/寻找模型
reg = KNeighborsRegressor()
reg.fit(X, y)
 
# 给定一些新的数据(测试集),预测y值
"""
一维数组: np.linspace [1, 2, 3, 4, 5]
n*1数组: rwshape(-1, 1)
reg.predict([[1], [2]])  # 预测市需要传递的信息
"""
test_x = np.linspace(-3, 3, 100).reshape(-1, 1)
test_y = reg.predict(test_x)
print("模型的准确度: ", reg.score(X, y))
 
# ***********中文乱码如何解决
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制图形
plt.scatter(X, y, marker='*', color='orange', edgecolors='orange', label='训练集')
plt.plot(test_x, test_y, color='black', label='测试集')
plt.title('KNN Regressor')
plt.legend()
plt.show()

Python数据分析之绘图库(matplotlib&seaborn)_第8张图片

seaborn库

官方网址: https://seaborn.pydata.org/introduction.html

seaborn整体风格

Seaborn共提供5种主题风格,分别为darkgrid、whitegrid、dark、 white以及ticks。
利用set()和set_style()两个函数对整体风格进行控制。

import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
 
# 定义一个绘图函数
def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i*.5)*(7-i)*flip)
 
# 设置sns的风格
sns.set(style='ticks')
sinplot()
# True代表不显示(右和上边框不显示)
sns.despine(top=True, right=True)
plt.show()

Python数据分析之绘图库(matplotlib&seaborn)_第9张图片

seaborn设置子图风格

通过关键字with,对不同子图设置风格

import  matplotlib.pyplot as plt
import  numpy as np
import  seaborn as sns
 
figure = plt.figure(figsize=(10, 10))
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
 
with sns.axes_style(style='dark'):
    ax1 = plt.subplot(2, 1, 1)
    ax1.plot(x, y1, color='orange', linestyle='-.')
    ax1.set_title('y = sinx')
    ax1.set_xlabel('x')
    ax1.set_ylabel('y')
 
 
with sns.axes_style(style='whitegrid'):
    ax2 = plt.subplot(2, 1, 2)
    ax2.plot(x, y2, color='m', linestyle='-.')
    ax2.set_title('y = cosx')
    ax2.set_xlabel('x')
    ax2.set_ylabel('y')
 
plt.show()

Python数据分析之绘图库(matplotlib&seaborn)_第10张图片

你可能感兴趣的:(python--数据分析)