2021-04-13

数据挖掘学习笔记

 什么是数据挖掘
作为一个多学科领域,数据挖掘可以用多种方法定义。

知识发现过程由以下步骤的迭代序列组成:

(1)    数据清理(消除噪声和删除不一致的数据)

(2)    数据集成(多种数据源可以组合在一起)

(3)    数据选择(从数据库中提取与分析任务相关的数据)

(4)    数据变换(通过汇总或聚集操作,把数据变换和统一成适合挖掘的形式)

(5)    数据挖掘(基本步骤,使用智能方法提取数据模式)

(6)    模式评估(根据某种兴趣度度量,识别代表知识的真正有趣的模式)

(7)    知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)

1.数据的导入与观察

import pandas as pd
import numpy as np


## 1) 载入训练集和测试集;
path = 'D:\\tc.car\\data\\'
Train_data = pd.read_csv(path+'used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv(path+'used_car_testA_20200313.csv', sep=' ')

print('Train data shape:',Train_data.shape)
print('TestA data shape:',Test_data.shape)
print(Test_data.head())  # 看前五行

2.预测指标
一般问题评价指标说明:

什么是评估指标:

评估指标即是我们对于一个模型效果的数值型量化。(有点类似与对于一个商品评价打分,而这是针对于模型效果和理想效果之间的一个打分)

一般来说分类和回归问题的评价指标有如下一些形式:

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

对于二类分类器/分类算法,评价指标主要有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)
平均绝对误差 平均绝对误差(Mean Absolute Error,MAE):平均绝对误差,其能更好地反映预测值与真实值误差的实际情况,其计算公式如下:

均方误差 均方误差(Mean Squared Error,MSE),均方误差,其计算公式为:


R2(R-Square)的公式为: 残差平方和:

总平均值:

R2 表达式为:


R2 用于度量因变量的变异中可由自变量解释部分所占的比例,取值范围是 0~1,R2越接近1,表明回归平方和占总平方和的比例越大,回归线与各观测点越接近,用x的变化来解释y值变化的部分就越多,回归的拟合程度就越好。所以R2也称为拟合优度(Goodness of Fit)的统计量。yi表示真实值,y^i表示预测值,y¯i表示样本均值。得分越高拟合效果越好。

准确率:

## accuracy
import numpy as np
from sklearn.metrics import accuracy_score
'''
分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。

形式:
sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数
'''
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred))  # 0.75

分类指标评价计算示例

'''
精确度:precision,正确预测为正的,占全部预测为正的比例,TP / (TP+FP)
召回率:recall,正确预测为正的,占全部实际为正的比例,TP / (TP+FN)
F1-score:精确率和召回率的调和平均数,2 * precision*recall / (precision+recall)
'''
## Precision,Recall,F1-score
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))  # 1.0
print('Recall',metrics.recall_score(y_true, y_pred))  # 0.5
print('F1-score:',metrics.f1_score(y_true, y_pred))  # 0.666666..
'''
1.AUC

      AUC(Area Under ROC Curve),即ROC曲线下面积。

2.AUC意义

      若学习器A的ROC曲线被学习器B的ROC曲线包围,则学习器B的性能优于学习器A的性能;若学习器A的ROC曲线和学习器B的ROC曲线交叉,则比较二者ROC曲线下的面积大小,即比较AUC的大小,AUC值越大,性能越好。

3.sklearn中计算AUC值的方法

形式:
       from sklearn.metrics import roc_auc_score

       auc_score = roc_auc_score(y_test,y_pred)

说明:
y_pred即可以是类别,也可以是概率。
roc_auc_score直接根据真实值和预测值计算auc值,省略计算roc的过程。

'''
## 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))  # 0.75
# 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(均方根误差)  就是MSE开个根号
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))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值