ウィルス分布 データ作成
分布の作成
ウィルスの感染分布を作成します。赤が感染済み、青が非感染で正規部分布をx,y座標ともに中心点から(2,2)づつずらして正規分布をずらす。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# TensorFlow r1.0.0
# Python 2.7.6
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
x_positive = np.random.randn(500,1) + 2
y_positive = np.random.randn(500,1) + 2
x_negative = np.random.randn(500,1) - 2
y_negative = np.random.randn(500,1) - 2
plt.figure(1)
plt.plot(x_positive, y_positive, 'ro', label='Data')
plt.plot(x_negative, y_negative, 'bo', label='Data')
plt.show()
データの作成
次に、現在 1x500の行列である、x_positive,y_positiveとx_negative,y_negativeを2x1000の1つの配列であるVIRUSに格納する。
N = len(x_positive)
POSITIVE = np.zeros((N,2))
for i in xrange(N):
POSITIVE[i][0] = x_positive[i]
POSITIVE[i][1] = y_positive[i]
NEGATIVE = np.zeros((N,2))
for i in xrange(N):
NEGATIVE[i][0] = x_negative[i]
NEGATIVE[i][1] = y_negative[i]
VIRUS = np.vstack([NEGATIVE, POSITIVE]).astype(np.float32)
感染/非感染のラベル付け
また、感染状況を表す行列 STATEを2x1000行列で作成し、感染している場合は[1,0], 感染していない場合は、[0, 1]を代入する。前の項目で、前半500個を感染済み、後半の500個を非感染として2x1000行列に格納しているので、前半の500個を感染済みとして[1,0]とし、後半の5000個を未感染として[0,1]を代入する。
[1,0] 感染 [0,1] 非感染
STATE = np.zeros((N*2,2))
for i in xrange(N*2):
if i < N:
STATE[i][0] = 1
else:
STATE[i][1] = 1
Notebook
https://github.com/FaBoPlatform/TensorFlow/blob/master/notebooks/virus01.ipynb