Python 다항식 의합/회귀 단계 인 스 턴 스 확인
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression,Perceptron
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.model_selection import train_test_split
X = np.array([-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]).reshape(-1, 1)
y = np.array(2*(X**4) + X**2 + 9*X + 2)
#y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
rmses = []
degrees = np.arange(1, 10)
min_rmse, min_deg,score = 1e10, 0 ,0
for deg in degrees:
# ( degree=3 , [[x,x**2,x**3]] )
poly = PolynomialFeatures(degree=deg, include_bias=False)
x_train_poly = poly.fit_transform(x_train)
#
poly_reg = LinearRegression()
poly_reg.fit(x_train_poly, y_train)
#print(poly_reg.coef_,poly_reg.intercept_) #
#
x_test_poly = poly.fit_transform(x_test)
y_test_pred = poly_reg.predict(x_test_poly)
#mean_squared_error(y_true, y_pred) # , 。
poly_rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))
rmses.append(poly_rmse)
# r2 [0,1],R2 1 。
r2score = r2_score(y_test, y_test_pred)
# degree
if min_rmse > poly_rmse:
min_rmse = poly_rmse
min_deg = deg
score = r2score
print('degree = %s, RMSE = %.2f ,r2_score = %.2f' % (deg, poly_rmse,r2score))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(degrees, rmses)
ax.set_yscale('log')
ax.set_xlabel('Degree')
ax.set_ylabel('RMSE')
ax.set_title('Best degree = %s, RMSE = %.2f, r2_score = %.2f' %(min_deg, min_rmse,score))
plt.show()
인 변수 Y=2*(X**4)+X**2+9*X+2,독립 변수 와 인 변 수 는 완전한 공식 이기 때문에 그림 을 보면 뚜렷 하고 degree>=4 가 모두 일치 하 며 의합 함수 가 모두 정확 합 니 다.(RMSE 가 가장 작고 R 제곱 은 마이너스 가 아니 며 1 에 가 까 우 면 모델 이 가장 좋다)
Y 값 을 다음 과 같이 변경 하면:
y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1)
degree=3 이 가장 좋 고 r 제곱 도 1 에 가장 가깝다(주의:R 제곱 이 마이너스 라면 정확 하지 않 으 므 로 다시 테스트 해 야 한다.견본 데이터 가 비교적 적기 때문에 잘못 판단 할 수도 있다.
이상 의 이 Python 은 여러 가지 의합/회귀 의 단계 인 스 턴 스 를 확정 하 였 습 니 다.바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.