python机器学习之随机森林案例——用随机森林填补缺失值(波士顿房价数据)

用随机森林填补缺失值

这里呢,首先将波士顿数据进行填空,然后在对含有空值的数据进行,0、均值、随机森林回归填充,并比较其好坏,并以图像视之。

首先导入所需要的库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston#数据集
from sklearn.impute import SimpleImputer#填补缺失的类
from sklearn.ensemble import RandomForestRegressor

获取数据,并查看数据

dataset = load_boston()#数据
dataset.data.shape#查看数据结构

在这里插入图片描述
确定样本和标签数量

n_samples = x_full.shape[0]#样本数量
n_features = x_full.shape[1]#标签数量

确定缺失值

#首先确定我们希望放入的缺失值数据的比例,在这里我们假设是50%,那就要有3289个数据缺失

rng = np.random.RandomState(0)
missing_rate = 0.5
n_missing_samples = int(np.floor(n_samples * n_features *missing_rate))


取出将赋值为空值的索引

#np.floor  向下取整 
#所有数据要随机遍布在数据集的各行各列当中,而一个确实的数据会需要一盒行索引和一个列索引
#如果能够创造一个数组,就可以利用索引来赋空值

#用0,均值,随机森林来填写这些缺失值,然后查看这些回归结果
missing_features = rng.randint(0,n_features,n_missing_samples)
missing_samples =rng.randint(0,n_samples,n_missing_samples)

#randint(上限,下限,n) 请在下限和上限之间取出n个整数

#我们现在采样了3289个数据,远远超过了我们的样本量,所以可以使用随机抽取的函数randint

将数据赋值为nan

#但是如果我们的数据量小于我们的样本量506,那我们可以采用np.random.choice,choice会随机抽取不重复的随机数
##因此可以帮助我们让数据更加分散,确保数据不会集中在一些行中


                
  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Python中,可以使用随机森林模型来填补数值变量的缺失值。首先,需要导入所需的库,包括numpy、pandas、matplotlib.pyplot、sklearn.datasets中的load_boston、sklearn.impute中的SimpleImputer以及sklearn.ensemble中的RandomForestRegressor。然后,可以使用SimpleImputer类将缺失值填补为均值、中值或其他常用的数值。接下来,可以使用RandomForestRegressor来拟合数据集并填补缺失值。最后,可以通过验证不同填补方法的拟合情况,找到最适合数据集的缺失值填补方法。具体的代码实现如下: ```python # 导入所需的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_boston from sklearn.impute import SimpleImputer from sklearn.ensemble import RandomForestRegressor # 导入数据集 dataset = load_boston() # 创建SimpleImputer对象,使用均值填补缺失值 imputer = SimpleImputer(strategy='mean') # 填补缺失值 dataset_filled = imputer.fit_transform(dataset.data) # 创建随机森林回归器对象 regressor = RandomForestRegressor() # 拟合数据集 regressor.fit(dataset_filled, dataset.target) # 使用拟合好的模型预测缺失值 missing_values = np.isnan(dataset.data) predicted_values = regressor.predict(dataset.data\[missing_values\]) # 将预测值填补缺失值的位置 dataset.data\[missing_values\] = predicted_values ``` 通过以上步骤,可以使用随机森林模型来填补数值变量的缺失值。 #### 引用[.reference_title] - *1* *2* *3* [【机器学习笔记】【随机森林】【回归器】【填充缺失值】](https://blog.csdn.net/weixin_62684026/article/details/126836589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值