input: Write a python function to perform polynomial regression and visualize the results using matplotlib.
  assert polynomial_regression(np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]), np.array([[3], [5], [7], [9], [11], [14], [17], [22], [25], [27]])) is None
output: def polynomial_regression(X, y):
      from sklearn.preprocessing import PolynomialFeatures
      from sklearn.linear_model import LinearRegression
      import matplotlib.pyplot as plt
      import numpy as np
      
      # Transform the features into polynomial features
      poly = PolynomialFeatures(degree=2)
      X_poly = poly.fit_transform(X)
      
      # Fit the polynomial regression model
      model = LinearRegression()
      model.fit(X_poly, y)
      
      # Generate predictions
      X_fit = np.linspace(X.min(), X.max(), 100).reshape(-1, 1)
      X_fit_poly = poly.transform(X_fit)
      y_fit = model.predict(X_fit_poly)
      
      # Plot the results
      plt.scatter(X, y, color='red', label='Data Points')
      plt.plot(X_fit, y_fit, color='blue', label='Polynomial Regression Fit')
      plt.xlabel('X')
      plt.ylabel('y')
      plt.title('Polynomial Regression')
      plt.legend()
      plt.show()