<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_radius(self, radius, override=True, X=None, n_components=2):
 """Set the radius for the adjacency and affinity computation By default, this will override keyword arguments provided on initialization. Parameters radius : float radius to set for adjacency and affinity. override : bool (default: True) if False, then only set radius if not already defined in `adjacency_args` and `affinity_args`. X : ndarray or sparse (optional) if provided, estimate a suitable radius from this data. n_components : int (default=2) the number of components to use when estimating the radius """

        if radius < 0:
            raise ValueError("radius must be non-negative")

        if override or ('radius' not in self.adjacency_kwds and
                        'n_neighbors' not in self.adjacency_kwds):
            self.adjacency_kwds['radius'] = radius

        if override or ('radius' not in self.affinity_kwds):
            self.affinity_kwds['radius'] = radius