Python 은 sklearn 을 사용 하여 실 현 된 각종 회귀 알고리즘 예제
sklearn 으로 여러 가지 컴백 을 하고 있 습 니 다.
기본 회귀:선형,의사 결정 트 리,SVM,KNN
집적 방법:랜 덤 숲,Adaboost,GradientBoosting,Bagging,ExtraTrees
1.데이터 준비
실험 용 으로 나 는 스스로 이원 함 수 를 하나 썼 다.y=0.5*np.sin(x1)+0.5*np.cos(x2)+0.1*x1+3.그 중에서 x1 의 수치 범 위 는 0~50 이 고 x2 의 수치 범 위 는-10~10 이 며 x1 과 x2 의 훈련 집 은 모두 500 개 이 고 테스트 집 은 100 개 이다.이 가운데 훈련 집 에-0.5~0.5 의 소음 을 더 했다.함수 생 성 코드 는 다음 과 같 습 니 다:
def f(x1, x2):
y = 0.5 * np.sin(x1) + 0.5 * np.cos(x2) + 0.1 * x1 + 3
return y
def load_data():
x1_train = np.linspace(0,50,500)
x2_train = np.linspace(-10,10,500)
data_train = np.array([[x1,x2,f(x1,x2) + (np.random.random(1)-0.5)] for x1,x2 in zip(x1_train, x2_train)])
x1_test = np.linspace(0,50,100)+ 0.5 * np.random.random(100)
x2_test = np.linspace(-10,10,100) + 0.02 * np.random.random(100)
data_test = np.array([[x1,x2,f(x1,x2)] for x1,x2 in zip(x1_test, x2_test)])
return data_train, data_test
그 중에서 훈련 집(y 에-0.5~0.5 의 무 작위 소음 추가)과 테스트 집(소음 없 음)의 이미 지 는 다음 과 같다.2.scikit-learn 의 간단 한 사용
scikit-learn 은 매우 간단 합 니 다.하나의 알고리즘 대상 을 예화 한 다음 에 fit()함 수 를 호출 하면 됩 니 다.fit 이후 에
predict()
함 수 를 사용 하여 예측 한 다음 에score()
함 수 를 사용 하여 예측 치 와 실제 값 의 차 이 를 평가 하고 함 수 는 점 수 를 되 돌려 줍 니 다.전체 프로그램 코드:
import numpy as np
import matplotlib.pyplot as plt
###########1. ##########
def f(x1, x2):
y = 0.5 * np.sin(x1) + 0.5 * np.cos(x2) + 3 + 0.1 * x1
return y
def load_data():
x1_train = np.linspace(0,50,500)
x2_train = np.linspace(-10,10,500)
data_train = np.array([[x1,x2,f(x1,x2) + (np.random.random(1)-0.5)] for x1,x2 in zip(x1_train, x2_train)])
x1_test = np.linspace(0,50,100)+ 0.5 * np.random.random(100)
x2_test = np.linspace(-10,10,100) + 0.02 * np.random.random(100)
data_test = np.array([[x1,x2,f(x1,x2)] for x1,x2 in zip(x1_test, x2_test)])
return data_train, data_test
train, test = load_data()
x_train, y_train = train[:,:2], train[:,2] # x1,x2 y, y
x_test ,y_test = test[:,:2], test[:,2] # , y
###########2. ##########
def try_different_method(model):
model.fit(x_train,y_train)
score = model.score(x_test, y_test)
result = model.predict(x_test)
plt.figure()
plt.plot(np.arange(len(result)), y_test,'go-',label='true value')
plt.plot(np.arange(len(result)),result,'ro-',label='predict value')
plt.title('score: %f'%score)
plt.legend()
plt.show()
###########3. ##########
####3.1 ####
from sklearn import tree
model_DecisionTreeRegressor = tree.DecisionTreeRegressor()
####3.2 ####
from sklearn import linear_model
model_LinearRegression = linear_model.LinearRegression()
####3.3SVM ####
from sklearn import svm
model_SVR = svm.SVR()
####3.4KNN ####
from sklearn import neighbors
model_KNeighborsRegressor = neighbors.KNeighborsRegressor()
####3.5 ####
from sklearn import ensemble
model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=20)# 20
####3.6Adaboost ####
from sklearn import ensemble
model_AdaBoostRegressor = ensemble.AdaBoostRegressor(n_estimators=50)# 50
####3.7GBRT ####
from sklearn import ensemble
model_GradientBoostingRegressor = ensemble.GradientBoostingRegressor(n_estimators=100)# 100
####3.8Bagging ####
from sklearn.ensemble import BaggingRegressor
model_BaggingRegressor = BaggingRegressor()
####3.9ExtraTree ####
from sklearn.tree import ExtraTreeRegressor
model_ExtraTreeRegressor = ExtraTreeRegressor()
###########4. ##########
try_different_method(model_DecisionTreeRegressor)
3.결과 전시결정 트 리 회귀 결과:
선형 회귀 결과:
SVM 회귀 결과:
KNN 컴백 결과:
랜 덤 숲 회귀 결과:
Adaboost 복귀 결과:
GBRT 컴백 결과:
Bagging 컴백 결과:
극단 랜 덤 트 리 회귀 결과:
Python 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.