RegressionFeatures
Regressions are defined as a subclass of saccades, pointing in certain direction.
- class eyefeatures.features.stats.RegressionFeatures(ranges=((135, 225),), features_stats=None, **kwargs)[source]
Bases:
StatsTransformerRegression Features Transformer. The transformer identifies saccades, and then selects regressions from them using user-defined set of ranges.
- Parameters:
ranges (tuple[tuple[float, float], ...]) – tuple of tuples (l, r), where l and r are angles in degrees between 0 and 360 such that l <= r. If one wants a range that passes 360 degrees, they could use two ranges like ((270, 360), (0, 90)). Default: ((135, 225),) which corresponds to left-wards movements.
Example
Quick start with default parameters:
from eyefeatures.features.stats import RegressionFeatures # Detect regressions in [-90, 90] degrees. transformer = RegressionFeatures( features_stats={"length": ["mean", "std"]}, x="x", y="y", t="time", ranges=((270, 360), (0, 90)) ) features = transformer.fit_transform(fixations_df)
Supported Metrics
length: Amplitude in pixels.
\[\text{Length(Saccade}_i\text{)} = ||\text{Fixation}_{i+1} - \text{Fixation}_{i} ||_{2}\]
speed: Velocity in pixels/ms.
\[\text{Speed(Saccade}_i\text{)} = \frac{\text{Length(Saccade}_i\text{)}}{\text{Time}_{i+1} - \text{Time}_{i}}\]
acceleration: Acceleration in pixels/ms².
\[\text{Acceleration(Saccade}_i\text{)} = \frac{1}{2} \frac{\text{Speed(Saccade}_i\text{)} }{\text{Time}_{i+1} - \text{Time}_{i}}\]
mask: Transition boolean mask.
\[\text{Mask(Saccade}_i\text{)} = \mathbb{I}[\text{Fixation}_{i}\in\text{ some regression}]\]