python + GBDT 수치 예측 실현
2849 단어 데이터 발굴
http://www.360doc.com/content/14/0911/22/14875906_408775170.shtml
https://blog.csdn.net/zhangbaoanhadoop/article/details/81840669 http://www.cnblogs.com/LeftNotEasy/archive/2011/03/07/random-forest-and-gbdt.html
GBDT 에 대해 모델 훈련 을 하고 데 이 터 를 예측 하 는 방법 (분류 가 아 닌) 을 보 여 주 며 반환 값 을 처리 하고 모델 의 좋 고 나 쁨 을 평가 하 는 방법 을 보 여 준다.
배경 은 천지 의 IJICAI 대회 입 니 다. 데 이 터 는 이미 처리 되 었 습 니 다. 여기 서 직접 사용 합 니 다.
코드 는 다음 과 같다.
#$encoding=utf-8
'''
ubuntu+IDEA+python35
: GBDT
: IJICAI,
PS:feature_data.csv
'''
import numpy as np
import pandas as pd
from sklearn import ensemble, cross_validation
#
def rmspe(zip_list,count):
# w = ToWeight(y)
# rmspe = np.sqrt(np.mean((y - yhat) ** 2))
sum_value=0.0
# count=len(zip_list)
for real,predict in zip_list:
v1=(real-predict)**2
sum_value += v1
v2=sum_value / count
v3=np.sqrt(v2)
return v3
#
def get_features_target(data):
data_array=pd.np.array(data)# dataframe, , array
features_list=[]
target_list=[]
for line in data_array:
temp_list=[]
for i in range(0,384):# 384
if i == 360 :#index=360 flow
target_temp=int(line[i])
else:
temp_list.append(int(line[i]))
features_list.append(temp_list)
target_list.append(target_temp)
return features_list, target_list
# return pd.DataFrame(features_list),pd.DataFrame(target_list)
def run_demo():
feature_save_path = "/home/wangtuntun/IJCAI/Data/feature_data.csv" #
data = pd.read_csv(feature_save_path)
data_other,data=cross_validation.train_test_split(data,test_size=0.001,random_state=10)# ,
train_and_valid, test = cross_validation.train_test_split(data, test_size=0.2, random_state=10)
train, valid = cross_validation.train_test_split(train_and_valid, test_size=0.01, random_state=10)
train_feature, train_target = get_features_target(train)
test_feature, test_target = get_features_target(test)
valid_feature, valid_target = get_features_target(valid)
params = {'n_estimators': 500, 'max_depth': 4, 'min_samples_split': 2,
'learning_rate': 0.01, 'loss': 'ls'}
clf = ensemble.GradientBoostingRegressor(**params)
clf.fit(train_feature, train_target) #
# mse = mean_squared_error(test_target, clf.predict(test_feature)) # MSE
# print(mse)
pre=clf.predict(test_feature)
pre_list=list(pre)
real_pre_zip=zip(test_target,pre_list)
count=len(pre_list)
error=rmspe(real_pre_zip,count)
print(error)
run_demo()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 머신러닝용 경마 데이터 준비하지만 자유형 구축의 논리에도 시간이 걸리고 자유형 자체에도 시간이 걸리는 점 등을 고려해 이번에는 중앙경마를 주최하는 JRA가 제공하는 JRA-VAN 데이터 실험실의 무료 체험판에 첨부된 DVD 데이터로 MySQL...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.