Plot polynomial regression in Python with Scikit-Learn

10,343

Your data after polynomial feature transformation is of shape (n_samples,2). So pyplot is plotting the predicted variable with both columns.

Change the plot code to

plt.plot(X_plot_poly[:,i],model.predict(X_plot_poly),'-r')
where i your column number
Share:
10,343
Chuong Nguyen
Author by

Chuong Nguyen

Updated on June 05, 2022

Comments

  • Chuong Nguyen
    Chuong Nguyen almost 2 years

    I am writing a python code for investigating the over-fiting using the function sin(2.pi.x) in range of [0,1]. I first generate N data points by adding some random noise using Gaussian distribution with mu=0 and sigma=1. I fit the model using M-th polynomial. Here is my code

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.linear_model import LinearRegression
    
    # generate N random points
    N=30
    X= np.random.rand(N,1)
    y= np.sin(np.pi*2*X)+ np.random.randn(N,1)
    
    M=2
    poly_features=PolynomialFeatures(degree=M, include_bias=False)
    X_poly=poly_features.fit_transform(X) # contain original X and its new features
    model=LinearRegression()
    model.fit(X_poly,y) # Fit the model
    
    # Plot
    X_plot=np.linspace(0,1,100).reshape(-1,1)
    X_plot_poly=poly_features.fit_transform(X_plot)
    plt.plot(X,y,"b.")
    plt.plot(X_plot_poly,model.predict(X_plot_poly),'-r')
    plt.show()
    

    Picture of polynomial regression

    I don't know why I have M=2 lines of m-th polynomial line? I think it should be 1 line regardless of M. Could you help me figure out this problem.