def fit(self, X, y=None, input_type='<STR_LIT:data>'):
X = self._validate_input(X, input_type)<EOL>self.fit_geometry(X, input_type)<EOL>random_state = check_random_state(self.random_state)<EOL>self.embedding_, self.eigenvalues_, self.eigenvectors_ = spectral_embedding(self.geom_,<EOL>n_components = self.n_components,<EOL>eigen_solver = self.eigen_solver,<EOL>random_state = random_state,<EOL>drop_first = self.drop_first,<EOL>diffusion_maps = self.diffusion_maps,<EOL>diffusion_time = self.diffusion_time,<EOL>solver_kwds = self.solver_kwds)<EOL>self.affinity_matrix_ = self.geom_.affinity_matrix<EOL>self.laplacian_matrix_ = self.geom_.laplacian_matrix<EOL>self.laplacian_matrix_type_ = self.geom_.laplacian_method<EOL>return self<EOL>
Fit the model from data in X.

Parameters
----------
input_type : string, one of: 'data', 'distance' or 'affinity'.
    The values of input data X. (default = 'data')
X : array-like, shape (n_samples, n_features)
    Training vector, where n_samples in the number of samples
    and n_features is the number of features.

If self.input_type is distance, or affinity:

X : array-like, shape (n_samples, n_samples),
    Interpret X as precomputed distance or adjacency graph
    computed from samples.

Returns
-------
self : object
       Returns the instance itself.