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数据分析入门的主要内容,如果未能解决你的问题,请参考以下文章

Pandas高级数据分析快速入门之二——基础篇

pandas入门

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之四——数据可视化篇

Pandas高级数据分析快速入门之一——Python开发环境篇