#scikit-learn 다항식 회귀
할 일
# 학습 데이터
y = 2x^2 + 3x + 1
고스 소음을 넣은 물건을 사용했다.학습 데이터는 100이다.
예측에 사용된 데이터는 동일한 공식으로 재생성되며,
50개를 준비했다
xb2 = 10 * np.random.rand(100, 1)
yb2 = xb2**2 + 3.05*xb2 + 1.1 + np.random.randn(100,1)
plt.scatter(xb2,yb2,c = "b")
다항식 회귀 준비
데이터 X(설명 변수)의 차원은 1이지만 데이터만 보면
이차 다항식에서 나온 것 같습니다.
sklearn의 PolinomialFeatures 기능 사용
원 데이터의 제곱 후의 데이터를 새로운 특징량으로 첨가하다.from sklearn.preprocessing import PolynomialFeatures as PF
pf = PF(degree=2, include_bias = False)
xb2_poly = pf.fit_transform(xb2)
Elastic-Net을 통한 학습
이번에 사용한 기종은 능선 회귀, 라소 회귀 등을 포함한다.
기본적으로 학습에서 최소화해야 할 원가 함수의 정규화항(제약)
하면, 과도한 학습을 방지할 수 있다.
Elastic Net은 척추 회귀와 Lasso 회귀에 사용 가능
이번에는 단순한 데이터이기 때문에 2차 다항식으로 회귀해야 한다고 판단하기 쉽다
실제로 특징량이 더 많기 때문에 이것은 매우 유용하다.
J(\theta) = MSE(θ) + r\alpha \sum_i^n|\theta_i| + \frac{1- r}{2} \alpha \sum_i^n \theta^2_i
\\
*MSE(\theta):最小二乗法誤差。
\\
制約を加えない場合によく用いられるコスト関数。
이 Elastic Net에서 구속조건의 정도를 매개변수로 나타냅니다.α및
산등성이로 돌아가기로 결정하고,lasso로 돌아가려면 어느 r를 중시해야 하는가
정할 필요가 있다.이것은 격자 검색 등을 사용합니다
실제로 어떤 파라미터를 사용할 때 예측 성능이 좋은지 탐색할 필요가 있다.
이번에는 Elastic Net을 사용했지만 아래 블러셔 등을 사용했습니다.
어떤 모델을 사용해야 하는지에 대한 판단을 하다.
from sklearn.linear_model import ElasticNet
e_net = ElasticNet(alpha = 0.1, l1_ratio = 0.5)
e_net.fit(xb2_poly, yb2)
예측
그리고 상술한 예측을 데이터로 예측한다.
이때 numby의 정렬 등을 사용하여 설명 변수의 순서를 승차순으로 설정해야 한다.xb2_t = 10* np.random.rand(50, 1)
print("xb2_t\n",xb2_t.shape)
#np.sortの使い方注意
xb2_t = np.array([np.sort(xb2_t[:,0])]).reshape(50,1)
print("xb2_t after\n", xb2_t.shape)
xb2t_poly = pf.fit_transform(xb2_t)
yb2_pred = e_net.predict(xb2t_poly)
plt.scatter(xb2,yb2,color = "blue")
plt.plot(xb2_t,yb2_pred,"red")
plt.show()
참고 자료
scikit-learn과 TensorFolow 기반의 실천 기계 학습
저자: 오르 론, 하전륜 대감역, 장미 고홍역
https://www.oreilly.co.jp/books/9784873118345/
Reference
이 문제에 관하여(#scikit-learn 다항식 회귀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/orangeBeens/items/0f8e3b326ddf6f786754
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from sklearn.preprocessing import PolynomialFeatures as PF
pf = PF(degree=2, include_bias = False)
xb2_poly = pf.fit_transform(xb2)
이번에 사용한 기종은 능선 회귀, 라소 회귀 등을 포함한다.
기본적으로 학습에서 최소화해야 할 원가 함수의 정규화항(제약)
하면, 과도한 학습을 방지할 수 있다.
Elastic Net은 척추 회귀와 Lasso 회귀에 사용 가능
이번에는 단순한 데이터이기 때문에 2차 다항식으로 회귀해야 한다고 판단하기 쉽다
실제로 특징량이 더 많기 때문에 이것은 매우 유용하다.
J(\theta) = MSE(θ) + r\alpha \sum_i^n|\theta_i| + \frac{1- r}{2} \alpha \sum_i^n \theta^2_i
\\
*MSE(\theta):最小二乗法誤差。
\\
制約を加えない場合によく用いられるコスト関数。
이 Elastic Net에서 구속조건의 정도를 매개변수로 나타냅니다.α및산등성이로 돌아가기로 결정하고,lasso로 돌아가려면 어느 r를 중시해야 하는가
정할 필요가 있다.이것은 격자 검색 등을 사용합니다
실제로 어떤 파라미터를 사용할 때 예측 성능이 좋은지 탐색할 필요가 있다.
이번에는 Elastic Net을 사용했지만 아래 블러셔 등을 사용했습니다.
어떤 모델을 사용해야 하는지에 대한 판단을 하다.
from sklearn.linear_model import ElasticNet
e_net = ElasticNet(alpha = 0.1, l1_ratio = 0.5)
e_net.fit(xb2_poly, yb2)
예측
그리고 상술한 예측을 데이터로 예측한다.
이때 numby의 정렬 등을 사용하여 설명 변수의 순서를 승차순으로 설정해야 한다.xb2_t = 10* np.random.rand(50, 1)
print("xb2_t\n",xb2_t.shape)
#np.sortの使い方注意
xb2_t = np.array([np.sort(xb2_t[:,0])]).reshape(50,1)
print("xb2_t after\n", xb2_t.shape)
xb2t_poly = pf.fit_transform(xb2_t)
yb2_pred = e_net.predict(xb2t_poly)
plt.scatter(xb2,yb2,color = "blue")
plt.plot(xb2_t,yb2_pred,"red")
plt.show()
참고 자료
scikit-learn과 TensorFolow 기반의 실천 기계 학습
저자: 오르 론, 하전륜 대감역, 장미 고홍역
https://www.oreilly.co.jp/books/9784873118345/
Reference
이 문제에 관하여(#scikit-learn 다항식 회귀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/orangeBeens/items/0f8e3b326ddf6f786754
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
xb2_t = 10* np.random.rand(50, 1)
print("xb2_t\n",xb2_t.shape)
#np.sortの使い方注意
xb2_t = np.array([np.sort(xb2_t[:,0])]).reshape(50,1)
print("xb2_t after\n", xb2_t.shape)
xb2t_poly = pf.fit_transform(xb2_t)
yb2_pred = e_net.predict(xb2t_poly)
plt.scatter(xb2,yb2,color = "blue")
plt.plot(xb2_t,yb2_pred,"red")
plt.show()
scikit-learn과 TensorFolow 기반의 실천 기계 학습
저자: 오르 론, 하전륜 대감역, 장미 고홍역
https://www.oreilly.co.jp/books/9784873118345/
Reference
이 문제에 관하여(#scikit-learn 다항식 회귀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/orangeBeens/items/0f8e3b326ddf6f786754텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)