Python 은 sklearn 을 사용 하여 실 현 된 각종 회귀 알고리즘 예제

이 글 의 사례 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기