human
(To no one's surprise, our model performs quite poorly, since zero effort was made to identify and incorporate the most informative features or appropriate basis functions. Rather, they were chosen solely to maximize clarity of exposition.)
Recap
So let's recap what we've done.

We started out with a dataset with 442 samples and 10 features, represented by 442x10 matrix X
For one reason or another, we wanted to use different basis functions for different subsets of features. Apparently, we wanted features 2 and 5 for one basis function and features 6, 8 and 9 for another. Therefore, we 
sliced the matrix X to obtain 442 by 2 matrix X1 and 
sliced the matrix X to obtain 442 by 3 matrix X2.
We
applied a polynomial basis function of degree 2 to X1 with 2 features and 442 samples. This returns a dataset X1_poly with $\begin{pmatrix} 4 \ 2 \end{pmatrix} = 6$ features and 442 samples. (NB: In general, the number of output features for a polynomial basis function of degree $d$ on $n$ features is the number of multisets of cardinality $d$, with elements taken from a finite set of cardinality $n+1$, which is given by the multiset coefficient $\begin{pmatrix} \begin{pmatrix} n + 1 \ d \end{pmatrix} \end{pmatrix} = \begin{pmatrix} n + d \ d \end{pmatrix}$.) So from 442 by 2 matrix X1 we obtain 442 by 6 matrix X1_poly
applied a radial basis function with 2 mean vectors $\mu_1 = \begin{pmatrix} 0 & 0.2 & 0.4 \end{pmatrix}^T$ and $\mu_2 = \begin{pmatrix} 0.6 & 0.8 & 1.0 \end{pmatrix}^T$, which is represented by the 2 by 3 matrix mu. From the 442 by 3 matrix X2, we obtain 442 by 2 matrix X2_radial
Next, we horizontally concatenated 442 by 6 matrix X1_poly with 442 by 2 matrix X2_radial to obtain the final 442 by 8 matrix X_concat
Finally, we fitted a linear model on X_concat.

So this is how we went from a 442x10 matrix X to the 442x8 matrix X_concat.
With Pipeline and Feature Union
First we define a transformer that slices up the input data. Note instead of working with (tuples of) slice objects, it is usually more..."
Please write code following the instructions in jupyter notebook style.
assistant
#Here is code to (To no one's surprise, our model performs quite poorly, since zero effort was made to identify and incorporate the most informative features or appropriate basis functions.

class ArraySlicer(BaseEstimator, TransformerMixin):
    
    def __init__(self, index_exp):
        self.index_exp = index_exp
        
    def fit(self, X, y=None):
        return self
    
    def transform(self, X, y=None):
        return X[self.index_exp]

model = \
make_pipeline(
    make_union(
        make_pipeline(
            ArraySlicer(np.index_exp[:, np.array([2, 5])]),
            PolynomialFeatures()
        ),
        make_pipeline(
            ArraySlicer(np.index_exp[:, np.array([6, 8, 9])]),
            RadialFeatures(mu)
        )
    )
)

model.fit(X)

model.transform(X).shape

# sanity check
model.transform(X)[:5, ::2].round(2)