对数据集进行的改进:和死亡率的皮尔逊系数小于0.01的参数被我丢掉了——

'infant deaths', 'Measles ', 'under-five deaths ', 'Population', 'Year'

可选线性模型:RandomForestRegressor, ExtraTreesRegressor 感觉效果差不多

可选验证方法:GridSearchCV, RandomizedSearchCV(前者是穷举,后者是抽取n_iter个参数组合进行验证,想要模型性能选前者,想要节省时间选后者)

代码

import time
from sklearn.metrics import mean_squared_error, r2_score
import seaborn as sns
import pandas as pd
import sklearn
import numpy as npfrom sklearn.impute import SimpleImputer
from sklearn.preprocessing import MinMaxScaler
from sklearn.ensemble import RandomForestRegressor, ExtraTreesRegressor
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import GridSearchCV, RandomizedSearchCVimport joblib# 读取数据集
train_data = pd.read_csv('your_path/train_data.csv')model_filename = 'your_path/your_model_name.pkl'
imputer_filename = 'your_path/your_imputer_name.pkl'
scaler_filename = 'your_path/your_scaler_name.pkl'def preprocess_data(data, imputer=None, scaler=None):print("data.shape", data.shape)column_name = ['Year', 'Life expectancy ', 'infant deaths','Alcohol', 'percentage expenditure', 'Hepatitis B', 'Measles ', ' BMI ','under-five deaths ', 'Polio', 'Total expenditure', 'Diphtheria ',' HIV/AIDS', 'GDP', 'Population', ' thinness  1-19 years',' thinness 5-9 years', 'Income composition of resources', 'Schooling']data = data.drop(["Country", "Status"], axis=1)if imputer == None:imputer = SimpleImputer(strategy='mean', missing_values=np.nan)imputer = imputer.fit(data[column_name])data[column_name] = imputer.transform(data[column_name])if scaler == None:scaler = MinMaxScaler()scaler = scaler.fit(data)data_norm = pd.DataFrame(scaler.transform(data), columns=data.columns)data_norm = data_norm.drop(['infant deaths', 'Measles ', 'under-five deaths ', 'Population', 'Year'], axis=1)print("data_norm.shape", data_norm.shape)print("type(data_norm)", type(data_norm))return data_norm, imputer, scalerdef model_fit(train_data):train_y = train_data.iloc[:, -1].valuestrain_data = train_data.iloc[:, :-1]train_data_norm, imputer, scaler = preprocess_data(train_data)train_x = train_data_norm.values# 需要网格搜索的参数n_estimators = [i for i in range(650, 681, 5)]max_depth = [i for i in range(14, 18)]  # 最大深度min_samples_split = [i for i in range(2, 4)]  # 部节点再划分所需最小样本数min_samples_leaf = [i for i in range(3, 5)]  # 叶节点最小样本数max_samples = [i/100 for i in range(95, 97)]parameters = {'n_estimators': n_estimators,  # 弱学习器的最大迭代次数'max_depth': max_depth,'min_samples_split': min_samples_split,'min_samples_leaf': min_samples_leaf,'max_samples': max_samples}regressor = RandomForestRegressor(bootstrap=True, oob_score=True, random_state=0)gs = RandomizedSearchCV(regressor, parameters, n_iter = 100,refit=True,cv=10, verbose=1, n_jobs=-1)gs.fit(train_x, train_y)joblib.dump(gs, model_filename)joblib.dump(imputer, imputer_filename)joblib.dump(scaler, scaler_filename)return gsdef predict(test_data):loaded_model = joblib.load(model_filename)imputer = joblib.load(imputer_filename)scaler = joblib.load(scaler_filename)test_data_norm, _, _ = preprocess_data(test_data, imputer, scaler)test_x = test_data_norm.valuespredictions = loaded_model.predict(test_x)return predictions# 咳咳 开始训练了
time_start = time.time()model = model_fit(train_data)
print('最优参数: ', model.best_params_)
print('最佳性能: ', model.best_score_)time_end = time.time()
time_sum = time_end - time_startlabel = train_data.loc[:, 'Adult Mortality']
data = train_data.iloc[:, :-1]
# 咳咳 开始预测了
y_pred = predict(data)
r2 = r2_score(label, y_pred)
mse = mean_squared_error(label, y_pred)
print("MSE is {}".format(mse))
print("R2 score is {}".format(r2))

训练集上结果

Mo平台测试结果

不想再改了,就它吧。

线性回归实验之成人死亡率预测相关推荐

  1. 【机器学习实战】线性回归之北京市住房价格预测

    文章目录 数据集读取与划分 数据集读取 数据集划分 模型训练及预测 模型评价 数据集读取与划分 数据集读取 import pandas as pd### 代码开始 ### (≈ 2 行代码) df=p ...

  2. python回归分析实验_python线性回归实验

    实验 算法 python 线性回归实验 [实验名称] Python 线性回归实验 [实验要求] 掌握 Python 线性回归模型应用过程,根据模型要求进行数据预处理,建模,评价与应用: [背景描述] ...

  3. 线性回归实战---Abalone鲍鱼年龄预测

    线性回归实现Abalone鲍鱼年龄预测 文章目录 线性回归实现Abalone鲍鱼年龄预测 一.环境准备 数据集简介 二.线性回归基础知识 什么是线性回归? "最小二乘法" 求解线性 ...

  4. 机器学习入门实践——线性回归模型(波士顿房价预测)

    机器学习入门实践--线性回归模型(波士顿房价预测) 一.背景介绍 给定一个大小为 n n n的数据集 { y i , x i 1 , . . . , x i d } i = 1 n {\{y_{i}, ...

  5. 基于多元线性回归的股票分析与预测——R语言

    基于多元线性回归的股票分析与预测 一.数据来源 1.自变量 2.因变量 二.多元线性回归 1. 初步建立多元线性回归模型 (1)数据集划分 (2)建立回归模型 2. 多元线性回归模型的优化 3.模型误 ...

  6. 【MATLAB】机器学习: 线性回归实验(梯度下降+闭式解)

    实验内容 1.根据梯度下降法完成一元线性回归实验. 2.根据闭式解完成一元线性回归实验. 3.比较两种解下的实验结果. 实验代码 clear;clc; %% 数据导入:划分训练集和测试集 % 数据导入 ...

  7. 【阿旭机器学习实战】【6】普通线性线性回归原理及糖尿病进展预测实战

    [阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文对机器学习中的线性回归模型原理进行了简单介绍,并且通过实战案例糖尿病进展预测,介绍了其基本使用 ...

  8. 华为云——线性回归实验

    一.简介 线性回归(Linear Regression)是机器学习最经典的算法之一,具有如下特点: 自变量服从正态分布: 因变量是连续性数值变量: 自变量和因变量呈线性关系. 本实验主要介绍使用Min ...

  9. 2023年华中杯数学建模A题新型镇静药物临床实验疗效分析与预测解题全过程文档及程序

    2023年华中杯数学建模 A题 新型镇静药物临床实验疗效分析与预测 原题再现   临床研究是新药物研究中的关键环节.本题拟围绕一种新型镇静药物的临床实验数据分析展开. 尝试根据附件中提供的数据和相关材 ...

最新文章

  1. iOS - Bundle 资源文件包
  2. 使用mac 终端利用alias设置快捷命令
  3. React Native初始化项目0.47.1报错
  4. stm32F103的systick时间不准终于找到原因了
  5. /etc/fstab自动挂载文件详解
  6. java j2se1.5_用J2SE1.5建立多任务的Java应用程序...
  7. android之Intent的七大属性
  8. 阿里巴巴正式上线全球首个数据中心Open Channel SSD产品
  9. vba有下拉框的模糊查找_巧用数据验证制作模糊匹配的下拉列表
  10. error: ‘PRIO_PROCESS’ undeclared
  11. VirtualLab Fusion光学仿真软件使用笔记
  12. content-box和boder-box的区别
  13. ubuntu16.04安装完后无法上网
  14. 前端---HTML5如何制作一个折线图
  15. Karma与TSLint
  16. Android HFP流程记录
  17. 【漏洞学习——越权】e家洁某处存在越权漏洞
  18. 排查Java的内存问题
  19. linux 提取edid_Linux 硬件信息获取
  20. 微博关注我、我关注你数据库该怎么设计

热门文章

  1. 安全防御知识总结(IDS,APT,恶意软件,反病毒网关,对称/不对称加密)
  2. 计算机毕业设计-java-ssm电子元件仓库管理系统
  3. 【个人总结】大二这一年我都干了啥?
  4. 成都拓嘉辰丰:拼多多首页竞价活动失败的原因
  5. 迈思德网关成功与TLINK物联网平台对接
  6. Win10任务栏卡死怎么办?这3个方法快收藏!
  7. JAVA AES128
  8. Excel:录制简单的宏(三)
  9. IDEA如何设置为中文界面?
  10. Android跨进程通信