matplotlib全部操作代码链接code
标记颜色color
在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()
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()
官方网址: https://seaborn.pydata.org/introduction.html
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()
通过关键字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()