本学习笔记为阿里云天池龙珠计划数据挖掘训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampdm?spm=5176.19782939.J_7381678370.2.66a7564bfcB4xK
一、学习知识点概要- 从比赛信息中获取的信息
- 读取数据
- 关于分类指标评价计算
- 关于回归指标平价计算
- 关于一些名词的认识
二、学习内容: 1. 从比赛中学到的新知识
a. 脱敏处理:对于一些隐私的信息进行处理,例如手机号处理为186****7392这样子。 b. label encoding即数字形式 c. 匿名特征就是未告知数据列所属的相关性质 d. 评估指标就是评价模型效果与实际效果的差距(具体的评估指标后面写)2. 关于数据的读取
1. pandas里面的head函数,是能显示五条数据(默认是五条),可以更改显示的条数
2. 学习到了如何读取到数据。并且学习到了pandas如何读取csv文件
#accuracy
import numpy as np
from sklearn.metrics import accuracy_score
y_pred=[0,1,3,4]
y_true=[0,1,4,4]
print('ACC:',accuracy_score(y_pred,y_true,normalize=False))
print('ACC:',accuracy_score(y_true,y_pred))
这里用的是accuracy_score函数,这个函数是一个评估方法。分类准确率分数是指所有分类正确所占的的百分比。
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)
如果normalize是False的话会返回y_pred中与y_true一样的元素的数目,默认是True,返回的是正确所占的比率。
- 前提知识:
我用T表示预测正确,F表示预测错误
用P表示正类,用N表示负类
TP:预测为正,判断正确
FP:预测为正,判断错误
FN:预测为负,判断错误
TN:预测为负,判断正确
## Precision
from sklearn import metrics
y_pred = [1,1,0,0,0]
y_true = [1,0,0,1,0]
print('Precision',metrics.precision_score(y_true, y_pred))
'''解析就是这里没有指明average的取值,也就是说取了默认的binary。1为默认的正类,则TP(被预测为正类的正类值,也就是被预测为了1)有1个,
TP+FP(也就是被预测为1的总个数)有两个,于是算出P=TP/(TP+FP)为0.5'''
这里使用了precision_score函数。而在这个函数里面的参数average默认值是binary,则默认情况下要求y_true, y_pred都只含有0和1(也就是二进制).并且还涉及到另一个参数pos_label,pos_label即指定被视作positive_label的值(也就是被视作正类的值),默认取1.也就是默认1为positive(也就是常说的正类)。
- 关于average的其他参数,如最常用的macro和weight计算方也是在计算出了P的基础上。
这里和上面一样average都去的是默认的值binary
#Recall
print('Recall:',metrics.recall_score(y_true, y_pred))
'''解析就是这里还去先找TP,也就是1.然后找TP+FN(FN:预测为负,
判断错误,也就是找预测值为0的,但是原值为1)个数有2个,
于是recall=TP/(TP+FN)'''
- F1_分数
#F1-score
print('F1-score:',metrics.f1_score(y_true, y_pred))
'''计算方式就是(2*P*R)/(P+R),其中P和R分别就是上面
的精确率和召回率'''
4、回归指标平价计算
(相关信息与解释已写在注释上面了)
# coding=utf-8
import numpy as np
from sklearn import metrics
# MAPE需要自己实现,没有在sklearn库里面,所以要自己写代码来实现
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))
除了这些还有关于拟合的:
## R2-score R2 决定系数(拟合优度),越接近1越好
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print('R2-score:',r2_score(y_true, y_pred))
这个是R2越接近1,表示相关性越高!
三、学习问题与解答- 遇到不认识的函数:我先去自己查找资料,从csdn,官方文档上面查找,然后解决
- 感觉自己学习的挺慢的,对于知识的记忆程度未知,想要请教一下什么才叫学到了知识?是我看过了就算吗,因为我认为有的东西可能很少用到,所以应该不用去记忆吧大概?
- 想要请教各位大神,就是我之前完全没接触过,只学过课内的python,像这种每天跟着学,边跟着进度走,边学可行吗?就是类似根据学的内容去补没学的。
四、学习思考与总结
- 自己才刚刚开始学习,遇到不会的很正常,希望保持心态,查缺补漏
- 每天学习时间争取控制在2小时左右,一是保证长时间段的思考,二是给自己一个压力,不要在学习中放松
- 边学边做,及时地复习。



