欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

KAGGLE房价预测数据集

程序员文章站 2022-04-10 13:50:43
引入  KAGGLE房价预测数据集分为训练集和测试集。两个数据集都包括每栋房子的特征,如街道类型、建造年份、房价类型等特征。特征值有连续的数字、离散的标签、缺失值 (na)等。  训练集与测试集的区别在于:只有训练集包括了房子的价格,即标签。  数据集的下载地址 (需要注册):  https://www.kaggle.com/c/house-prices-advanced-regression-techniques  原始数据以及处理好数据:  https://gitee.com/inkiink...

引入

  KAGGLE房价预测数据集分为训练集和测试集。两个数据集都包括每栋房子的特征,如街道类型、建造年份、房价类型等特征。特征值连续的数字离散的标签缺失值 (na)等。
  训练集与测试集的区别在于:只有训练集包括了房子的价格,即标签。
  数据集的下载地址 (需要注册):
  https://www.kaggle.com/c/house-prices-advanced-regression-techniques
  原始数据以及处理好数据:
  https://gitee.com/inkiinki/data20201205/blob/master/Data20201205/kaggle_house_price.rar
  数据展示:
KAGGLE房价预测数据集

1 库引入

import numpy as np
import pandas as pd

2 数据处理

def load_data(para_train_path, para_test_path, is_save=False):
    """
    Load datasets.
    """
    temp_train_data = pd.read_csv(para_train_path)
    temp_test_data = pd.read_csv(para_test_path)
    # 连接训练集和测试集的所有样本
    # 第一列是序号,训练集的最后一列是标签
    temp_all_features = pd.concat((temp_train_data.iloc[:, 1:-1], temp_test_data.iloc[:, 1:]))
    # 获取数值型数据的索引
    temp_numeric_features_idx = temp_all_features.dtypes[temp_all_features.dtypes != 'object'].index
    # 标准化数据
    temp_all_features[temp_numeric_features_idx] = temp_all_features[temp_numeric_features_idx].apply(
        lambda x: (x - x.mean()) / x.std())
    # 标准化后,可以使用0来代替缺失值
    temp_all_features = temp_all_features.fillna(0)
    # 离散值处理:
    # 例如某特征有两个不同的离散值,则该属性将被处理为二维:0 1 或者 1 0
    # 三中不同的离散值时,则对于 0 0 1、 0 1 0 以及 1 0 0,以此类推
    temp_all_features = pd.get_dummies(temp_all_features, dummy_na=True)
    # 数据划分
    temp_num_train = len(temp_train_data)
    ret_train_data = np.array(temp_all_features[:temp_num_train].values, dtype=np.float)
    ret_test_data = np.array(temp_all_features[temp_num_train:].values, dtype=np.float)
    ret_train_label = temp_train_data.values[:, -1]

    # 文件保存
    if is_save:
        temp_save_train_data = np.zeros((temp_num_train, len(ret_train_data[0]) + 1), dtype=float)
        temp_save_train_data[:, :-1] = ret_train_data
        temp_save_train_data[:, -1] = np.mat(ret_train_label)
        pd.DataFrame.to_csv(pd.DataFrame(temp_save_train_data), default_path + 'house_price_train.csv',
                            index=False, header=False, float_format='%.6f')
        pd.DataFrame.to_csv(pd.DataFrame(ret_test_data), default_path + 'house_price_test.csv',
                            index=False, header=False, float_format='%.6f')

    return ret_train_data, ret_train_label, ret_test_data


if __name__ == '__main__':
    default_path = '../Data/'
    train_path = default_path + 'train.csv'
    test_path = default_path + 'test.csv'
    load_data(train_path, test_path, True)

完整代码

"""
@author: Inki
@contact: inki.yinji@qq.com
@version: Created in 2020 1209, last modified in 2020 1209.
"""

import numpy as np
import pandas as pd


def load_data(para_train_path, para_test_path, is_save=False):
    """
    Load datasets.
    """
    temp_train_data = pd.read_csv(para_train_path)
    temp_test_data = pd.read_csv(para_test_path)
    # 连接训练集和测试集的所有样本
    # 第一列是序号,训练集的最后一列是标签
    temp_all_features = pd.concat((temp_train_data.iloc[:, 1:-1], temp_test_data.iloc[:, 1:]))
    # 获取数值型数据的索引
    temp_numeric_features_idx = temp_all_features.dtypes[temp_all_features.dtypes != 'object'].index
    # 标准化数据
    temp_all_features[temp_numeric_features_idx] = temp_all_features[temp_numeric_features_idx].apply(
        lambda x: (x - x.mean()) / x.std())
    # 标准化后,可以使用0来代替缺失值
    temp_all_features = temp_all_features.fillna(0)
    # 离散值处理:
    # 例如某特征有两个不同的离散值,则该属性将被处理为二维:0 1 或者 1 0
    # 三中不同的离散值时,则对于 0 0 1、 0 1 0 以及 1 0 0,以此类推
    temp_all_features = pd.get_dummies(temp_all_features, dummy_na=True)
    # 数据划分
    temp_num_train = len(temp_train_data)
    ret_train_data = np.array(temp_all_features[:temp_num_train].values, dtype=np.float)
    ret_test_data = np.array(temp_all_features[temp_num_train:].values, dtype=np.float)
    ret_train_label = temp_train_data.values[:, -1]

    # 文件保存
    if is_save:
        temp_save_train_data = np.zeros((temp_num_train, len(ret_train_data[0]) + 1), dtype=float)
        temp_save_train_data[:, :-1] = ret_train_data
        temp_save_train_data[:, -1] = np.mat(ret_train_label)
        pd.DataFrame.to_csv(pd.DataFrame(temp_save_train_data), default_path + 'house_price_train.csv',
                            index=False, header=False, float_format='%.6f')
        pd.DataFrame.to_csv(pd.DataFrame(ret_test_data), default_path + 'house_price_test.csv',
                            index=False, header=False, float_format='%.6f')

    return ret_train_data, ret_train_label, ret_test_data


if __name__ == '__main__':
    default_path = '../Data/'
    train_path = default_path + 'train.csv'
    test_path = default_path + 'test.csv'
    load_data(train_path, test_path, True)

本文地址:https://blog.csdn.net/weixin_44575152/article/details/110852303