Análise de dados na prática (básico): da exploração de dados à interpretação do modelo

prefácio

  • Este artigo enfoca o conhecimento básico e as habilidades de análise de dados e explora o processo completo, desde a exploração de dados até a modelagem e a interpretação do modelo
  • O conteúdo inclui exploração de dados, construção de modelo, habilidades de ajuste de parâmetros, explicação do modelo SHAP
  • Os dados vêm da plataforma kaggle, conjunto de dados de previsão da idade do caranguejo, detalhes dos dados

os dados mostram

fundo de dados

Os caranguejos são deliciosos e muitos países do mundo importam grandes quantidades de caranguejos para consumo todos os anos. As principais vantagens da caranguejeira são os baixos custos de mão-de-obra, os custos de produção relativamente baixos e o rápido crescimento. A criação comercial de caranguejo está desenvolvendo o estilo de vida das pessoas nas áreas costeiras. Com os devidos cuidados e manejo, podemos ganhar mais dinheiro com a caranguejeira do que com a carcinicultura. Você pode manter caranguejos de lama em dois sistemas. Desenvolver sistemas de cultivo e engorda.

valor de dados

Para os criadores comerciais de caranguejos, saber a idade correta dos caranguejos os ajuda a decidir se e quando colhê-los. Os caranguejos crescem desprezíveis em suas características físicas além de uma certa idade, por isso é importante cronometrar a colheita para reduzir custos e aumentar os lucros. Os objetivos deste conjunto de dados são:

  • Análise Exploratória de Dados - Veja como diferentes características físicas mudam com a idade.
  • Engenharia de recursos - Defina novos recursos usando uma determinada combinação de pontos de dados para ajudar a melhorar a precisão do modelo.
  • Modelo de regressão - Construa um modelo de regressão para prever a idade do caranguejo.

campo de dados

  • Sex: Sexo do caranguejo - macho (M), fêmea (F) e indeterminado (I).
  • Length: comprimento do caranguejo (em pés; 1 pé = 30,48 cm)
  • Diameter: diâmetro do caranguejo em pés; 1 pé = 30,48 cm)
  • Height: altura do caranguejo (em pés; 1 pé = 30,48 cm)
  • Weight: o peso do caranguejo em onças; 1 libra = 16 onças
  • Shucked Weight: Peso sem casca (em onças; 1 lb = 16 oz)
  • Viscera Weight: Peso dos órgãos abdominais no fundo do corpo (em onças; 1 libra = 16 onças)
  • Shell Weight: Peso da Caixa (oz; 1 lb = 16 oz)
  • Age: idade do caranguejo (meses)

pacote dependente

  • pandas: ler dados, pacote base
  • ydata-profiling: Pacote de exploração rápida de dados, endereço do projeto Github , documentos oficiais
  • sklearn: Pacote clássico de modelo de aprendizado de máquina, aqui não há muita introdução
  • shap: SHAP (SHapley Additive exPlanations) é uma abordagem teórica de jogos para explicar a saída de qualquer modelo de aprendizado de máquina. Ele vincula atribuições de crédito ótimas a interpretações locais, usando valores clássicos de Shapley e suas extensões relacionadas da teoria dos jogos (consulte o artigo para obter detalhes e citações ).
  • A análise a seguir é baseada no suporte dos pacotes acima. Use-o com antecedência para pip installinstalá-lo. Se for usado no Jupyter Notebook, use ```!pip install``.

Importar pacotes necessários

import numpy as np
import pandas as pd
from plotnine import*
import seaborn as sns
from scipy import stats

import matplotlib as mpl
import matplotlib.pyplot as plt
#中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# notebook嵌入图片
%matplotlib inline
# 提高分辨率
%config InlineBackend.figure_format='retina'

from ydata_profiling import ProfileReport

import shap

# 忽略警告
import warnings
warnings.filterwarnings('ignore')

Importar dados

df = pd.read_csv('/kaggle/input/crab-age-prediction/CrabAgePrediction.csv')
df.head()

saída :

Sex	Length	Diameter	Height	Weight	Shucked Weight	Viscera Weight	Shell Weight	Age
0	F	1.4375	1.1750	0.4125	24.635715	12.332033	5.584852	6.747181	9
1	M	0.8875	0.6500	0.2125	5.400580	2.296310	1.374951	1.559222	6
2	I	1.0375	0.7750	0.2500	7.952035	3.231843	1.601747	2.764076	6
3	F	1.1750	0.8875	0.2500	13.480187	4.748541	2.282135	5.244657	10
4	I	0.8875	0.6625	0.2125	6.903103	3.458639	1.488349	1.700970	6

análise de dados

profile = ProfileReport(df, title="Crab data report")
profile.to_notebook_iframe()
  • Como o CSDN não pode incorporar arquivos html, aqui podemos apenas dividir o relatório de dados completo e explicá-lo separadamente.

visão geral

insira a descrição da imagem aqui

  • As seguintes informações podem ser obtidas a partir da figura acima:
    • Os dados contêm um total de 9 recursos
    • Os dados têm um total de 3893 amostras
    • A amostra de dados não tem nenhuma falta ou repetição
    • Há 1 variável categórica e as outras 8 são variáveis ​​numéricas
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • características têm uma forte correlação LengthcomDiameter
    • características têm uma forte correlação LengthcomHeight
    • características têm uma forte correlação LengthcomWeight
    • características têm uma forte correlação LengthcomShucked Weight
    • características têm uma forte correlação LengthcomViscera Weight
    • características têm uma forte correlação LengthcomShell Weight
    • características têm uma forte correlação LengthcomAge

variável

insira a descrição da imagem aqui

  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Sexé uma variável categórica, com um total de 3 categorias
    • Entre eles, Mexistem 1.435 amostras de categoria, I1.233 amostras de categoria e F1.225 amostras de categoria.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Lengthé uma variável numérica, um total de 134 valores apareceu e a razão da diferença foi de 3,4%
    • De acordo com o histograma, pode-se ver que a distribuição de dados é assimétrica para a direita
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Diameteré uma variável numérica, um total de 111 valores apareceu e a razão da diferença foi de 2,9%
    • De acordo com o histograma, pode-se ver que a distribuição de dados é assimétrica para a direita
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Heighté uma variável numérica, um total de 51 valores apareceram e a razão da diferença é de 1,3%
    • De acordo com o histograma, pode-se observar que a distribuição dos dados é normalmente distribuída, mas o valor máximo é 2,825, o que é um pouco anormal e pode precisar ser considerado para eliminação.
    • Existem valores de 2 0, representando 0,1% da amostra total.De acordo com a experiência, o comprimento não pode ser 0, portanto essas 2 amostras podem ser amostras anormais e precisam ser eliminadas.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Weighté uma variável numérica, um total de 2343 valores apareceram e a razão da diferença é de 60,2%
    • De acordo com o histograma, pode-se ver que a distribuição dos dados é tendenciosa à esquerda. Valores após 60 precisam considerar se são outliers em potencial e tratá-los de acordo.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Shucked Weighté uma variável numérica, um total de 1482 valores apareceram e a razão da diferença é de 38,1%
    • De acordo com o histograma, pode-se ver que a distribuição dos dados tem um certo viés à esquerda. Valores após 30 precisam considerar se são outliers em potencial e tratá-los de acordo.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Viscera Weighté uma variável numérica, um total de 867 valores apareceu e a razão da diferença foi de 22,3%
    • De acordo com o histograma, pode-se ver que a distribuição dos dados tem um certo viés à esquerda. Valores após 15 precisam considerar se são outliers em potencial e tratá-los de acordo.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Shell Weighté uma variável numérica, um total de 907 valores apareceu e a razão da diferença foi de 23,3%
    • De acordo com o histograma, pode-se ver que a distribuição dos dados tem um certo viés à esquerda. Valores após 20 precisam considerar se são outliers em potencial e tratá-los de acordo.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.
      insira a descrição da imagem aqui
  • As seguintes informações podem ser obtidas a partir da figura acima:
    • O recurso Ageé uma variável numérica, são 28 valores no total e a razão da diferença é de 0,7%
    • De acordo com o histograma, pode-se perceber que a distribuição dos dados é basicamente uma distribuição normal. Valores após 25 precisam considerar se são potenciais outliers e tratá-los de acordo.
    • Obtenha várias características estatísticas deste recurso, como valores máximos e mínimos, valores médios, quartis, etc.

diagrama de interação

  • Aqui você pode escolher duas variáveis ​​diferentes, pois o espaço é limitado, aqui mostra apenas o gráfico de interação com o eixo vertical Weighte o eixo horizontal .Age
    insira a descrição da imagem aqui

Diagrama de correlação

insira a descrição da imagem aqui

  • As informações altamente relevantes mostradas na figura acima foram explicadas no estágio de visão geral, portanto não entrarei em detalhes aqui.

processamento de dados

  • De acordo com a análise de dados acima, os dados são processados ​​de acordo
  • HeightRemova as amostras com 0 no recurso
  • Como Sexnão há relação de tamanho, é codificado em um ponto, usandodf = pd.get_dummies(df,columns=["Sex"])
  • O algoritmo de floresta de isolamento em uso sklearnremove possíveis outliers e a proporção de outliers é 0,05 (valor empírico)
  • Padronizar ( zscore) transformar os dados. Devido à pequena quantidade de dados, o conjunto de treinamento é 0,9, o conjunto de teste é 0,1 e o MSE médio do teste cruzado de 10 vezes é usado como padrão de avaliação
  • Com a idade como variável dependente e o restante das características como variáveis ​​independentes, um modelo de regressão é construído

Construir modelos e ajustar parâmetros

  • Use sklearn para construir uma variedade de modelos de regressão, como gbr, catboost, lightgbmetc.
EU IA Modelo MAE MSE RMSE R2 RMSLE MAPA TT (seg)
gbr Regressor de aumento de gradiente 1.5019 4.4889 2.1169 0,5530 0,1727 0,1501 0,3410
impulso do gato CatBoost Regressor 1.5082 4.5334 2.1277 0,5485 0,1729 0,1505 2.6590
lightgbm Máquina de aumento de gradiente de luz 1,5240 4.6280 2.1504 0,5389 0,1751 0,1516 0,4320
rf Random Forest Regressor 1.5338 4.6551 2.1561 0,5363 0,1762 0,1535 0,8190
et Extra Trees Regressor 1.5494 4.7462 2.1772 0,5267 0,1780 0,1552 0,4890
cume Regressão Ridge 1.5771 4.8477 2.1979 0,5166 0,1824 0,1596 0,0430
lr Regressão linear 1,5772 4.8479 2.1980 0,5165 0,1822 0,1596 0,4730
lar Regressão de menor ângulo 1,5772 4.8479 2.1980 0,5165 0,1822 0,1596 0,0470
br cume bayesiano 1.5771 4.8482 2.1980 0,5166 0,1824 0,1596 0,0440
huber Huber Regressor 1,5435 4.9130 2.2136 0,5105 0,1814 0,1503 0,0620
xgboost Aumento de Gradiente Extremo 1,5884 5.0390 2.2429 0,4972 0,1822 0.1581 0.2910
knn K Neighbors Regressor 1.6147 5.1607 2.2705 0.4856 0.1853 0.1599 0.0500
omp Orthogonal Matching Pursuit 1.8157 6.1171 2.4715 0.3917 0.2084 0.1867 0.0400
en Elastic Net 1.8855 6.6865 2.5833 0.3367 0.2212 0.2007 0.0440
lasso Lasso Regression 1.9536 7.1238 2.6663 0.2937 0.2360 0.2154 0.0440
llar Lasso Least Angle Regression 1.9536 7.1238 2.6663 0.2937 0.2360 0.2154 0.0420
ada AdaBoost Regressor 2.2463 7.2386 2.6873 0.2767 0.2325 0.2479 0.1820
dt Decision Tree Regressor 2.0626 8.9308 2.9865 0.1079 0.2389 0.2035 0.0530
par Passive Aggressive Regressor 2.2911 9.0001 2.9784 0.0897 0.2636 0.2401 0.0480
dummy Dummy Regressor 2.3369 10.0990 3.1743 -0.0006 0.2871 0.2672 0.0990
  • 可以发现,gbr模型的MSE最低,效果最好。使用随机搜索,调整参数,迭代20次,最佳模型10折交叉检验结果。
Fold MAE MSE RMSE R2 RMSLE MAPE
0 1.5267 4.7045 2.1690 0.5536 0.1719 0.1519
1 1.4646 4.3281 2.0804 0.5695 0.1674 0.1447
2 1.5053 4.3746 2.0915 0.5534 0.1757 0.1562
3 1.4995 4.5526 2.1337 0.5466 0.1731 0.1512
4 1.5798 4.6405 2.1542 0.5627 0.1842 0.1652
5 1.3879 3.7092 1.9259 0,6079 0,1654 0,1462
6 1.5613 4.8066 2.1924 0,5326 0,1744 0,1508
7 1.4739 4.4213 2.1027 0,5899 0,1683 0,1440
8 1.4873 4.5554 2.1343 0,6052 0,1716 0,1502
9 1,4654 4,0750 2.0187 0,4792 0,1658 0,1471
Significar 1,4952 4.4168 2.1003 0,5601 0,1718 0,1508
Padrão 0,0515 0,3082 0,0748 0,0359 0,0053 0,0060
  • Os parâmetros ideais são os seguintes:
Parâmetro números
alfa 0,9
ccp_alpha 0,0
critério fritoman_mse
iniciar Nenhum
taxa de Aprendizagem 0,1
perda erro_quadrado
profundidade máxima 3
max_features Nenhum
max_leaf_nodes Nenhum
min_impurity_decrease 0,0
min_samples_leaf 1
min_samples_split 2
min_weight_fraction_leaf 0,0
n_estimadores 100
n_iter_no_change Nenhum
estado_aleatório 2023
subamostra 1,0
para mim 0,0001
validação_fração 0,1
prolixo 0
warm_start Falso

análise do modelo

  • Analise o modelo e visualize alguns indicadores

Gráfico residual do modelo

Adicione uma descrição da imagem

  • O modelo é R 2 R^2 no conjunto de treinamento e no conjunto de testeR2 não é muito diferente, indicando que não há fenômeno de overfitting
  • O resíduo é distribuído uniformemente em ambos os lados da linha 0 e apresenta aleatoriedade
  • A distribuição residual do modelo no conjunto de treinamento e no conjunto de teste é basicamente a mesma

Modelo de Curva de Aprendizagem

Adicione uma descrição da imagem

  • Através da curva de aprendizado podemos julgar se o modelo apresenta fenômeno de overfitting, verificando-se que o conjunto de treinamento e o conjunto de verificação da figura acima estão convergindo para o valor médio, indicando que o modelo não participou do fenômeno de overfitting.

interpretação do modelo

  • Este módulo usará o pacote SHAP, usando o valor de Shapley para avaliar o impacto dos recursos no modelo.

tente

  • Podemos pegar uma amostra e visualizar seu processo de previsão, o código é o seguinte
# 取训练数据
X = s.get_config('X_train')
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])

insira a descrição da imagem aqui

  • 红色的代表特征贡献的正方向力(将预测推高),蓝色的表示特征贡献的负方向的力(将预测推低)

部分依赖图

  • 为了解单个特征如何影响模型的输出以及特征间的交互作用,我们可以绘制部分依赖图
  • 部分预测图遵照下列规则
    • 每个点都是数据集中的一个样本
    • x轴是特征的值(来自X矩阵,存储在shap_values.data中)
    • y轴是该特征的SHAP值(存储在shap_values.values中)。它表示了该特征的值会在多大程度上改变该样本预测的模型输出。对于这个模型,单位是Age的对数赔率。
    • 散点图的颜色由另一个特征决定,如果不传入固定特征,则函数会挑选与分析特征交互最强的特征列(比如在下面与Length交互性最强的是Sex_F
  • 我们绘制出除Sex独热编码后的其余列,并让函数自动选择与其交互性较强的特征
for name in X.columns:
    if 'Sex' not in name:
        shap.dependence_plot(name, shap_values, X)

Adicione uma descrição da imagem

  • 由上图可知:
    • Length交互性最强的是Sex_F
    • 长度在1.25以上的雌性螃蟹年龄高于雄性和未知性别螃蟹
    • 长度在1.00以下时,随着长度增加年龄也随着增加,但超过1.00以上时,长度增加年龄不一定增加
      Adicione uma descrição da imagem
  • 由上图可知:
    • Diameter交互性最强的是Sex_M
    • 螃蟹直径小于0.6时,直径越长,年龄越小。当直径在0.6~0.8时,直径越长,年龄越大,当直径超过0.8时,直径对年龄影响较小
    • 直径在0.7以下时,雄性螃蟹年龄基本大于雌性和未知性别
      Adicione uma descrição da imagem
  • 由上图可知:
    • Height交互性最强的是Length
    • 螃蟹高度大于0.3时,长度大的螃蟹年龄更大
      Adicione uma descrição da imagem
  • 由上图可知:
    • Weight交互性最强的是Sex_M
    • 在重量相同时,雄性螃蟹年龄比雌性和未知性别年龄大
      Adicione uma descrição da imagem
  • 由上图可知:
    • Shucked Weight交互性最强的是Diameter
    • 当螃蟹不含壳的重量小于3时,重量越小,年龄越小。
    • 去壳重量量越大,螃蟹直径越大

蜂群摘要图

  • 蜂群图旨在显示数据集中的主要特征如何影响模型输出的信息密集摘要。
  • 给定解释的每个实例都由每个特征流上的单个点表示。
  • 点的 x 位置由该特征的 SHAP 值确定,点沿着每个特征行“堆积”以显示密度。颜色用于显示特征的原始值。
    Adicione uma descrição da imagem
  • 由上图可得以下结论:
    • Sheel WeightO peso da casca ( ) é a característica mais importante em média , quanto maior o peso da casca, mais velho o caranguejo
    • Quanto mais leve for o peso sem casca ( Shucked Weight), mais velho pode ser. Pesado sem peso de casca quase mais jovem
    • LengthQuanto maior o comprimento ( ), menor a idade
    • Quanto menor o diâmetro ( Diameter), mais jovem é quase
    • Masculino ( Sex_M) e feminino ( Sex_F), mais velho que desconhecido ( Sex_I)

Acho que você gosta

Origin blog.csdn.net/qq_20144897/article/details/131613933
Recomendado
Clasificación