飞道的博客

二手房价预测-Datawhale&天池数据挖掘学习

305人阅读  评论(0)

二手房价预测-Datawhale&天池数据挖掘学习

简介

本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事第一场 —— 零基础入门数据挖掘之二手车交易价格预测大赛

Task1:赛题理解

赛题简介

赛题以二手车市场为背景,要求选手预测二手汽车的交易价格,这是一个典型的回归问题。该赛题的目的主要针对于于竞赛新人进行自我练习、自我提高。

赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台的二手车交易记录,总数据量超过40w,包含31列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取15万条作为训练集,5万条作为测试集A,5万条作为测试集B,同时会对name、model、brand和regionCode等信息进行脱敏。

赛题数据

查看数据情况

读取数据

先看一下数据的整体情况


# 读取数据
train_data = pd.read_csv('./used_car_train_20200313/used_car_train_20200313.csv',sep=' ')
test_data = pd.read_csv('./used_car_testA_20200313/used_car_testA_20200313.csv',sep=' ')

#查看数据
print(train_data.head().append(train_data.tail()))

#查看数据情况

print("Train data shape:",train_data.shape)
print("Test data shape:",test_data.shape)


在test data 中,缺少一个price列。

train_data.describe()


describe命令可以对数据进行基本的统计分析,样本的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 。这个描述能够对数据有一个初步的了解。

# 查看数据类型
train_data.info()

#缺失值检测
Train_data.isnull().sum()#查看每列存在的nan情况


价格分部情况

数据可视化

# 
categorical_features = ['model',
 'brand',
 'bodyType',
 'fuelType',
 'gearbox',
 'notRepairedDamage']
for c in categorical_features:
    train_data[c] = train_data[c].astype('category')
    if train_data[c].isnull().any():
        train_data[c] = train_data[c].cat.add_categories(['MISSING'])
        train_data[c] = train_data[c].fillna('MISSING')

def boxplot(x, y, **kwargs):
    sns.boxplot(x=x, y=y)
    x=plt.xticks(rotation=90)

f = pd.melt(train_data, id_vars=['price'], value_vars=categorical_features)
g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False, size=5)
g = g.map(boxplot, "value", "price")

def bar_plot(x, y, **kwargs):
    sns.barplot(x=x, y=y)
    x=plt.xticks(rotation=90)

f = pd.melt(train_data, id_vars=['price'], value_vars=categorical_features)
g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False, size=5)
g = g.map(bar_plot, "value", "price")

def count_plot(x,  **kwargs):
    sns.countplot(x=x)
    x=plt.xticks(rotation=90)

f = pd.melt(train_data,  value_vars=categorical_features)
g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False, size=5)
g = g.map(count_plot, "value")


sns.set()
columns = ['price', 'v_12', 'v_8' , 'v_0', 'power', 'v_5',  'v_2', 'v_6', 'v_1', 'v_14']
sns.pairplot(train_data[columns],size = 2 ,kind ='scatter',diag_kind='kde')
plt.show()




转载:https://blog.csdn.net/qq_26887833/article/details/105082667
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场