【博客地址】: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 电气系统
#
#==============================================================================
'