【项目实战】基于随机森林算法的房屋价格预测模型

【博客地址】:https://blog.csdn.net/sunyaowu315
【博客大纲地址】:https://blog.csdn.net/sunyaowu315/article/details/82905347


  对数据分析、机器学习、数据科学、金融风控等感兴趣的小伙伴,需要数据集、代码、行业报告等各类学习资料,可关注微信公众号:风控圏子(别打错字,是圏子,不是圈子,算了直接复制吧!)

  关注公众号后,可联系圈子助手加入我们的机器学习风控讨论群和反欺诈讨论群。(记得要备注喔!)

  相互学习,共同成长。


基于随机森林算法的房屋价格预测模型
在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 25 17:17:16 2018

@author: yaowu
"""
#==============================================================================
# 导入模块 : 导入所需要的模块
# 数据清洗 : 在研究变量的基础上进行数据清洗
# 变量筛选 : 
# 建立模型 : 完成数据建模
# 评估模型 : 最终评估模型质量
#==============================================================================
## 1.1 导入模块
# 导入一些数据分析和数据挖掘常用的包
import numpy as np,pandas as pd,os,seaborn as sns,matplotlib.pyplot as plt
from statsmodels.stats.outliers_influence import variance_inflation_factor  
#statsmodels,统计模型,计量经济学是一个包含统计模型、统计测试和统计数据挖掘python模块
#outliers_influence,
#variance_inflation_factor,方差膨胀因子(Variance Inflation Factor,VIF):是指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比
from sklearn.preprocessing import StandardScaler  
#sklearn.preprocessing,数据预处理模块
#StandardScaler,去均值和方差归一化模块
from sklearn.decomposition import PCA
#分解,降维
## 1.2 研究变量的情况 导入包之后加载一下数据集,查看一下数据的基础情况,再考虑下一步的处理
# 加载一下数据,并打印部分数据,查看一下数据的情况
os.chdir(r'C:\Users\A3\Desktop\2:项目\项目\项目19:基于随机森林算法的房屋价格预测模型\房屋价格预测')
data_train = pd.read_csv('train.csv')
data_test = pd.read_csv('test.csv')
print(data_train.head())
print(data_test.head())
# 查看数据的列名和每列的数据格式,方便后面对数据进行处理
#data_train.columns
#data_train.info
#查看数据结构
data_train_dtypes = data_train.dtypes
#print(data_train_dtypes)   
'''
#==============================================================================
# 对因变量进行具体情况具体分析,主要查看因变量的统计情况,包含偏度和峰度等。
# 峰度:峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。
# 它是和正态分布相比较的。
# Kurtosis=0 与正态分布的陡缓程度相同。
# Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
# Kurtosis<0 比正态分布的高峰来得平稳——平顶峰     
# 计算公式:β = M_4 /σ^4 
# 偏度:偏度(Skewness)是描述某变量取值分布对称性的统计量。
# Skewness=0 分布形态与正态分布偏度相同
# Skewness>0 正偏差数值较大,为正偏或右偏。长尾巴拖在右边。
# Skewness<0 负偏差数值较大,为负偏或左偏。长尾巴拖在左边。 
# 计算公式: S= (X^ - M_0)/δ Skewness 越大,分布形态偏移程度越大。
#==============================================================================
'''
# 查看因变量价格的情况,进行基础分析
sns.distplot(data_train['SalePrice'])
plt.show()
# 对房屋价格金额的数值图形化,查看一下
sns.set(style="darkgrid")
titanic = pd.DataFrame(data_train['SalePrice'].value_counts())
titanic.columns = ['SalePrice_count']
ax = sns.countplot(x="SalePrice_count", data=titanic)
plt.show()

# 从房屋价格的正态分布情况,查看房屋价格的峰度和偏度情况
print('房屋价格偏度:%f' % (data_train['SalePrice'].skew()))
print('房屋价格峰度:%f' % (data_train['SalePrice'].kurt()))
'''
#==============================================================================
# 分析数据中的缺失值情况,如果超过阈值15%,则删除这个变量,其他变量根据类别或者是数值型变量进行填充。
#   具体得到的情况如下:
# 
# 有缺失的对应的变量名称 
# * PoolQC Pool quality 游泳池质量 
# * MiscFeature Miscellaneous feature not covered in other categories 其他杂项,例如网球场、第二车库等 
# * Alley Type of alley access to property 胡同小路,是碎石铺就的还是其他等等 
# * Fence Fence quality 护栏质量 
# * FireplaceQu Fireplace quality 壁炉的质量 
# * LotFrontage Linear feet of street connected to property 街道情况 
# * GarageFinish Interior finish of the garage 车库完成情况 
# * GarageQual Garage quality 车库质量 
# * GarageType Garage location 车库的位置 
# * GarageYrBlt Year garage was built 车库的建筑年龄 
# * GarageCond Garage condition 车库的条件 
# * BsmtExposure Refers to walkout or garden level walls 花园的墙壁情况 
# * BsmtFinType2 Rating of basement finished area (if multiple types) 地下室的完工面积 
# * BsmtQual Evaluates the height of the basement 地下室的高度 
# * BsmtCond Evaluates the general condition of the basement 地下室的质量情况 
# * BsmtFinType1 Rating of basement finished area 地下室完工面积 
# * MasVnrType Masonry veneer type 表层砌体类型 
# * MasVnrArea Masonry veneer area in square feet 砖石镶面面积平方英尺 
# * Electrical Electrical system 电气系统
# 
#==============================================================================
'
  • 11
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
随机森林算法是一种集成学习方法,它通过组合多个决策树来进行分类或回归任务。在Python中,可以使用scikit-learn库来实现随机森林算法。 下面是一个随机森林分类器的实战代码示例: ```python # 导入所需的库和模块 from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 data = load_iris() X = data.data # 特征矩阵 y = data.target # 目标向量 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier(n_estimators=100, random_state=42) # 在训练集上训练模型 rf.fit(X_train, y_train) # 在测试集上进行预测 y_pred = rf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ``` 在上述代码中,首先导入所需的库和模块。然后使用`load_iris()`函数加载鸢尾花数据集,将特征矩阵赋值给`X`,目标向量赋值给`y`。接着,使用`train_test_split()`函数将数据集划分为训练集和测试集。 然后,创建一个随机森林分类器对象`rf`,并通过`fit()`方法在训练集上训练模型。接着,使用`predict()`方法在测试集上进行预测。最后,使用`accuracy_score()`函数计算预测准确率,并将结果打印出来。 以上就是随机森林算法Python实战示例。你可以根据实际需求调整参数和数据集。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值