機械学習や深層学習の手法の検証に使える、渦巻き上のデータセットを作成してみます。
線形(直線)で分離できないデータ群をうまく分類する手法の検証用途に利用できます。

端的に上記のようなデータセットを利用することができます。
スパイラルデータを作成するコード
まず最初に、コードを貼り付けます。以下のコードをそのままコピペで上図のようなデータセットを構築することができます。
import numpy as np
from numpy import pi
import matplotlib.pyplot as plt
N = 200
# 0~pi の範囲でランダム位相をN個作成
theta = np.sqrt(np.random.rand(N)) * pi
# 位相が大きくなるほど値が大きくなる
scaler = 10 * theta + pi
data1 = np.array([np.cos(theta)*scaler, np.sin(theta)*scaler]).T
c1 = data1 + np.random.randn(N,2)
data2 = np.array([np.cos(theta - 0.7 * pi) * scaler, np.sin(theta - 0.7 * pi) * scaler]).T
c2 = data2 + np.random.randn(N,2)
data3 = np.array([np.cos(theta - 1.4 * pi) * scaler, np.sin(theta - 1.4 * pi) * scaler]).T
c3 = data3 + np.random.randn(N,2)
res1 = np.append(c1, np.zeros((N,1)), axis=1)
res2 = np.append(c2, np.ones((N,1)), axis=1)
res3 = np.append(c3, np.ones((N,1)), axis=1)
plt.scatter(res1[:,0], res1[:,1])
plt.scatter(res2[:,0], res2[:,1])
plt.scatter(res3[:,0], res3[:,1])
plt.show()
アルゴリズムの解説
ランダムに位相のリストを作成し、位相が大きくになるにつれて、位相に対応する円の円周が大きくなるようにして(円周は上記プログラムのsclaerに相当)、対応する円周上にプロットしただけです。
また系列に応じて、0.7$\pi$刻みで回転させています。
この辺りは言葉で表現難しいので、コードを見て確認してみてください。
別の記事でこれらを深層学習や非線形SVMで識別する方法についてまとめる予定です。