Pandas数据分析入门
Posted 初心%
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas数据分析入门相关的知识,希望对你有一定的参考价值。
文章目录
前言
大家好,我是初心,很高兴再次和大家见面。这篇文章主要讲解Python数据分析三剑客之一——Pandas的数据分析运算,收录于初心的《大数据》专栏。
🏠 个人主页:初心%个人主页
🧑 个人简介:大家好,我是初心,一名正在努力的双非二本院校计算机专业学生
🍺 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺🍺🍺
💕 欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘
一、Pandas简介
1.1 什么是Pandas
Pandas 是基于NumPy 的一种工具,该工具是为了 解决数据分析任务而创建的
。官方对它的解释是 “强大的Python数据分析支持库”
,Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。Pandas官网
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
1.2 Pandas应用
Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)
,这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。
Series 是一种类似于 一维数组
的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。
DataFrame 是一个 表格型
的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典。
二、Series结构
2.1 Series简介
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,构造函数如下:
pandas.Series( data, index, dtype, name, copy)
参数 | 说明 |
---|---|
data | 一组数据(ndarray 类型) |
index | 数据索引标签,如果不指定,默认从 0 开始 |
dtype | 数据类型,默认会自己判断 |
name | 设置名称 |
copy | 拷贝数据,默认为 False |
Series简单示例代码和输出结果如下:
import pandas as pd
# 数据
a = [1,2,3]
# Series对象,会将列表数据转化为一列
myvar = pd.Series(a)
print(myvar)
2.2 基本使用
- 根据索引值读取数据
# 下标
print(myvar[0])
# 切片
print(myvar[:3])
- 设置索引
myvar = pd.Series(a,index=["x","y","z"])
- 使用字典创建Series对象
sites = 1: 'Google', 2: 'Edge', 3: 'Firefox'
myvar = pd.Series(sites)
print(myvar)
- 设置Series名称
myvar = pd.Series(sites,name='Pandas Test')
三、DataFrame结构
3.1 DataFrame简介
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)
。
DataFrame 的 每一行数据
都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。因此 DataFrame 其实是从 Series 的基础上演变而来。
可以这么说,掌握了 DataFrame 的用法,你就拥有了学习数据分析的基本能力。
3.2 基本使用
DataFrame 构造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
参数的含义和 Series 类似,column 表示列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
DataFrame 简单示例代码和输出结果如下:
import pandas as pd
# 数据
data = [['apple',10],['banana',12],['orange',31]]
# 指定列索引
df = pd.DataFrame(data,columns=['type','number'],dtype=float)
print(df)
- 使用 ndarrays 创建-键是列索引,值是数据
import pandas as pd
# ndarrays 数据
data = 'type':['apple','banana','orange'],'age':[10,12,31]
# 创建dataframe对象
df = pd.DataFrame(data)
print(df)
- 字典列表创建-一个字典是一行
# 字典列表
data1 = ['a':1,'b':2,'a':10,'b':20,'c':30]
df = pd.DataFrame(data1)
print(df)
- loc 属性返回行
data =
'calories': [420, 380, 390],
'duration': [50, 40, 45]
df = pd.DataFrame(data)
# 返回第一行
print(df.loc[1])
print('*'*20)
# 切片,返回前2行
print(df.loc[:1])
四、Pandas-CSV
4.1 CSV简介
CSV(Comma-Separated Values, 逗号分隔值
,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
4.2 读取CSV文件
在 Pandas 中用于读取文本的函数有两个,分别是: read_csv() 和 read_table() ,它们能够 自动地将表格数据转换为 DataFrame 对象
。其中 read_csv 的语法格式如下:
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',names=None, index_col=None, usecols=None)
这里要用到一个CSV文件(nba.csv),放在文末扫码可以领取。
read_csv() 函数简单示例代码和输出结果如下:
import pandas as pd
df = pd.read_csv('nba.csv')
print(df)
- 返回数据
打印 dataframe 对象默认返回数据的前后5行,中间部分以点代替,如上图所示。要返回全部数据需要使用 to_string()函数。
- 存储 csv 文件
使用 to_csv() 方法将 dataframe 对象存储为 csv 文件。
import pandas as pd
df = pd.read_csv('nba.csv')
print(df.head(3))
# 存储前三行数据到 test.csv 文件
df.to_csv('test.csv')
4.3 数据处理
- head() 函数
head(n) 函数用于读取前 n 行,如果不填写 n ,默认返回5行。
print(df.head(3))
- tail() 函数
tail(n) 函数用于读取后 n 行,如果不填写 n ,默认返回5行。
print(df.tail(3))
- info() 函数
info() 函数用于返回表格的一些基本信息。
print(df.info())
五、数据清洗
数据清洗是对一些没有用的数据进行处理的过程。
很多数据集存在 数据缺失、数据格式错误、错误数据或重复数据
的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。
我们可以利用 Pandas包来进行数据清洗。
5.1 数据清洗的方法
异常类型 | 处理方法 |
---|---|
重复值 | 一般采取删除法来处理,但有些重复值不能删除,例如订单明细数据或交易明细数据等。 |
缺失值 | 可以采取直接删除法,替换法或者插值法,常用的替换法有均值替换、前向、后向替换和常数替换 |
异常值 | 偏离正常范围的值,不是错误值,异常值往往采取盖帽法或者数据离散化 |
错误值 | 指的是数据格式错误,往往采取转换为相同格式的数据 |
5.2 清洗案例
- 清洗空值
如果我们要删除包含空字段的行,可以使用 dropna() 方法
,语法格式如下:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数 | 说明 |
---|---|
axis | 默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。 |
how | 默认为 ‘any’ 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。 |
thresh | 设置需要多少非空值的数据才能保留。 |
subset | 想要检查的列。如果是多个列,可以使用列名的 list 作为参数 |
inplace | 如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。 |
使用 isnull() 函数
判断各个单元格是否为空。
import pandas as pd
# 读取csv文件
df = pd.read_csv('../csv/nba.csv')
temp = df.head(6)
# 判断各个单元格是否为空
print(temp['College'].isnull())
Pandas 将 NAN 当作空值处理,我们也可以再定义空值
。
# 定义当作空值处理的数据
missing_data = ['n/a','na','--']
# 读取csv文件
df = pd.read_csv('../csv/nba.csv',na_values=missing_data)
我们可以用 fillna() 函数来替换一些空值。
# 替换所有
df2 = df.fillna(123456)
# 替换某一列
df2 = df['College'].fillna(12345)
Pandas使用 mean()、median() 和 mode() 方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)
。
# 临时dataframe对象
temp = df.head(6)
# 计算平均值
mean = temp['Age'].mean()
# 中位数
median = temp['Age'].median()
# 众数
mode = temp['Age'].mode()
# 使用中位数替换空值
print(temp['College'].fillna(mean))
- 清洗格式错误数据
数据格式错误的单元格会使数据分析变得困难,甚至不可能。我们可以通过包含空单元格的行,或者将列中的所有单元格转换为相同格式的数据。
to_datetime()
是格式化日期的函数。
- 清洗异常数据
我们可以对异常的数据进行替换或者移除。
import pandas as pd
# 异常数据1823
person =
'name': ['xiaoguo', 'xiaojiang'],
'age': [20, 1823]
df = pd.DataFrame(person)
# 修改异常数据
df.loc(1)['age'] = 18
print(df)
- 清洗重复数据
如果我们要清洗重复数据,可以使用 duplicated() 函数
判断和 drop_duplicates() 函数
删除。
# 判断是否重复
sign = df.duplicated('age')
# 删除重复行
temp = df.drop_duplicates('age')
总结
以上就是本次要分享给大家的内容啦!本文简单介绍了 Pandas中的两种数据类型——Series和DataFrame,以及 csv 文件的读取,利用Pandas进行数据清洗。
😊 初心致力于打造软件开发和大数据领域最通俗易懂的文章,希望能帮助到你。
🍺 当你真正喜欢做一件事时,自律就会成为你的本能。
😍 本文由初心原创,首发于CSDN博客,喜欢的话记得点赞收藏哦!我们下期再见!
Pandas高级数据分析快速入门之六——机器学习预测分析篇
Pandas高级数据分析快速入门之一——Python开发环境篇
Pandas高级数据分析快速入门之二——基础篇
Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇
Pandas高级数据分析快速入门之四——数据可视化篇
Pandas高级数据分析快速入门之五——机器学习特征工程篇
Pandas高级数据分析快速入门之六——机器学习预测分析篇
0. 训练集、测试集
标注客户交易特征数据集[4] ,经过流失标注(流失为1,不流失为0),拆分为训练集、测试集两部分,训练集用于建立模型,测试集评估模型的预测等能力。
如何拆分训练集和测试集?
train_test_split()函数是用来随机划分样本数据为训练集和测试集的,是从样本中随机的按比例选取train_data和test_target。
优点:随机客观的划分数据,减少人为因素
完整模板:
x_train,x_test, y_train, y_test = train_test_split(train_data,train_target,test_size=0.3,random_state=5)
参数解释:
- train_data:待划分样本数据
- train_target:待划分样本数据的结果(标签)
- test_size:测试数据占样本数据的比例,若整数则样本数量
- random_state:设置随机数种子,保证每次都是同一个随机数。若为0或不填,则每次得到数据都不一样
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import xgboost as xgb
from xgboost import plot_importance
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score,precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import roc_auc_score
把数据集拆分为训练集和测试集。
Columns_Name = ['flag','carduser_id','balance','balancerate',...]
df = pd.read_csv('train0605.csv')
cols = Columns_Name.copy()
cols.remove('carduser_id')
df = df[cols]
# 构建数据集
flag_col = 'flag'
X = df.drop([flag_col],axis=1)
Y = df[[flag_col]]
# 2、拆分训练数据与测试数据,为了进行交叉验证
x_train,x_test, y_train, y_test = train_test_split(X,Y,test_size=0.3)
1. XGBoost分类模型训练
XGBoost号称“比赛夺冠的必备大杀器”,横扫机器学习Kaggle、天池、DataCastle、Kesci等国内外数据竞赛罕逢敌手,堪称机器学习算法中的王者,业界使用者众多!
在涉及非结构化数据(图像、文本等)的预测问题中,人工神经网络显著优于所有其他算法或框架。但当涉及到中小型结构/表格数据时,基于决策树的算法现在被认为是最佳方法。而基于决策树算法中最惊艳的,非XGBoost莫属了。
XGBoost最初由陈天奇开发。陈天奇是华盛顿大学计算机系博士生,研究方向为大规模机器学习。他曾获得KDD CUP 2012 Track 1第一名,并开发了SVDFeature,XGBoost,cxxnet等著名机器学习工具,是Distributed (Deep) Machine Learning Common的发起人之一。
1.1. 输入数据集
XGBoost中使用的数据矩阵DMatrix。
DMatrix是XGBoost使用的一种内部数据结构,它针对内存效率和训练速度进行了优化。您可以从多个不同的数据源构造DMatrix。
xgboost.DMatrix(data,label=None,*,weight=None…)
参数:
data(os.PathLike/string/numpy.array/scipy.sparse/pd.DataFrame/)–DMatrix的数据源。xgboost可以读取的二进制文件。
label – 训练数据的标签。
dtrain = xgb.DMatrix(x_train, label=y_train)
dtest = xgb.DMatrix(x_test,label=y_test)
1.2. 超参数设置
学习任务参数objective
objective [默认= reg:squarederror]
- multi:softmax:设置XGBoost以使用softmax目标进行多类分类,还需要设置num_class(类数)
- multi:softprob:与softmax相同,但输出向量,可以进一步将其整形为矩阵。结果包含属于每个类别的每个数据点的预测概率。ndata * nclass
验证数据的评估指标eval_metric [根据目标默认]
- mlogloss:多分类的logloss
- merror:多类分类错误率。计算公式为。#(wrong cases)/#(all cases)
Tree Booster参数
- eta[默认= 0.3,别名:learning_rate]
在更新中使用步长收缩以防止过度拟合。在每个增强步骤之后,我们都可以直接获得新特征的权重,并eta缩小特征权重以使增强过程更加保守。范围:[0,1] - gamma[默认= 0,别名:min_split_loss]
在树的叶节点上进行进一步分区所需的最小损失减少。越大gamma,算法将越保守。范围:[0,∞] - max_depth [默认= 6]
一棵树的最大深度。增加此值将使模型更复杂,并且更可能过度拟合。仅lossguided当tree_method设置为hist且表示深度没有限制时,才在增长策略中接受0 。注意,训练一棵深树时,XGBoost会大量消耗内存。范围:[0,∞](仅lossguided当tree_method设置为时,增长策略才接受0 hist) - min_child_weight [默认值= 1]
子级中实例重量的最小总和(hessian)。如果树划分步骤导致叶节点的实例权重之和小于min_child_weight,则构建过程将放弃进一步的划分。在线性回归任务中,这仅对应于每个节点中需要的最少实例数。越大min_child_weight,算法将越保守。范围:[0,∞]
实际案例代码如下:
params ={'learning_rate': 0.1,
'max_depth': 10, # 构建树的深度,越大越容易过拟合
'num_boost_round':2000,
'gamma': 0.1, # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。
'objective': 'multi:softprob', # 多分类的问题
'random_state': 1,
'silent':0,
'subsample':0.8, # 用于训练模型的子样本占整个样本集合的比例
'min_child_weight':3, # [0,无穷],越大越趋于保守,有利于防止过拟合
'num_class':2, # 类别数,与 multisoftmax 并用
'colsample_bytree':0.9, # 特征比例
'seed':3,
'eval_metric':['mlogloss','merror'] #,'auc'], # 多分类情况
}
1.3. 模型训练
watchlist = [(dtrain,'train'),(dtest,'eval')]
evals_result = {}
best_nround = 200
model = xgb.train(params,dtrain,num_boost_round=best_nround,evals = watchlist,evals_result=evals_result)
(1)学习过程监控
训练过程监控输出,使用watchlist(list数据类型)不会影响模型训练。
[0] train-mlogloss:0.62928 train-merror:0.10594 eval-mlogloss:0.63007 eval-merror:0.11204
[1] train-mlogloss:0.57597 train-merror:0.09733 eval-mlogloss:0.57752 eval-merror:0.10408
[2] train-mlogloss:0.53121 train-merror:0.09527 eval-mlogloss:0.53324 eval-merror:0.10269
[3] train-mlogloss:0.49237 train-merror:0.09376 eval-mlogloss:0.49516 eval-merror:0.10094
[4] train-mlogloss:0.45872 train-merror:0.09190 eval-mlogloss:0.46240 eval-merror:0.09932
[5] train-mlogloss:0.43001 train-merror:0.09100 eval-mlogloss:0.43436 eval-merror:0.09835
(2)可视化输出学习过程,损失、错误率变换情况:
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score,precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import roc_auc_score
print('绘制训练AUC下降趋势图')
#验证数据评估指标,与param参数,'eval_metric':['logloss','error','auc']相关
#验证包括训练和验证两个部分(train、eval),如上所示3个参数,则是6组数据
plt.figure(111)
plt.rcParams['font.family']='sans-serif'
plt.rcParams['font.sans-serif']=['KaiTi'] #显示中文
plt.rcParams['axes.unicode_minus']=False
plt.grid()
plt.plot(evals_result['train']['mlogloss'],label = '训练集-损失',color='green')
plt.plot(evals_result['train']['merror'],label = '训练集-错误率',color='blue')
plt.plot(evals_result['eval']['mlogloss'],label = '评估集-损失',color='deeppink')
plt.plot(evals_result['eval']['merror'],label = '评估集-错误率',color='red')
plt.xlabel('训练次数')
# 显示图例
plt.legend()
(4)输出预测结果
y_pred=model.predict(xgb.DMatrix(x_test))
yprob = np.argmax(y_pred, axis=1) # return the index of the biggest pro
predictions = [value for value in yprob] # 用于多分类
# 计算准确率
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
print(params)
Accuracy: 96.12%
{'learning_rate': 0.1, 'max_depth': 10, 'num_boost_round': 2000, 'gamma': 0.1, 'objective': 'multi:softprob', 'random_state': 1, 'silent': 0, 'subsample': 0.8, 'min_child_weight': 3, 'num_class': 2, 'colsample_bytree': 0.9, 'seed': 3, 'eval_metric': ['mlogloss', 'merror']}
绘制训练AUC下降趋势图
1.4. 模型持久化
训练结束时保存为模型文件。
test = False
Model_Filename = 'XGboost0605.model'
if test==False:
model.save_model(Model_Filename)
2. 预测结果分析
2.1. 重要特征
完成模型训练,给出特征重要分值,如下图所示显示特征重要程度图(截取部分)。
XGBoost的特征重要性是如何得到的?某个特征的重要性(feature score),等于它被选中为树节点分裂特征的次数的和,比如特征“daysnum”在第一次迭代中(即第一棵树)被选中了1次去分裂树节点,在第二次迭代被选中2次……那么最终特征“daysnum”的feature score就是 1+2+….。
# 显示重要特征
fig,ax = plt.subplots(figsize=(15,15))
plt.rcParams['font.sans-serif']=['KaiTi'] #显示中文
plt.rcParams['font.family']='sans-serif'
plt.rcParams['axes.unicode_minus']=False
plot_importance(model, ax=ax, height=0.5, title='特征重要程度', xlabel='特征值', ylabel='特征')
plt.subplots_adjust(left=0.4)
2.2. 模型评估
基于机器学习的混淆矩阵,以及常用的准确率、精准率、召回率、F1分数、ROC与AUC曲线等做为此二分类问题模型的评价指标。
ROC与AUC曲线如图所示。
模型评估工具,使用sklearn的metrics,metrics包含了许多模型评估指标括:分类、回归、聚类等模型评估工具。
由于此部分通用性较强,封装成类Multi_class_evaluation便于使用,详情参考博文[1]。
import Multi_class_evaluation
Mce = Multi_class_evaluation.Multi_class_evaluation(y_test,y_pred,n_class=2,flag='flag') #多分类方式
def get_one_hot(y_pred):
y_pred = np.round(y_pred)
y_pred2 = []
for v in y_pred:
v = int(v)
tmp = np.zeros(2,dtype=np.int)
tmp[v] = tmp[v] + 1
y_pred2.append(tmp)
y_pred2 = np.array(y_pred2)
return y_pred2
Mce.calculation_ROC_AUC()
Mce.draw_ROC()
y, y_ =Mce.y, Mce.y_pred
precision = precision_score(y_test.values, np.array(predictions),average='macro')
print('precision Score: %.2f%%' % (precision*100.0))
recall = recall_score(y_test.values, np.array(predictions),average='macro')
print('Recall Score: %.2f%%' % (recall*100.0))
auc = roc_auc_score(y, y_ ,multi_class='ovo',average='macro')
print('Roc Auc Score: %.2f%%' % (auc*100.0))
3. XGBoost分类持久化模型应用
通过xgb.Booster()加载持久化模型文件,执行predict()预测方法预测。
XGB_Model = xgb.Booster(model_file=Model_Filename)
x = xgb.DMatrix(x_test)
#模型预测
y = XGB_Model.predict(x)
yprob = np.argmax(y, axis=1) # return the index of the biggest pro
print(yprob)
# 取预测结果标识
y_pred = [value for value in yprob]
#print(y_pred)
# 取预测概率,索引第二列(1)为流失
yprob = np.round(y[:,1]*100,2)
print(yprob)
附录:参数
学习任务参数objective
objective [默认= reg:squarederror]
- multi:softmax:设置XGBoost以使用softmax目标进行多类分类,还需要设置num_class(类数)
- multi:softprob:与softmax相同,但输出向量,可以进一步将其整形为矩阵。结果包含属于每个类别的每个数据点的预测概率。ndata * nclass
其他配置- reg:squarederror:损失平方回归。
- reg:squaredlogerror:对数损失平方回归
所有输入标签都必须大于-1。另外,请参阅指标rmsle以了解此目标可能存在的问题。- reg:logistic:逻辑回归
- reg:pseudohubererror:使用伪Huber损失进行回归,这是绝对损失的两倍可微选择。
- binary:logistic:二元分类的逻辑回归,输出概率
- binary:logitraw:用于二进制分类的逻辑回归,逻辑转换之前的输出得分
- binary:hinge:二进制分类的铰链损失。这使预测为0或1,而不是产生概率。
- count:poisson –计数数据的泊松回归,泊松分布的输出平均值
max_delta_step 在泊松回归中默认设置为0.7(用于维护优化)- survival:cox:针对正确的生存时间数据进行Cox回归(负值被视为正确的生存时间)。请注意,预测是按危险比等级返回的(即,比例危险函数中的HR = exp(marginal_prediction))。h(t) = h0(t) * HR
- survival:aft:用于检查生存时间数据的加速故障时间模型。有关详细信息,请参见具有加速故障时间的生存分析。
- aft_loss_distribution:survival:aft目标和aft-nloglik度量使用的概率密度函数。
- rank:pairwise:使用LambdaMART进行成对排名,从而使成对损失最小化
- rank:ndcg:使用LambdaMART进行列表式排名,使标准化折让累积收益(NDCG)最大化
- rank:map:使用LambdaMART进行列表平均排名,使平均平均精度(MAP)最大化
- reg:gamma:使用对数链接进行伽马回归。输出是伽马分布的平均值。例如,对于建模保险索赔的严重性或对可能是伽马分布的任何结果,它可能很有用。
- reg:tweedie:使用对数链接进行Tweedie回归。它可能有用,例如,用于建模保险的总损失,或用于可能是Tweedie分布的任何结果。
验证数据的评估指标eval_metric [根据目标默认]
- mlogloss:多分类的logloss
- merror:多类分类错误率。计算公式为。#(wrong cases)/#(all cases)
其他配置:- rmse:均方根误差
- rmsle:均方根对数误差
reg:squaredlogerror目标的默认指标。此指标可减少数据集中异常值所产生的错误。但是由于log采用功能,rmsle可能nan在预测值小于-1时输出。有关reg:squaredlogerror其他要求,请参见。
- mae:平均绝对误差
- mape:平均绝对百分比误差
- mphe:平均伪Huber错误。reg:pseudohubererror目标的默认指标。
- logloss:负对数似然
- error:二进制分类错误率。计算公式为。对于预测,评估会将预测值大于0.5的实例视为肯定实例,而将其他实例视为否定实例。#(wrong cases)/#(all cases)
- error@t:可以通过提供’t’的数值来指定不同于0.5的二进制分类阈值。
- merror:多类分类错误率。计算公式为。#(wrong cases)/#(all cases)
- auc:曲线下面积
- aucpr:PR曲线下的面积
- ndcg:归一化累计折扣
- map:平均平均精度
- ndcg@n,map@n:'n’可以被指定为整数,以切断列表中的最高位置以进行评估。
- ndcg-,map-,ndcg@n-,map@n-:在XGBoost,NDCG和MAP将评估清单的比分没有任何阳性样品为1加入-在评价指标XGBoost将评估这些得分为0,是在一定条件下一致""。
- poisson-nloglik:泊松回归的负对数似然
- gamma-nloglik:伽马回归的对数似然比为负
- cox-nloglik:Cox比例风险回归的负对数似然率
-gamma-deviance:伽马回归的剩余偏差
-tweedie-nloglik:Tweedie回归的负对数似然(在tweedie_variance_power参数的指定值处)- aft-nloglik:加速故障时间模型的负对数可能性。有关详细信息,请参见具有加速故障时间的生存分析。
- interval-regression-accuracy:其预测标签位于间隔检查的标签中的数据点的分数。仅适用于间隔检查的数据。有关详细信息,请参见具有加速故障时间的生存分析。
参考:
[1] . 肖永威 .不平衡多分类问题模型评估指标探讨与sklearn.metrics实践 ,CSDN博客 , 2021.05
[2] . 忆凡人生 .【ML-6-4-1】xgboost参数说明 ,博客园,yifanhunter, 2020.10
[3] . 肖永威 . XGBoost线性回归工控数据分析实践案例(原生篇) ,CSDN博客 ,2020.08
[4] . 肖永威 . Pandas高级数据分析快速入门之五——机器学习特征工程篇 ,CSDN博客 ,2021.09
以上是关于Pandas数据分析入门的主要内容,如果未能解决你的问题,请参考以下文章