从0梳理1场数据挖掘赛事!

本文以河北高校数据挖掘邀请赛为例,详述从环境配置、数据读取、探索性数据分析(EDA)、特征工程到模型建立的全过程。涉及xgb、lgb、catboost等模型,以及pandas、numpy等数据处理库。通过EDA揭示数据特性,针对缺失值和非正态分布的标签进行处理。文章旨在帮助初学者入门数据挖掘赛事。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:王茂霖,华中科技大学,Datawhale成员

摘要:数据竞赛对于大家理论实践和增加履历帮助比较大,但许多读者反馈不知道如何入门,本文以河北高校数据挖掘邀请赛为背景,完整梳理了从环境准备、数据读取、数据分析、特征工程和数据建模的整个过程。

赛事分析

  1. 本次赛题为数据挖掘类型,通过机器学习算法进行建模预测。

  2. 是一个典型的回归问题。

  3. 主要应用xgb、lgb、catboost,以及pandas、numpy、matplotlib、seabon、sklearn、keras等数据挖掘常用库或者框架来进行数据挖掘任务。

  4. 通过EDA来挖掘数据的信息。

  5. 赛事地址(复制打开或阅读原文):https://tianchi.aliyun.com/s/f4ea3bec4429458ea03ef461cda87c3f

数据概况

了解列的性质会有助于我们对于数据的理解和后续分析。Tip:匿名特征,就是未告知数据列所属的性质的特征列。数据下载地址:https://tianchi.aliyun.com/competition/entrance/531858/information

代码实践

Step 1:环境准备(导入相关库)

## 基础工具
import numpy as np
import pandas as pd
import warnings
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.special import jn
from IPython.display import display, clear_output
import time

warnings.filterwarnings('ignore')
%matplotlib inline

## 数据处理
from sklearn import preprocessing

## 数据降维处理的
from sklearn.decomposition import PCA,FastICA,FactorAnalysis,SparsePCA

## 模型预测的
import lightgbm as lgb
import xgboost as xgb

## 参数搜索和评价的
from sklearn.model_selection import GridSearchCV,cross_val_score,StratifiedKFold,train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error

Step 2:数据读取

## 通过Pandas对于数据进行读取 (pandas是一个很友好的数据读取函数库)
#Train_data = pd.read_csv('datalab/231784/used_car_train_20200313.csv', sep=' ')
#TestA_data = pd.read_csv('datalab/231784/used_car_testA_20200313.csv', sep=' ')

path = './data/'
## 1) 载入训练集和测试集;
Train_data = pd.read_csv(path+'train.csv', sep=' ')
TestA_data = pd.read_csv(path+'testA.csv', sep=' ')

## 输出数据的大小信息
print('Train data shape:',Train_data.shape)
print('TestA data shape:',TestA_data.shape)
Train data shape: (150000, 31)
TestA data shape: (50000, 30)

可以发现训练集有 15w 样本,而测试集有 5w 样本,特征维度并非很高,总体只有30维。

1) 数据简要浏览

## 通过.head() 简要浏览读取数据的形式
Train_data.head()

2) 数据信息查看

## 通过 .info() 简要可以看到对应一些数据列名,以及NAN缺失信息
Train_data.info()
# nan可视化
missing = Train_data.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

抽取出 'model'特征 为 NaN 的样本:

Train_data[np.isnan(Train_data['model'])]
TestA_data.info()

通过对于数据的基础 Infomation的查看,我们知道 'model','bodyType','fuelType','gearbox'特征 中存在缺失。

3) 数据统计信息浏览

#显示所有列
pd.set_option('display.max_columns', None)
## 通过 .describe() 可以查看数值特征列的一些统计信息
Train_data.describe()
TestA_data.describe()

通过数据的统计信息,可以对于数据中的特征的变化情况有一个整体的了解。

Step 3: 数据分析(EDA)

1) 提取数值类型特征列名

numerical_cols = Train_data.select_dtypes(exclude = 'object').columns
print(numerical_cols)
categorical_cols = Train_data.select_dtypes(include = 'object').columns
print(categorical_cols)

# out: Index(['notRepairedDamage'], dtype='object')

首先我们对于非数字特征列进行数值化处理

set(Train_data['notRepairedDamage'])

#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值