数据分析与数据挖掘实战案例本地房价预测(716):

数据分析与数据挖掘实战案例(7/16):

2022 年首届钉钉杯大学生大数据挑战赛练习题目 练习题 A:二手房房价分析与预测
要点:

1、机器学习

2、数据挖掘

3、数据清洗、分析、pyeahcrs可视化

4、随机森林回归预测模型预测房价

整体代码:

在这里插入图片描述

过程代码:

1、读入数据、清洗数据:
import pandas as pd
import numpy as np
df=pd.read_csv("data.csv",encoding='utf-8')  #文件路径为绝对路径,根据自己电脑文件夹的路径修改
df

df.info() #查看df信息

df.dropna(inplace=True) #删除空值行
df.drop('Unnamed: 0',axis=1,inplace=True)  #删除无用列
df

df=df.drop_duplicates()  ###消除重复记录
df

在这里插入图片描述

2、解决相关问题:
(一) 根据附件中的数据集,将二手房数据按照“区域”属性进行划分,然后计算每个 区域的二手房均价,最后将区域及对应的房屋均价信息通过纵向条形图显示 :
import re 
zonjia = []
for v in df['总价']:
    a = re.findall(r'\d+',str(v))[0] 
#     print(a)
    zonjia.append(int(a))
df['总价1'] = zonjia
df   #得到数字类型的总价1

df1_1 = df[['区域','总价1']].groupby('区域').mean()
df1_1.columns = ['区域均价'] 
df1_1['区域均价']  = df1_1['区域均价'].astype(int)
df1_1

#画图:
from pyecharts.charts import Bar
from pyecharts import options as opts
%matplotlib inline

bar = Bar()
bar.add_xaxis(list(df1_1.index)) 
bar.add_yaxis("单位:万", list(df1_1['区域均价']))

bar.set_global_opts(title_opts=opts.TitleOpts(title="区域房屋均价"))
bar.render_notebook()
# bar.render()  #生成html

在这里插入图片描述

(二) 根据附件的数据集,计算各个区域二手房数量占总二手房数量的百分比,并画出 饼状图 :
df['计数'] =1
df1_2 = df[['区域','计数']].groupby('区域').count()
df1_2  #得到统计数据的dataform表格

#画图:
from pyecharts.charts import Pie
from pyecharts import options as opts
# 富文本
rich_text = {
    "a": {"color": "#999", "lineHeight": 22, "align": "center"},
    "abg": {
        "backgroundColor": "#e3e3e3",
        "width": "100%",
        "align": "right",
        "height": 22,
        "borderRadius": [4, 4, 0, 0],
    },
    "hr": {
        "borderColor": "#aaa",
        "width": "100%",
        "borderWidth": 0.5,
        "height": 0,
    },
    "b": {"fontSize": 16, "lineHeight": 33},
    "per": {
        "color": "#eee",
        "backgroundColor": "#334455",
        "padding": [2, 4],
        "borderRadius": 2,
    },
}


# 虚假数据
cate = list(df1_2.index)
data = list(df1_2['计数']) 

pie = (Pie()
       .add('二手房数量', [list(z) for z in zip(cate, data)],
       label_opts=opts.LabelOpts(position='outsiede',
                     formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
                     rich=rich_text))
       )

pie.render_notebook()

在这里插入图片描述

(三) 将二手房按照“装修”属性进行划分,然后计算不同装修程度的二手房数量,并 用条形图显示不同装修程度二手房的数量。 :
df1_3 = df[['装修','计数']].groupby('装修').count()
df1_3

from pyecharts.charts import Bar
from pyecharts import options as opts
%matplotlib inline

bar = Bar()
bar.add_xaxis(list(df1_3.index))  
bar.add_yaxis("统计数量", list(df1_3['计数']))

bar.set_global_opts(title_opts=opts.TitleOpts(title="装修程度统计"))
bar.render_notebook()
# bar.render()  #生成html

在这里插入图片描述

3、机器学习随机森林建模预测房价:
(一)将二手房按照户型进行分组,然后提取前 5 组最热门的二手房户型(出售数量最多的 5 组户型),最后计算这 5 个热门户型的均价并画图显示。
df2_1 = df[['户型','计数']].groupby('户型').count()
df2_1
df2_1.sort_values(by='计数',axis=0,ascending=False,inplace=True)
df2_1

names = list(df2_1.index[0:5])
names

df2_1_1 = df[['户型','总价1']].groupby('户型').mean()
df2_1_1
datas = []
for v in names:
    datas.append(int(df2_1_1.loc[v]))
datas

from pyecharts import options as opts
from pyecharts.charts import Bar,Line,Grid
B = ["草莓","芒果","葡萄","雪梨","西瓜","柠檬","车厘子"]
CB = [78,95,120,102,88,108,98]


line = Line()
line.add_xaxis(names)

line.add_yaxis("均价单位:万",datas)
line.set_global_opts(title_opts=opts.TitleOpts(title="最热五户型均价"),
                    legend_opts=opts.LegendOpts())
line.render_notebook()

在这里插入图片描述

(二)选择附件中适合的属性,建立模型预测二手房的价格

在这里插入图片描述

特征工程:(提取出数字数据, 拆分数据、特征编码等:)

df2 = df.drop(['小区名字','计数','总价'],axis=1)   #删除明显无关的特征列
df2

# 字符型数据和离散型数据转为数字特征:

df2['建筑面积1'] = df2['建筑面积'].str[:-2]
df2 
df2['单价1'] = df2['单价'].str[:-4]
df2 

shi = []
ting = []
wei = []
for v in df2['户型']:
    re_ = re.findall(r'\d+',v) 
#     print(re_)
    if len(re_) >=3:
        shi.append(re_[0])
        ting.append(re_[1])
        wei.append(re_[2])
    else:
        shi.append(0)
        ting.append(0)
        wei.append(0)
    
df2['室'] = shi
df2['厅'] =ting
df2['卫'] =wei

df2

df2 = df2.drop(['户型','建筑面积','单价'],axis=1)  #删除无用的列
df2

df2 = df2.drop(['户型','建筑面积','单价'],axis=1)  #删除无用的列
df2

# 将字符标签或者类别数字化
df2['朝向'] = pd.Categorical(df2['朝向']).codes
df2
df2['楼层'] = pd.Categorical(df2['楼层']).codes
df2['装修'] = pd.Categorical(df2['装修']).codes
df2['区域'] = pd.Categorical(df2['区域']).codes
df2 




在这里插入图片描述

建模:
y=df2.iloc[:,-4]  #目标列
y
x=df2.drop('单价1',axis=1)
x #特征列数据
#划分数据集:
from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test = train_test_split(x,y,
                                                 test_size=0.30,
                                                 random_state=100,
                                                
                                                    )
# 显示训练集和测试集的维度
print("x_train.shape:",x_train.shape)
print("x_test.shape:",x_test.shape)
print("y_train.shape:",y_train.shape)
print('y_test.shape:',y_test.shape)


在这里插入图片描述

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV
# 随机森林去进行预测
rf = RandomForestRegressor()

#设置网格超参数
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}

# 超参数调优
gc = GridSearchCV(rf, param_grid=param, cv=2)   #网格搜索与交叉验证

gc.fit(x_train, y_train)
y_pre=gc.predict(x_test)
print(y_pre)#输出预测值
print("随机森林预测的准确率为:", gc.score(x_test, y_test))   #会运行一段时间

在这里插入图片描述

print("最佳参数:",gc.best_params_)
print("最佳分数:",gc.best_score_)
print("最佳估计器:",gc.best_estimator_)
print("交叉验证结果:\n",gc.cv_results_)

在这里插入图片描述

最后(源码):

这样一个简单的数据挖掘实践案例就做好了,我还有很多平时积累的案例,后续我会持续编写分享的,如果您觉得有一定的意义,请点个关注呗,您的支持是我创作的最大动力,如果需要源码

链接:https://pan.baidu.com/s/1BIXUNwOrSEydEskuOB-_6g
提取码:8848

在这里插入图片描述

  • 12
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 线性回归是一种常用的数据挖掘算法,它可以用来预测连续型变量的值。在房价预测中,我们可以使用线性回归来预测房价。线性回归的原理是通过建立一个线性方程来描述自变量和因变量之间的关系,然后利用已知的自变量和因变量的数据来拟合这个方程,从而得到一个预测模型。在房价预测中,我们可以将房屋的面积、房间数量、地理位置等作为自变量,将房价作为因变量,然后利用已知的房屋数据来拟合一个线性方程,从而得到一个预测模型,用来预测未知房屋的价格。实践中,我们可以使用Python等编程语言来实现线性回归算法,利用已知的数据来训练模型,然后使用模型来预测未知数据的结果。 ### 回答2: 线性回归是一种用于预测连续变量的监督学习算法。在房价预测中,线性回归可以通过利用历史数据和相关因素,如房屋面积、位置和装修状况等,预测房屋的售价。 线性回归的原理是拟合一条直线来近似预测目标变量和输入因素之间的关系。这条直线被称为回归线。回归线的斜率和截距分别表示输入因素和目标变量之间的关系和预测模型的截距。 在实践中,我们需要将数据集分成训练集和测试集。从训练集中选取一个子集,用来训练模型。一旦模型被训练完成,我们可以使用测试集来评估其准确性和泛化能力。 线性回归的评估指标包括平均平方误差(Mean Squared Error,MSE)和均方根误差(Root Mean Squared Error,RMSE)。MSE 衡量模型预测与实际数据之间差异的平方和的平均值。RMSE 是 MSE 的平方根。 在实践中,我们需要注意一些问题。例如,数据集的特征选择,是否需要进行数据缩放,异常值或离群值的处理,以及是否需要进行特征工程或增加多项式特征。此外,在模型的选择上,我们可以使用不同的正则化方法,如岭回归和 Lasso。这些方法可以避免过拟合和提高模型的泛化能力。 总之,线性回归是一种简单但有效的预测房价的模型。但是,在实际应用中,我们需要结合领域知识和业务需求来调整和优化模型,以提高其性能和可靠性。 ### 回答3: 线性回归是数据挖掘中常用的一种算法,通过对已有的数据进行分析和学习,建立一个线性模型,以此来预测新的未知数据。 在房价预测中,线性回归可以用来预测房价与其它因素的关系,如房屋面积、房龄、地段、物业等。通过建立一个线性方程,可以将这些因素与房价之间的关系用数学形式表示出来,对于未知的房屋可以通过该方程来预测其价格。 线性回归的原理是基于一组数据集,其中包含了预测变量和响应变量的数据。通过这些数据建立了一个回归方程,以预测响应变量的值。回归方程是一条直线,它用输入变量的值来预测输出变量的值。线性回归中的许多算法使用误差平方和来评估回归模型的好坏。误差平方和是指所有观测值与预测值之间差的平方和。 线性回归算法的实践需要经历以下步骤: 1. 数据收集:收集房屋的各种信息,包括房屋价格、面积、年龄、地理位置、物业等。 2. 数据处理:清洗数据,排除不合理或者有误的数据,并将数据进行统一的格式化处理。 3. 特征工程:在收集的数据中,选取与房价相关的因素,将其进行特征选择,处理成线性回归算法所能接受的数据格式。 4. 模型拟合:在处理好的数据集上,利用线性回归算法进行模型拟合,得到回归方程。 5. 模型评估:通过误差平方和等指标对模型进行评估,判断其预测效果的好坏。 6. 应用预测:使用建立好的模型,输入新的数据特征,进行房价预测。 线性回归算法的优点是模型简单,易于理解和应用,适合于处理数量较少的数据,同时还可以提供较为准确的预测结果。但是线性回归也有其局限性,例如不能处理非线性数据,对异常值敏感等。因此,在实际应用中需要针对不同的数据模型选择合适的算法进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

葡萄成熟时_

谢谢您,祝您生活愉快,所想及得

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

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

打赏作者

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

抵扣说明:

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

余额充值