소개
게시글
질문&답변
선생님! 강의 잘 보고 있습니다.!
감사합니다!!
- 0
- 2
- 147
질문&답변
무슨 문제인지 모르겠어요
해결되었습니다! 감사합니다 선생님!
- 0
- 4
- 7.9K
질문&답변
무슨 문제인지 모르겠어요
import matplotlib.pyplot as plt from sklearn.pipeline import Pipeline from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression import numpy as np from sklearn.metrics import mean_squared_error, r2_score %matplotlib inline def true_fun(x): return np.cos(1.5 *np.pi * x) # random 값으로 구성된 X값에 대해 Cosine 변환값을 반환 np.random.seed(0) n_samples=30 x=np.sort(np.random.rand(n_samples)) y=true_fun(x)+np.random.randn(n_samples)*0.1 plt.figure(figsize=(14,5)) degrees=[1,4,15] for i in range(len(degrees)): ax=plt.subplot(1,len(degrees),i+1) plt.setp(ax,xticks=(),yticks=()) # 개별 degree별로 polynomial 변환합니다. polynomial_features=PolynomialFeatures(degree=degrees[i],include_bias=False) # 상수항 포함 X linear_regression=LinearRegression() pipe=Pipeline([('polynomial_features',PolynomialFeatures),('linear_regression',LinearRegression)]) pipe.fit(x.reshape(-1,1),y) scores=cross_val_score(pipe,x.reshape(-1,1),y,scoring='neg_mean_squared_error',cv=10) #pipeline을 구성하는 세부 객체를 접근하는 named_steps['객체명']을 이용해 회귀계수 추출 coefficients=pipe.named_steps['linear_regression'].coef_ print("\n Degree {0} 회귀 계수는 {1} 입니다.".format(degrees[i],np.round(coefficients,2))) print('\n Degree {0} MSE는 {1}입니다.'.format(degrees[i],-1*np.mean(scores))) # 0부터 1까지 테스트 데이터 세트를 100개로 나눠 예측을 수행합니다. # 테스트 데이터 세트에 회귀 예측을 수행하고 예측 곡선과 실제 곡선을 그려서 비교합니다. X_test=np.linspace(0,1,100) # 예측값 곡선 plt.plot(X_test,pipe.predict(X_test[:,np.newaxis]),label="Model") # 실제값 곡선 plt.plot(X_test.true_fun(X_test),'--',label="True function") plt.scatter(X,y,edgecolor='b',s=20,label="Samples") plt.xlabel("X");plt.ylabel("y");plt.xlim((0,1));plt.ylim((-2,2));plt.legend(loc='best') # 최적의 위치에 범례 위치시킴 plt.title("Degree {}\nMSE={:.2e}(+/-{:.2e})".formate(degrees[i],-scores.mean(),scores.std())) plt.show()
- 0
- 4
- 7.9K