在IDEA中实现Python随机森林模型预测人口

2023-11-04

数据集链接在评论区噢。训练数据中有22个自变量(valuexx是某种土地利用面积),因变量是最后的人口,每一行数据都是一个县市的数据,根据训练数据得到这22个自变量与因变量人口之间的函数关系式y=ax+by+z.....(a、b以及后面的省略号中都是常数,x、y等就是22个自变量的值,这个不一定时22,不同的模型可能会自动进行主成分分析,那时候自变量就没有22个了),当新的数据(也就是要预测人口的数据,包含一样的22个自变量字段以及相同的单位和先后排列顺序)使用该模型进行预测时将会使用y=ax+by+z.....,并且将22个对应的自变量套进去,得到新的y,即预测人口数量。

# !/usr/bin/env python
# -*- coding:utf-8-*-
# 读取数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from dataframe import dataframe
import time
pd.set_option('max_colwidth', 10)  # 显示5列
# 字段名为中文,编码方式指定为gbk
temp_data = pd.read_csv('D:\桌面\我的实验\长沙市数据.csv', encoding='gbk')
# temp_data = pd.read_csv('temp_data.csv')
# print("输出读取的表格行数和列数:",temp_data.shape)
# print("输出前面6行数据:\n",temp_data.head())
# 查看基本信息
# print(temp_data.info())#none
# print("输出所有变量的特征值\n",temp_data.describe())
y = temp_data['人口']  # 表明这个列是作为目标数据(因变量)Y
# 使用.drop(['列名'],axis=1)方法表示该列(自变量)不参与计算
X = temp_data.drop(['人口'], axis=1)

#######训练模型啦!!!!!!!!!!!!
from sklearn.model_selection import train_test_split  # 用来划分训练集和测试集
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error

# 划分训练集和测试集 X是自变量,Y是因变量
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# print(X_train.shape)
# print(y_train.shape)
# print(X_test.shape)
# print(y_test.shape)
# 所有数据准备完毕
# 存储一下目前的列名
features = list(X_train.columns)
# print("输出表头:",features)
# 我们先用默认参数训练
rf0 = RandomForestRegressor(random_state=0)
rf0.fit(X_train, y_train)
#######训练模型!!!!!!!!!!!!!!!

###########开始预测模型精度!!!!!!
y_predict0 = rf0.predict(X_test)#  开始预测之前就分好的训练集
error0 = mean_absolute_error(y_test, y_predict0)
print('当使用随机森林默认参数时,平均绝对误差为:', error0)
# errors = []
# print(errors.append(error0))
# 看一下特征重要性
importances = list(rf0.feature_importances_)
print("特征权重值:", importances)
start_time=time.time()  # 模型运行开始时间
# column和重要度组合起来
feature_importances = [(feature, round(importance, 3)) for feature, importance in zip(features, importances)]
# print(feature_importances)
# # 排序
# feature_importances = sorted(feature_importances, key=lambda x: x[1], reverse=True)
print(feature_importances)
# 开始调参
rf0.get_params
# 因为数据量不大,所以我们直接选择网格搜索来选择最佳参数
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV
# 设置搜索参数
param_grid = {
    # 'bootstrap': [True],  # 是否对样本集进行有放回抽样来构建树
    # 'max_depth': [1],  # 决策树最大深度
    # 'max_features': ['auto'],  # 构建决策树最优模型时考虑的最大特征数。默认是”auto“,表示最大特征数是N的平方根
    # 'min_samples_leaf': [20],  # 叶子节点最少样本数
    # 'min_samples_split': [2, 11, 22],  # 内部节点再划分所需最小样本数
    # 'n_estimators': [650, 670, 700],
    # 'min_weight_fraction_leaf':[0,0.5],
}
grid_search_rf = GridSearchCV(estimator=RandomForestRegressor(random_state=0),
                              param_grid=param_grid, scoring='neg_mean_squared_error',
                              cv=5)
grid_search_rf.fit(X_train, y_train)
# 模型存储
print(grid_search_rf.best_params_)
rf1 = RandomForestRegressor(bootstrap=True,
                             max_depth=10,
                             max_features='auto',
                             min_samples_leaf=1,
                             min_samples_split=2,
                             n_estimators=20,
                            )
rf1.fit(X_train, y_train)#  对照着y_train作为目标数据训练X_train数据
y_predict1 = rf1.predict(X_test)#  开始预测之前就分好的测试集
error1 = mean_absolute_error(y_test, y_predict1)
print('调参后,平均绝对误差为:', error1)
# result = pd.DataFrame(y_test)
# result['系统参数'] = y_predict0
# result['调参后'] = y_predict1
# print(round(result.head(10)))
end_time=time.time() # 模型结束时间
print("模型运行时间:",end_time-start_time)
# joblib.dump(rf1, 'D:\桌面\model1.pkl')  #  对模型进行保存
# print("模型保存成功")
# clf = joblib.load('D:\桌面\model1.pkl')  #加载已经训练好的模型
# print("模型加载成功")
a=time.time()
x=pd.read_csv('D:\桌面\我的实验\研究区.csv',encoding='gbk')# 读取要预测的数据
d=rf1.predict(x)#  重新调用训练好的模型对进行测试集进行运算
# pd.set_option('display.max_columns',None)#  输出所有的列数
pd.set_option('display.max_rows',None)# 输出所有行数
result = pd.DataFrame()
result['调参后'] = d
print(round(result.head(960)))
b=time.time()
print("调用模型运行时间:",b-a)

训练模型使用的数据(由于22个自变量太多了,没有截到最后面的其他自变量和人口因变量): 

 预测使用的数据(由于22个自变量太多了,截图没有全部显示出来): 

 代码运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在IDEA中实现Python随机森林模型预测人口 的相关文章

  • 为什么应用程序会在 sys.exit 命令之后显示?

    我正在关注这个教程 http zetcode com tutorials pyqt4 firstprograms http zetcode com tutorials pyqt4 firstprograms 在第一个示例中 我不明白为什么应
  • python中的编码检测库[重复]

    这个问题在这里已经有答案了 这在某种程度上与我的问题有关here https stackoverflow com questions 2305997 unicodedecodeerror problem with mechanize 我处理
  • 在 numpy 数组中查找满足条件的大量连续值

    我在 numpy 数组中加载了一些音频数据 我希望通过查找静音部分 即一段时间内音频幅度低于特定阈值的部分 来对数据进行分段 一个非常简单的方法是这样的 values join 1 if abs x lt SILENCE THRESHOLD
  • 通过 Python 与 Windows 控制台应用程序交互

    我在 Windows 上使用 python 2 5 我希望通过 Popen 与控制台进程交互 我目前有一小段代码 p Popen console app exe stdin PIPE stdout PIPE issue command 1
  • 使用 python 通过搜索端点从 Spotify API 获取曲目

    因此 我尝试使用 API 的搜索端点进行搜索 从而从 Spotify API 获取曲目 请参阅文档 https developer spotify com documentation web api reference search sea
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • Python3模拟用另一个函数替换函数

    如何使用 python 中的另一个函数来模拟一个函数 该函数也将提供一个模拟对象 我有类似以下操作的代码 def foo arg1 arg2 r bar arg1 does interesting things 我想替换的实现bar函数 让
  • python 语言环境奇怪的错误。这究竟是怎么回事?

    所以今天我升级到了 bazaar 2 0 2 我开始收到这条消息 顺便说一句 我在雪豹上 bzr warning unknown locale UTF 8 Could not determine what text encoding to
  • 将 JSON 字符串传递给 Django 模板

    我一直在用头撞墙 试图找出为什么我无法将从 Django 模型生成的 JSON 字符串传递到模板的 javascript 静态文件中 事实证明 问题不在模型级别 使用serializers serialize 在脚本本身中放入相同的字符串将
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Python/Flask:应用程序在关闭后正在运行

    我正在开发一个简单的 Flask Web 应用程序 我使用 Eclipse Pydev 当我开发该应用程序时 由于代码更改 我必须经常重新启动该应用程序 这就是问题所在 当我运行该应用程序时 我可以在本地主机上看到该框架 这很好 但是当我想
  • 检查对象数组中的多个属性匹配

    我有一个对象数组 它们都是相同的对象类型 并且它们有多个属性 有没有办法返回一个较小的对象数组 其中所有属性都与测试用例 字符串匹配 无论该属性类型是什么 使用列表理解all http docs python org 3 library f
  • 如何在 Numpy 中实现垃圾收集

    我有一个名为main py 它引用另一个文件Optimisers py它仅具有功能并用于for循环进入main py 这些函数都有不同的优化功能 This Optimisers py然后引用另外两个类似的文件 其中也只有函数 它们位于whi
  • 如何在 Tkinter 的 Button 小部件中创建多个标签?

    我想知道如何在 Tkinter 中创建具有多个标签的按钮小部件 如下图所示 带有子标签的按钮 https i stack imgur com jOZRw jpg正如您所看到的 在某些按钮中有一个子标签 例如按钮 X 有另一个小标签 A 我试
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 从 subprocess.Popen 获取整个输出

    我通过调用 subprocess Popen 得到了一个有点奇怪的结果 我怀疑这与我对 Python 的陌生有很大关系 args cscript USERPROFILE tools jslint js USERPROFILE tools j
  • 升级后 pip 损坏

    我做了 pip install U easyinstall 然后 pip install U pip 来升级我的 pip 但是 当我尝试使用 pip 时 我现在收到此错误 root d8fb98fc3a66 which pip usr lo
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量

随机推荐

  • 程序员看世界杯

    目录 1 世界杯赛事规则 1 1 赛制 1 2 小组赛 1 3 淘汰赛阶段 1 4 1 8决赛 1 5 半决赛 1 6 决赛 2 大力神杯材质 3 看球心德 4 2022大力神杯赢家 1 世界杯赛事规则 1 1 赛制 世界杯一共进行64场
  • pytorch基本使用_01

    import torch import numpy as np string 在torch中对string不支持 1 可以通过向量one hot来进行分类 2 embedding word2vec glove type check a to
  • 利用nodemcu和mqtt协议让嵌入式设备接入互联网(二.nodejs的安装和配置)

    文章目录 前言 nodejs nvm和nodejs的安装 npm的相关配置 配置npm的global和cache路径 配置npm仓库为国内淘宝镜像 npm下载相关依赖包 npm初始化项目 安装相关依赖包 前言 第一篇讲了怎么用layui做H
  • 在Sonar中配置license和copyright的检查

    现在开源代码越来越多 代码头部的license和copyright信息在开发中容易被遗忘 那么就有必要做一些相关的检查 例如在持续集成CI中加入这方面的检查 当然 目前有很多集成在IDE中的工具来自动添加license和copyright信
  • 区间查询(树状数组之差点问线问题)

    1110 区间查询 时间限制 2 Sec 内存限制 32 MB 提交 162 解决 62 提交 状态 题目描述 食堂有N个打饭窗口 现在正到了午饭时间 每个窗口都排了很多的学生 而且每个窗口排队的人数在不断的变化 现在问你第i个窗口到第j个
  • selenium自动化测试入门 浏览器多窗口切换

    有时web应用会打开多个浏览器窗口 当我们要定位新窗口中的元素时 我们需要将webDriver的handle 句柄 指定到新窗口 什么意思 假设我们打开web应用 在系统运行过程中重新打开一个新窗口 可以是页签 当前浏览器存在两个窗口 这时
  • 宋浩概率论笔记(四)数字特征

    本帖更新数字特征 包含期望 方差 相关系数等 要点在于记忆性质中的各种公式 遇到题目时能迅速利用已知条件计算答案
  • (超详细)单臂路由及操作步骤

    目录 一 前提引入 二 单臂路由概述 2 1概念 2 2单臂路由优点 2 3单臂路由子接口 三 链路类型 四 单臂路由的配置实例 4 1拓扑图 4 2交换机的配置 4 3路由器的配置 4 4主机的配置 4 5连通性测试 五 总结 一 前提引
  • ajax+异步promise+async+await

    ajax是什么 为什么要学 ajax 异步js xml ajax实现客户端和服务端进行异步通信 实现页面的局部更新 好处 局部刷新 用户体验好 异步通信 加快了响应能力 减少冗余请求 减轻了服务器负担 ajax原理就是 通过xml对象向服务
  • 用python绘制一条直线_python绘制直线的方法

    本文实例为大家分享了python绘制直线的具体代码 供大家参考 具体内容如下 usr bin env python import vtk 绘制通用方法 def myshow linepolydata Now we ll look at it
  • 1km分辨率全球夜间灯光数据(2012-2022)

    数据简介 夜间灯光 一方面直接反映着当地的工业化水平和城市化水平 另一方面 也能部分反映着人口集中分布情况 同时 根据地表夜间灯光亮度 从而在一定程度上表征人类活动强度 长时间序列的夜间灯光数据被广泛运用于多个领域 一些学者将这一指标当作真
  • el-cascader级联选择器单选/多选根据接口懒加载动态获取数据

    在Vue项目中 使用elment ui 中 el cascader 级联选择器 级联选择器每一级的内容对应不同的接口 因此我们要采用懒加载的形式实现对数据的动态获取 主要思路 通过 lazy 开启动态懒加载 并使用 lazyLoad 来设置
  • Spri-n-g-Cl-oud-发-布

    https www cnblogs com lexiaofei tag SpringCloud
  • 数据库number 对应java_数据库中的number型表示什么

    本文收集整理关于数据库中的number型表示什么的相关议题 使用内容导航快速到达 内容导航 Q1 数据库中的number类型在java类中应该是什么类型 数据库中的number类型在java类对应的类型 1 如果number类没有设置小数位
  • GSM模块_STM32实现GPRS与服务器数据传输经验总结

    硬件环境 MCU STM32F103RET6 调试器 J Link GSM模块 Ai Thinker A6 安信可 还需要配一个串口打印工具 当初选这个模块纯粹是因为价格是最便宜的 软件环境 Keil4 开篇废话 经过两周时间的编码 调试
  • 字符串全排列 java实现

    项目github地址 bitcarmanlee easy algorithm interview and practice 欢迎大家star 留言 一起学习进步 经常会遇到字符串全排列的问题 例如 输入为 a b c 则其全排列组合为abc
  • C++ vector、array和数组的比较

    在c 11中 STL中提拱了一个新的容器std array 该容器在某些程度上替代了之前版本的std vector的使用 更可以替代之前的自建数组的使用 那针对这三种不同的使用方式 先简单的做个比较 相同点 三者均可以使用下表运算符对元素进
  • [C++] LeetCode 214. 最短回文串

    题目 给定一个字符串 s 你可以通过在字符串前面添加字符将其转换为回文串 找到并返回可以用这种方式转换的最短回文串 示例 1 输入 aacecaaa 输出 aaacecaaa 示例 2 输入 abcd 输出 dcbabcd 思路解析 这题考
  • Python3,10行代码,制作艺术签名,从此走上人生巅峰。

    制作艺术签名 1 引言 2 代码实战 2 1 代码示例 3 总结 1 引言 小鱼 小屌丝 你在画啥呢 小屌丝 我这在练习签名呢 小鱼 这 艺术签 小屌丝 喔 鱼哥 你这真实博才多艺 这都知道 小鱼 主要看到你的签名 让我联想到一种武功 小屌
  • 在IDEA中实现Python随机森林模型预测人口

    数据集链接在评论区噢 训练数据中有22个自变量 valuexx是某种土地利用面积 因变量是最后的人口 每一行数据都是一个县市的数据 根据训练数据得到这22个自变量与因变量人口之间的函数关系式y ax by z a b以及后面的省略号中都是常