简介
本次新人赛是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
查看评论