Spaces:
Sleeping
Sleeping
| import numpy as np | |
| TIMESTEPS = 120 | |
| def generate_normal(): | |
| acc = np.random.normal(9.8, 2, (TIMESTEPS, 3)) | |
| gyro = np.random.normal(0, 0.5, (TIMESTEPS, 3)) | |
| speed = np.linspace(30, 50, TIMESTEPS) | |
| return np.hstack([acc, gyro, speed.reshape(-1,1)]), 0 | |
| def generate_brake(): | |
| acc = np.random.normal(9.8, 2, (TIMESTEPS, 3)) | |
| acc[-20:] += np.random.normal(-10, 3, (20, 3)) | |
| gyro = np.random.normal(0, 1, (TIMESTEPS, 3)) | |
| speed = np.linspace(50, 5, TIMESTEPS) | |
| return np.hstack([acc, gyro, speed.reshape(-1,1)]), 0 | |
| def generate_crash(): | |
| acc = np.random.normal(9.8, 2, (TIMESTEPS, 3)) | |
| acc[80:90] += np.random.normal(40, 12, (10, 3)) | |
| gyro = np.random.normal(0, 0.5, (TIMESTEPS, 3)) | |
| gyro[80:90] += np.random.normal(25, 10, (10, 3)) | |
| speed = np.linspace(60, 0, TIMESTEPS) | |
| speed[90:] = 0 | |
| return np.hstack([acc, gyro, speed.reshape(-1,1)]), 1 | |
| def generate_phone_drop(): | |
| acc = np.random.normal(9.8, 2, (TIMESTEPS, 3)) | |
| acc[60:70] += np.random.normal(25, 5, (10, 3)) | |
| gyro = np.random.normal(0, 2, (TIMESTEPS, 3)) | |
| speed = np.zeros(TIMESTEPS) | |
| return np.hstack([acc, gyro, speed.reshape(-1,1)]), 0 | |
| def create_dataset(n=5000): | |
| X, y = [], [] | |
| for _ in range(n): | |
| choice = np.random.choice( | |
| ["normal", "brake", "crash", "phone"], | |
| p=[0.25, 0.25, 0.3, 0.2] | |
| ) | |
| if choice == "normal": | |
| d, l = generate_normal() | |
| elif choice == "brake": | |
| d, l = generate_brake() | |
| elif choice == "crash": | |
| d, l = generate_crash() | |
| else: | |
| d, l = generate_phone_drop() | |
| X.append(d) | |
| y.append(l) | |
| return np.array(X), np.array(y) |