TensorFlow2.0之反向传算法实战
import tensorflow as tf
import numpy as np
import sklearn
from sklearn import datasets
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import seaborn as sns
# 采样点数
N_SAMPLES = 2000
# 测试数量比率
TEST_SIZE = 0.3
# 生成数据集
x, y = datasets.make_moons(n_samples=N_SAMPLES, noise=0.2, random_state=100)
# 将2000个点按照7:3分割为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=TEST_SIZE, random_state=42)
print(x.shape, y.shape)
# 绘制数据集的分布,x为2D坐标,y为数据点的标签
def make_plot(x, y, plot_name, file_name=None, xx=None, yy=None, preds=None, dark=False):
if dark:
plt.style.use('dark_background')
else:
sns.set_style("whitegrid")
plt.figure(figsize=(16, 12))
axes = plt.gca()
axes.set(xlabel="$x_1$", ylabel="$x_2$")
plt.title(plot_name,fontsize=30)
plt.subplots_adjust(left=0.20)
plt.subplots_adjust(right=0.80)
if xx is not None and yy is not None and preds is not None:
plt.contour(xx, yy, preds.reshape(xx.shape), levels=[.5], cmap="Greys", vmin=0, xmax=.6)
# 绘制散点图,根据标签区分颜色
plt.scatter(x[:, 0], x[:, 1], c=y.ravel(), s=40, cmap=plt.cm.Spectral, edgecolors='none')
plt.savefig("dataset.svg")
plt.close()
# 调用 make_plot 函数绘制数据的分布,其中 X 为 2D 坐标,y 为标签
make_plot(x, y, "Classification Dataset Visualization ")
plt.show()