This example demonstrates using quaternions as features for machine learning, combining the quaternion and ML modules.
- Extracting features from quaternions for ML
- Using quaternion components as input features
- Training clustering models on quaternion data
- Visualizing quaternion features
- V compiler installed (download here)
- VSL library installed (installation guide)
- No additional system dependencies required
# Navigate to this directory
cd examples/ml_quaternion_features
# Run the example
v run main.vThe example generates:
- Console output: Data generation, training progress, and accuracy results
- 2D Plot: Visualization of quaternion features (x vs y components)
- Clustering results: Accuracy of K-means clustering on quaternion features
import vsl.quaternion
import math
n_samples := 50
angle := math.pi / 4.0
mut quaternion_data := []quaternion.Quaternion{}
// Create two groups of orientations
for i in 0..n_samples {
if i < n_samples / 2 {
// Group 1: x-axis rotations
q := quaternion.from_axis_anglef3(angle, 1.0, 0.0, 0.0)
quaternion_data << q
} else {
// Group 2: y-axis rotations
q := quaternion.from_axis_anglef3(angle, 0.0, 1.0, 0.0)
quaternion_data << q
}
}We generate synthetic orientation data with two distinct groups.
import vsl.quaternion
mut feature_matrix := [][]f64{}
quaternion_data := []quaternion.Quaternion{} // Assume populated
// Extract quaternion components as features
for q in quaternion_data {
feature_matrix << [q.x, q.y] // 2D for Kmeans compatibility
}Quaternion components (w, x, y, z) become 4-dimensional feature vectors.
import vsl.ml
feature_matrix := [][]f64{} // Assume populated
mut data := ml.Data.from_raw_x(feature_matrix)!
mut train_data, _ := data.split(0.8)!
nb_classes := 2
mut model := ml.Kmeans.new(mut train_data, nb_classes, 'quaternion_kmeans')
model.train(epochs: 10)We train a K-means clustering model to identify the two groups.
- Robotics: Classify robot orientations
- Motion Analysis: Identify movement patterns
- Sensor Data: Process IMU/orientation sensor data
- Animation: Classify animation poses
Try modifying the example to:
- More features: Add derived features (magnitude, angle, etc.)
- Different algorithms: Try regression or classification
- Real data: Use actual sensor data
- More groups: Add a third orientation group
- Feature engineering: Create additional features from quaternions
ml_kmeans- Basic K-means clusteringquaternion_orientation_tracking- Orientation trackingquaternion_rotation_3d- Quaternion rotations
Low accuracy: Try different initial centroids or more training epochs
Plot doesn't open: Ensure web browser is installed
Module errors: Verify VSL installation
Explore more ML and quaternion examples in the examples directory.