【Python】Excel과 같은 절편 0의 근사식의 산출 방법 【scikit-learn】 메모

개요


  • Excel에는 절편 고정으로 근사식을 계산하는 방법이 있습니다.
  • numpy.polyfit에서는 절편 고정을 할 수 없다.
  • scikit-learn의 LinerRegression, make_pipeline, PolyFeatures로 실현

  • Excel의 경우


  • 적색선 부분을 설정하면 절편을 고정할 수 있다(파란 플롯의 근사식)
  • 이번에는 고정값을 0으로 했다.


  • 파이썬의 경우



    pandas+scikit-learn
    from sklearn.linear_model import Ridge,LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.pipeline import make_pipeline
    
    # Excelと同じデータを作成
    x=np.array([0,3,12.5,18.7,25,20,16,12.8,10.24,8.192])
    y=np.array([0,15,46.6,60.3,74.3,59.44,47.552,46,36.8,29.44])
    
    # DEGREE(次数)
    degree = 3
    
    # LinearRegression
    # make_pipelineでPolynomialFeaturesとLineaRegressionをがっちゃんこ
    model = make_pipeline(PolynomialFeatures(degree,include_bias=False),LinearRegression(fit_intercept=False))
    model.fit(x.reshape(-1,1),y)
    y_model=model.predict(x.reshape(-1,1))
    
    #データフレームの確認
    df = pd.DataFrame({'y_model.predict':y_model,},index=x)
    df.sort_index().plot(kind ='line',figsize=(10.,5.))
    
    # 係数
    model.steps[1][1].coef_
    
  • 비슷한 그래프가 되었습니다.
  • 계수 일치(거의)
  • array([ 5.06817229e+00, -1.71343566e-01,  3.49200227e-03])
    

    요약


  • numpy의 polyfit에서는 할 수 없었지만, scikit-learn으로 할 수 있어서 좋았다.
  • Excel의 대안으로 파이썬을 사용할 때 어려움을 겪었기 때문에 참고
  • 좋은 웹페이지 즐겨찾기