ML之xgboost:利用xgboost算法(特征筛选和GridSearchCV)对数据集实现回归预测

目录

输出结果

实现代码


输出结果

['EnterCOD', 'EnterBOD', 'EnterAD', 'EnterZL', 'EnterZD', 'EnterPH', 'EnterSS', 'M4', 'N4', 'O4', 'P4', 'Q4', 'R4']EnterCOD  EnterBOD  EnterAD  EnterZL  EnterZD  EnterPH  EnterSS      M4  \
0     299.0       0.0     16.7     9.63     26.5        7    354.0  4609.0
1     331.0       0.0     15.0     9.34     31.8        7    297.5  4834.0
2     326.0       0.0     19.6    11.17     33.5        7    389.5  4928.0
3     230.0       0.0     17.4     6.23     32.3        7    277.5  5073.0
4     149.0       0.0     16.8     3.59     23.7        7    106.0  4856.0   N4    O4    P4     Q4    R4
0  2346.0  1.72  32.0  69.43  17.0
1  2434.0  1.72  34.0  70.34  18.0
2  2604.0  1.70  35.0  71.02  18.0
3  2678.0  1.68  36.0  70.96  19.0
4  2452.0  1.69  37.0  76.19  19.0  mlss准确率: 0.950752699205583
特征: Index(['EnterCOD', 'EnterBOD', 'EnterAD', 'EnterZL', 'EnterZD', 'EnterPH','EnterSS', 'M4', 'N4', 'O4', 'P4', 'Q4', 'R4'],dtype='object')
每个特征的重要性: [100.        21.307432  48.90534   37.218624  26.950356   2.08140631.82239   72.88005   49.49121   61.9334    19.071848  33.44125717.745914]mlss选取重要特征后准确率: 0.9485146037853682
重要特征: Index(['EnterCOD', 'M4', 'O4', 'N4', 'EnterAD', 'EnterZL', 'Q4', 'EnterSS','EnterZD', 'EnterBOD', 'P4', 'R4'],dtype='object')
每个重要特征的重要性: [100.        92.00673   75.79092   55.387436  36.038513  32.21763642.442307  28.243927  24.789852  12.685312  18.707016  19.150238]

实现代码


#ML之xgboost:利用xgboost算法(特征筛选和GridSearchCV)对数据集实现回归预测import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import metrics
import pickle
from xgboost.sklearn import XGBRegressor
from sklearn.preprocessing import StandardScaler
from clean_data import prep_water_data, normalize_water_data, normalize_data, delete_null_date
from sklearn.model_selection import KFold, train_test_split, GridSearchCV, cross_val_score
from sklearn.model_selection import TimeSeriesSplitdef GDBTTrain(X, y):"""xgboost用法"""train_x, test_x, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=0)  ##test_size测试集合所占比例test_preds = pd.DataFrame({"label": test_y})clf = XGBRegressor(learning_rate=0.1,  # 默认0.3n_estimators=400,  # 树的个数max_depth=8,)clf.fit(train_x, train_y)test_preds['y_pred'] = clf.predict(test_x)stdm = metrics.r2_score(test_preds['label'], test_preds['y_pred'])# GridSearchCV和cross_val_score的结果一样
#     scores = cross_val_score(clf, X, y, scoring='r2')
#     print(scores)
#     gs = GridSearchCV(clf, {}, cv=3, verbose=3).fit(X, y)return stdm, clfdef XGTSearch(X, y):print("Parameter optimization")n_estimators = [50, 100, 200, 400]max_depth = [2, 4, 6, 8]learning_rate = [0.0001, 0.001, 0.01, 0.1, 0.2, 0.3]param_grid = dict(max_depth=max_depth, n_estimators=n_estimators, learning_rate=learning_rate)xgb_model = XGBRegressor()kfold = TimeSeriesSplit(n_splits=2).get_n_splits([X, y])fit_params = {"eval_metric": "rmse"}grid_search = GridSearchCV(xgb_model, param_grid, verbose=1, fit_params=fit_params, cv=kfold)grid_result = grid_search.fit(X, y)# summarize resultsprint("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))means = grid_result.cv_results_['mean_test_score']stds = grid_result.cv_results_['std_test_score']params = grid_result.cv_results_['params']for mean, stdev, param in zip(means, stds, params):print("%f (%f) with: %r" % (mean, stdev, param))return means, grid_resultfeature_string = 'EnterCOD  EnterBOD    EnterAD EnterZL EnterZD EnterPH EnterSS  M4 N4  O4  P4  Q4  R4' # 选取的特征
outputs_string = 'mlss  mlvss   sv30 OutCOD OutBOD  OutAD   OutZL   OutZD   OutPH   OutSS' # 需要预测的标签
feature = feature_string.split()
outputs = outputs_string.split()
print(feature)def prep_water_data(data, columns):for c in columns:data[c] = [0 if ((x in ['Not Available', 'Not Mapped', 'NULL']) | (pd.isnull(x))) else x for x in data[c]]return datadef delete_null_date(data, date_name):data = data[data[date_name].notnull()]  # 删除日期存在缺失的数据return datadata = pd.read_csv('water_a.csv', encoding="gb18030")
data = prep_water_data(data, feature)print(data.iloc[:5][feature])def predict(data, out):data = delete_null_date(data, out)y = data[out]# y = y.as_matrix()X = data[feature]stdm, clf = GDBTTrain(X, y)print(out +'准确率:', stdm)feature_importance = clf.feature_importances_feature_importance = 100.0 * (feature_importance / feature_importance.max())print('特征:', X.columns)print('每个特征的重要性:', feature_importance)sorted_idx = np.argsort(feature_importance)pos = np.arange(sorted_idx.shape[0])plt.barh(pos, feature_importance[sorted_idx], align='center')plt.yticks(pos, X.columns[sorted_idx])plt.xlabel('Features')plt.ylabel('Importance')plt.title('Variable Importance')plt.show()#.......................选取重要性高的特征再次进行训练和预测..................................#X = data[X.columns[sorted_idx][::-1][:-1]]stdm, clf = GDBTTrain(X, y)print(out +'选取重要特征后准确率:', stdm)feature_importance = clf.feature_importances_feature_importance = 100.0 * (feature_importance / feature_importance.max())print('重要特征:', X.columns)print('每个重要特征的重要性:', feature_importance)sorted_idx = np.argsort(feature_importance)pos = np.arange(sorted_idx.shape[0])plt.barh(pos, feature_importance[sorted_idx], align='center')plt.yticks(pos, X.columns[sorted_idx])plt.xlabel('Features')plt.ylabel('Importance')plt.title('重要特征 Variable Importance')plt.show()for out in outputs[:1]:sorted_idx = predict(data, out)

ML之xgboost:利用xgboost算法(特征筛选和GridSearchCV)对数据集实现回归预测相关推荐

  1. ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能

    ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 estimator = PC ...

  2. python随机森林筛选变量_一种基于随机森林的改进特征筛选算法

    刘云翔 陈斌 周子宜 摘  要: 肝癌是一种我国高发的消化系统恶性肿瘤,患者死亡率高,威胁极大.而其预后情况通常只能通过医生的专业知识和经验积累来粗略判断,准确率较差.因此文中在分析随机森林算法的基本 ...

  3. NLP学习__task3: : 特征提取:TF-IDF、词向量表示、互信息原理、特征筛选

    1 TF-IDF原理 TF-IDF原理在另一篇博客:关键词抽取模型  已经提及,这里不在重复. 2 文本矩阵化 笔者理解的文本矩阵化,即将文本进行"词向量化".这里简述常见的语言表 ...

  4. ML之xgboost:利用xgboost算法(自带,特征重要性可视化+且作为阈值训练模型)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(自带,特征重要性可视化+且作为阈值训练模型)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 ...

  5. ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集【特征列分段→独热编码】进行回归预测(房价预测)+预测新数据得分

    ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集[特征列分段→独热编码]进行回归预测(房价预测)+预测新数据得分 导读 对Boston(波士顿房价)数据集进行特征工程,分 ...

  6. ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)

    ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参[2种方法,ShuffleSplit+GridSearchCV.TimeSeriesSplitGSCV].模型评估) 目录 ...

  7. ML之xgboost:利用xgboost算法对breast_cancer数据集实现二分类预测并进行graphviz二叉树节点图可视化

    ML之xgboost:利用xgboost算法对breast_cancer数据集实现二分类预测并进行graphviz二叉树节点图可视化 目录 实现结果 实现代码 实现结果

  8. ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 ...

  9. ML之xgboost:利用xgboost算法(sklearn+7CrVa)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(sklearn+7CrVa)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 设计思路 核心 ...

最新文章

  1. http_build_query用法,挺方便的
  2. MonkeyServer的使用及自动化
  3. Redhat Linux 防火墙
  4. 最真实的办公自动化案例!
  5. 元璟资本陈洪亮解析人货场融合 消费者变成“合作者”
  6. Raect Router 4 的使用 (1)
  7. nginx之反向代理服务器
  8. redis查询key的数量
  9. Linus Torvalds的安全性,Facebook的AI工具等
  10. list删除null
  11. (转)Page.ClientScript.RegisterStartupScript 与Page.ClientScript.RegisterClientScriptBlock 之间的区别...
  12. SVN:本地项目与SVN项目进行关联
  13. 谷歌地图api根据经纬度查询地名php,在线查询经纬度 google map查询地名返回经纬度 geocode geocoder的完整实例 代码下载...
  14. 金蝶迷你版凭证导入工具_金蝶kis迷你版如何插入凭证?
  15. 代尔夫特理工大学计算机科学排名,2019-2020代尔夫特理工大学世界排名多少【QS最新第50名】...
  16. [附源码]java毕业设计网上宠物商店
  17. Ubuntu16.04编译android6.0.1源码记录
  18. html2txt noblank.c
  19. fireworks 投影_使用Fireworks MX粘贴到内部
  20. 知识图谱构建2——使用protege构建本体

热门文章

  1. java空值转datetime,关于java1.8中LocalDateTime实现日期,字符串互转小坑。
  2. excel 复制数据 sql server 粘贴_几百个Excel表格的内容要复制粘贴,如何一键自动化搞定?| 州的先生...
  3. [蓝桥] 算法提高 队列操作
  4. js 中的 number 为何很怪异
  5. D2 AJAX 封装策略
  6. SQL Server 2016 列存储技术做实时分析
  7. 解决电信网通封锁路由以及上网机器台数的破解方法
  8. Java中的数据结构
  9. Redis性能监控指标汇总
  10. 一个老程序员的30年生涯回顾(译文)