zoukankan      html  css  js  c++  java
  • python根据房屋信息预测未知房价

    首先看数据源:

     1、根据已给出的数据,将户型和建筑面积作为参考数据进行房价的预测,首先对户型和房价数据进行处理,再分析预测。

    # 导入数据统计模块
    import pandas
    # 导入回归函数
    from sklearn.svm import LinearSVR
    # 读取csv数据文件
    data = pandas.read_csv('F:\python入门\python编程锦囊\Code(实例源码及使用说明)\Code(实例源码及使用说明)\Code(实例源码及使用说明)\09\11\demo\data.csv')
    # 将索引列删除
    del data['Unnamed: 0']
    # 删除data数据中的所有空值
    data.dropna(axis=0, how='any', inplace=True)
    # 将总价“万”去掉
    data['总价'] = data['总价'].map(lambda z: z.replace('', ''))
    # 将房子总价转换为浮点类型
    data['总价'] = data['总价'].astype(float)
    # 将建筑面价“平米”去掉
    data['建筑面积'] = data['建筑面积'].map(lambda p: p.replace('平米', ''))
    # 将建筑面积转换为浮点类型
    data['建筑面积'] = data['建筑面积'].astype(float)
    # 拷贝数据
    data_copy = data.copy()
    #显示‘户型’、‘建筑面积’的头部信息,前五行
    print('显示‘户型’、‘建筑面积’的头部信息,前五行:
    ',data_copy[['户型', '建筑面积']].head())
    #处理户型字段
    data_copy[['', '', '']] = data_copy['户型'].str.extract('(d+)室(d+)厅(d+)卫')
    # 将房子室转换为浮点类型
    data_copy[''] = data_copy[''].astype(float)
    # 将房子厅转换为浮点类型
    data_copy[''] = data_copy[''].astype(float)
    # 将房子卫转换为浮点类型
    data_copy[''] = data_copy[''].astype(float)
    # 打印“室”、“厅”、“卫”数据
    print('打印处理后的“室”、“厅”、“卫”数据:
    ',data_copy[['','','']].head())
    #将没有用的字段删除
    del data_copy['小区名字']
    del data_copy['户型']
    del data_copy['朝向']
    del data_copy['楼层']
    del data_copy['装修']
    del data_copy['区域']
    del data_copy['单价']
    # 删除data数据中的所有空值
    data_copy.dropna(axis=0, how='any', inplace=True)
    # 获取“建筑面积”小于300平米的房子信息
    new_data = data_copy[data_copy['建筑面积'] < 300].reset_index(drop=True)
    print('处理后的头部信息:
    ',new_data.head())
    #下面开始训练回归模型进行未知房价的预测
    #添加自定义预测数据
    new_data.loc[2505] = [None, 88.0, 2.0, 1.0, 1.0]
    new_data.loc[2506] = [None, 136.0, 3.0, 2.0, 2.0]
    #训练集为现有数据
    data_train=new_data.loc[0:2504]
    # 自变量参考列
    x_list = ['建筑面积',  '', '', '']
    # 获取平均值
    data_mean = data_train.mean()
    # 获取标准偏差
    data_std = data_train.std()
    # 数据标准化
    data_train = (data_train - data_mean) / data_std
    # 特征数据
    x_train = data_train[x_list].values
    # 目标数据,总价
    y_train = data_train['总价'].values
    # 创建LinearSVR()对象
    linearsvr = LinearSVR(C=0.1)
    # 训练模型
    linearsvr.fit(x_train, y_train)
    # 标准化特征数据
    x = ((new_data[x_list] - data_mean[x_list]) / data_std[x_list]).values
    # 添加预测房价的信息列
    new_data[u'y_pred'] = linearsvr.predict(x) * data_std['总价'] + data_mean['总价']
    print('真实值与预测值分别为:
    ', new_data[['总价', 'y_pred']])

    结果:

    显示‘户型’、‘建筑面积’的头部信息,前五行:
            户型   建筑面积
    0  2室2厅1卫   89.0
    1  3室2厅1卫  143.0
    2  1室1厅1卫   43.3
    3  2室1厅1卫   57.0
    4  3室2厅2卫  160.8
    打印处理后的“室”、“厅”、“卫”数据:
          室    厅    卫
    0  2.0  2.0  1.0
    1  3.0  2.0  1.0
    2  1.0  1.0  1.0
    3  2.0  1.0  1.0
    4  3.0  2.0  2.0
    处理后的头部信息:
           总价   建筑面积    室    厅    卫
    0   89.0   89.0  2.0  2.0  1.0
    1   99.8  143.0  3.0  2.0  1.0
    2   32.0   43.3  1.0  1.0  1.0
    3   51.5   57.0  2.0  1.0  1.0
    4  210.0  160.8  3.0  2.0  2.0
    真实值与预测值分别为:
              总价      y_pred
    0      89.0   84.904815
    1      99.8  143.389150
    2      32.0   33.281956
    3      51.5   51.525307
    4     210.0  178.388806
    ...     ...         ...
    2502   75.0  105.874063
    2503  100.0  105.604458
    2504   48.8   56.945819
    2505    NaN   82.479910
    2506    NaN  153.625123
    
    [2507 rows x 2 columns]

      从打印结果中可看出,总价一列为真实数据,而右侧的y_pred为房价的预测数据,其中编号为2505和2506为我们模拟的未知数据,所以他们对应的总价列数值为空,而右侧的数据是根据已知的参考数据预测而来的。

  • 相关阅读:
    关于_OPENMP预编译
    Java FlameGraph 火焰图
    java的-cp和-Djava.library.path
    maven依赖包和依赖仓库(2)
    opencv读取图像输入到tensorflow模型中进行运算【cpp】
    NiftyNet 项目了解
    windows编译tensorflow c++库
    关于Tensorflow 的数据读取环节
    Itunes connect上传应用视频 app preview时遇到“无法载入文件”的问题
    Unity 扩展编辑器
  • 原文地址:https://www.cnblogs.com/xiao02fang/p/13090026.html
Copyright © 2011-2022 走看看