Datawhale 零基础入门数据挖掘-the first 直播

baseline&赛题理解部分讲解

赛题理解

一、赛题背景

赛题以预测二手车的交易价格为任务
以二手车的特征去预测它的价格 这是一个回归问题
赛题数据中的值可能是不正确或异常,我们要找出异常点通过方法去去除,并清洗数据

train.csv

SaleID - 销售样本ID
name - 汽车编码
regDate - 汽车注册时间
model - 车型编码
brand - 品牌
bodyType - 车身类型
fuelType - 燃油类型
gearbox - 变速箱
power - 汽车功率
kilometer - 汽车行驶公里
notRepairedDamage - 汽车有尚未修复的损坏
regionCode - 看车地区编码
seller - 销售方
offerType - 报价类型
creatDate - 广告发布时间
price - 汽车价格
v_0’, ‘v_1’, ‘v_2’, ‘v_3’, ‘v_4’, ‘v_5’, ‘v_6’, ‘v_7’, ‘v_8’, ‘v_9’, ‘v_10’, ‘v_11’, ‘v_12’, ‘v_13’,‘v_14’ 【匿名特征,包含v0-14在内15个匿名特征】

根据注册时间和上线日期我们可以做时间差值
匿名特征和显示特征
显示特征是已经知道属性
匿名特征处理做指数变换或者log变换就是尝试,生成新的匿名特征或者多项式、四则运算
显示特征可以根据属性去做组合

特别需要关注的数据样本有多大
计算机的计算能力

二、评测标准

不同的赛题标准不同
评价标准是MAE(Mean Absolute Error)平均绝对误差
Datawhale 零基础入门数据挖掘-the first 直播_第1张图片
选取标准是什么?

提交前请确保预测结果的格式与sample_submit.csv中的格式一致,以及提交文件后缀名为csv。

形式如下:

SaleID,price
150000,687
150001,1250
150002,2580
150003,1178

一般问题评价指标说明:

什么是评估指标:
评估指标即是我们对于一个模型效果的数值型量化。(有点类似与对于一个商品评价打分,而这是针对于模型效果和理想效果之间的一个打分)
一般来说分类和回归问题的评价指标有如下一些形式:

分类算法常见的评估指标如下:

对于二类分类器/分类算法,评价指标主要有accuracy, [Precision,Recall,F-score,Pr曲线],ROC-AUC曲线。
对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均,F-score]。

对于回归预测类常见的评估指标如下:

平均绝对误差(Mean Absolute Error,MAE),均方误差(Mean Squared Error,MSE),平均绝对百分误差(Mean Absolute Percentage Error,MAPE),均方根误差(Root Mean Squared Error), R2(R-Square)
Datawhale 零基础入门数据挖掘-the first 直播_第2张图片
Datawhale 零基础入门数据挖掘-the first 直播_第3张图片

三、分析赛题

回归问题
xgb、lgb、catboost这三个包是现在做比赛的主流包;
以下函数包pandas、numpy、matplotlib、seabon、sklearn(sklearn 中包括很多回归分类聚类等很多)、keras等等数据挖掘常用库或者框架来进行数据挖掘任务。
通过EDA来挖掘数据的联系和自我熟悉数据。
读取数据很多时候用pandas 无论是csv还是csd、txt,pandas都很支持。
(可以看pandas、matplotlib和sklearn的官方文档)

sklearn.metrics中的评估方法介绍

参考链接:sklearn.metrics中的评估方法介绍

1、accuracy_score

分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。
sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数

## accuracy
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred))
ACC: 0.75

2、recall_score

召回率 = 提取出的正确信息条数 / 样本中的信息条数。通俗地说,就是所有准确的条目有多少被检索出来了。

sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, 
average='binary', sample_weight=None)

参数average : string, [None, ‘micro’, ‘macro’(default), ‘samples’, ‘weighted’]

将一个二分类matrics拓展到多分类或多标签问题时,我们可以将数据看成多个二分类问题的集合,每个类都是一个二分类。接着,我们可以通过跨多个分类计算每个二分类metrics得分的均值,这在一些情况下很有用。你可以使用average参数来指定。

macro:计算二分类metrics的均值,为每个类给出相同权重的分值。当小类很重要时会出问题,因为该macro-averging方法是对性能的平均。另一方面,该方法假设所有分类都是一样重要的,因此macro-averaging方法会对小类的性能影响很大。

weighted:对于不均衡数量的类来说,计算二分类metrics的平均,通过在每个类的score上进行加权实现。

micro:给出了每个样本类以及它对整个metrics的贡献的pair(sample-weight),而非对整个类的metrics求和,它会每个类的metrics上的权重及因子进行求和,来计算整个份额。Micro-averaging方法在多标签(multilabel)问题中设置,包含多分类,此时,大类将被忽略。

samples:应用在multilabel问题上。它不会计算每个类,相反,它会在评估数据中,通过计算真实类和预测类的差异的metrics,来求平均(sample_weight-weighted)

average:average=None将返回一个数组,它包含了每个类的得分.
参考链接sklearn评估指标

二分类(Binary classification)

对二分类问题常用的评估指标是精度(precision)、召回率(recall)、F1值(F1-score)。
精度、召回率、F1值能很好地评估一个模型是否合适。F1值越高,模型越合适。
Datawhale 零基础入门数据挖掘-the first 直播_第4张图片
在运用这些函数的时候
注意数据类型

数据是list类型

from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]
print('Precision',metrics.precision_score(y_true, y_pred))
print('Recall',metrics.recall_score(y_true, y_pred))
print('F1-score:',metrics.f1_score(y_true, y_pred))

结果输出

Precision 1.0
Recall 0.5
F1-score: 0.6666666666666666

数据是ndarray类型


from sklearn.metrics import precision_score, recall_score, f1_score
import numpy as np
 
y_true = np.array([[0, 1, 1], 
                   [0, 1, 0]])
y_pred = np.array([[1, 1, 1], 
                   [0, 0, 1]])
 
y_true = np.reshape(y_true, [-1])
y_pred = np.reshape(y_pred, [-1])
 
p = precision_score(y_true, y_pred, average='binary')
r = recall_score(y_true, y_pred, average='binary')
f1score = f1_score(y_true, y_pred, average='binary')
 
print(p)
print(r)
print(f1score)

输出结果

0.5
0.666666666667
0.571428571429

AUC

参考链接:sklearn学习:roc_auc曲线和metrics.roc_auc_score

1.概念

ROC(Receiver Operating Characteristic)曲线(受试者工作特征曲线 / 接收器操作特性曲线)和AUC常被用来评价一个二值分类器(binary classifier)的优劣。

ROC曲线是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
参考链接:ROC与AUC的定义与使用详解
roc_auc_score根据预测分数计算接收器工作特性曲线(ROC AUC)下的面积

## AUC
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))

结果输出

AUC socre: 0.75

参考链接深度学习:MAE 和 RMSE 详解
查看 MAE 和 RMSE 的比值可以帮助我们理解是否存在较大但不常见的错误。
如果比值很大,即存在较大异常值

# coding=utf-8
import numpy as np
from sklearn import metrics

# MAPE需要自己实现
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true) / y_true))

y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2])

# MSE
print('MSE:',metrics.mean_squared_error(y_true, y_pred))
# RMSE
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_true, y_pred)))
# MAE
print('MAE:',metrics.mean_absolute_error(y_true, y_pred))
# MAPE
print('MAPE:',mape(y_true, y_pred))

baseline讲解

数据读取

读取完数据,简要浏览:.head()

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

通过 .info() 简要可以看到对应一些数据列名,以及NAN缺失信息
.columns 查看列名

Train_data.info()
Train_data.columns

数据统计信息浏览:通过 .describe() 可以查看数值特征列的一些统计信息

Train_data.describe()

特征与标签构建

因为有数值列和非数值列所以我们要把他们分开

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

你可能感兴趣的:(笔记,python,算法,数据挖掘,机器学习)