如何处理离散型变量

您所在的位置:网站首页 pandas离散化 如何处理离散型变量

如何处理离散型变量

2023-04-06 23:59| 来源: 网络整理| 查看: 265

如何处理离散型变量

你好,这篇文章咱们讨论一下关于「如何处理离散型变量」的事情…

处理离散型变量

在统计和机器学习中,数据集通常包含数值和分类变量。 数值变量取数值,而分类变量取一组可能的值。分类变量也称为离散变量,因为它们是有限的和不连续的。这些值可能是数字,也可能是文字,但通常它们不具有数值性质。在处理这些变量时,需要考虑它们的性质和使用适当的技术来获取有关数据集的有用信息。

离散型变量的类型

离散型变量可以分为两类:有序离散型变量和无序离散型变量。

有序离散型变量

有序离散型变量是指变量的值需要按一定的顺序排列。例如,考虑一组评级数据,如1星,2星,3星,4星,5星。在这种情况下,这些评级的值需要按照从低到高或从高到低的方式排列。

在这种情况下,需要将这些值映射到数字。例如,在上述评级数据中,可以将1星映射为1,2星映射为2,以此类推。这样,就可以将有序离散型变量处理为数值变量,并使用适当的统计分析方法。

无序离散型变量

无序离散型变量是指变量的值没有一定的顺序或顺序不重要。例如,考虑一组颜色数据,如红色,蓝色,绿色,黄色。在这种情况下,这些颜色的值没有特定的顺序,因为它们是各不相同的颜色。

在这种情况下,需要使用虚拟变量或二元变量将这些变量转换为数值。这就意味着需要创建多个新的变量,每个变量对应于原始变量的每个可能值。例如,在上述颜色数据中,可以创建四个新的变量,每个变量代表一个值是否为红色,蓝色,绿色或黄色。这些二元变量可以将无序离散型变量转换为数值,以便使用适当的统计分析方法。

处理离散型变量的技术

离散型变量的处理需要特殊的统计分析方法。以下是处理离散型变量的一些常见技术。

频率分析

频率分析是用于发现离散型变量值的分数的一种方法。 频率分析计算每个变量值的出现次数,并将其表示为一个分数。例如,考虑一组颜色数据,如红色,蓝色,绿色和黄色。频率分析将计算每种颜色值的出现次数,并将其表示为一个分数,如下所示:

| 颜色 | 频率 || — | — || 红色 | 10 || 蓝色 | 5 || 绿色 | 8 || 黄色 | 2 |

表明红色的出现次数最多,绿色次之,蓝色再其次,黄色最少。

使用频率分析,可以确定每个离散型变量值的出现频率,并更好地了解离散型变量的分布。

交叉分析

交叉分析是用于比较两个或多个变量的一种方法。 交叉分析将多个变量组合在一起,并计算每个组合值的频率。例如,考虑一组数据集,包含性别,年龄和收入。使用交叉分析,可以比较不同性别,年龄和收入组合的频率。例如,可以计算女性,20-30岁和收入10,000美元-20,000美元的频率。这可以提供更详细的知识,并有助于识别任何特定变量之间的关系。

卡方检验

卡方检验是一种用于计算两个分类变量之间的关联性的方法。卡方检验计算每个组合值的期望频率和实际频率,并比较它们是否一致。分析得到的p值,检查它是否足以证明两个变量之间的关系是否具有统计显著性。

方差分析

方差分析用于比较两个或多个组之间的平均值的差异。 方差分析假定数据集既包含数值型变量也包含分类变量。分类变量可用于标识潜在的每个值的组,而数值变量包含有关每组值的信息。方差分析计算每个组的平均值,并确定它们是否显着不同。使用方差分析,可以比较不同变量值的统计显著性。

离散型变量的应用

处理离散变量是数据科学的重要组成部分,可以帮助开发人员更好地了解数据的结构和分布。离散型变量处理技术可以应用于以下几个领域:

金融

处理离散变量对于金融领域非常有用。离散变量可以定义为已知的安全特征,例如,是否有利于某个人获得贷款。通过处理离散变量,可以预测银行客户能否支付贷款或违约的可能性。

市场研究

在市场研究中,离散变量可以用于比较两个或多个市场产品的销售情况。离散变量可以帮助活动策划人员了解客户对不同产品的需求。

社会学

社会学研究中,离散变量可以用于衡量和比较不同民族,持不同政治观点,信仰不同宗教的人群.这可以寻找他们之间的共同点和关系,帮助我们更好地了解这些人的性质与所处环境。

总结

离散型变量的处理包括频率分析,交叉分析,方差分析和卡方检验等技术。处理离散变量对于数据科学和机器学习特别重要,可以帮助了解数据的结构和分布,有助于开发人员创造更准确的模型。离散型变量处理技术可以应用于多个领域,如金融,市场研究和社会学等。

对于处理离散型变量,应用适当的技术和方法很重要。不同的离散型变量需要使用不同的技术。在进行离散型变量数据处理的过程中,需要仔细了解数据集的性质,并选择适当的处理技术,这样可以更好地分析数据并得出准确的结论。

大家都在看: (情感倾向分类)2分类文本任务,Bert微调详细教程

🎀

Dataset:SST-2

Model:bert-base-cased

transformers库的使用【三】对预训练模型进行微调

Transformers实战——使用Trainer类训练和评估自己的数据和模型

HuggingFace

从在线库中载入SST2数据集

from datasets import load_dataset dataset = load_dataset('glue','sst2')

如何处理离散型变量

Tokenizer:将input转换为模型可以处理的格式。

from_pretrained方法让你快速加载任何架构的预训练模型,这样你就不必投入时间和资源从头开始训练一个模型。

from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") def tokenize_function(examples): return tokenizer(examples["sentence"], padding="max_length", truncation=True) tokenized_datasets = dataset.map(tokenize_function, batched=True)

如何处理离散型变量

tokenized_datasets删除其中的sentence列,idx列;然后把label列,列名改为labels。这都是按照bert模型需要的处理的。

tokenized_datasets = tokenized_datasets.remove_columns(["sentence","idx"]) tokenized_datasets = tokenized_datasets.rename_column("label", "labels") tokenized_datasets.set_format("torch")

如何处理离散型变量

取子集,训练集取1000个,测试集取200个,充分打散。

small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000)) small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(200))

如何处理离散型变量

如何处理离散型变量

把数据集装入DataLoader

from torch.utils.data import DataLoader train_dataloader = DataLoader(small_train_dataset, shuffle=True, batch_size=1) eval_dataloader = DataLoader(small_eval_dataset, batch_size=1)

载入预训练好的序列分类模型

from transformers import AutoModelForSequenceClassification model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=2)

如何处理离散型变量

在初始化BertForSequenceClassification时,没有使用bert-base-cased的模型检查点的一些权重。[‘cls.predictions.transform.dense.weight’, ‘cls.seq_relationship.bias’, ‘cls.predictions.bias’, ‘cls.predictions.transform.dense.bias’, ‘cls.predictions.decoder.weight’, ‘cls.seq_relationship.weight’, ‘cls.predictions.transform.LayerNorm.bias’,’ cls.predictions.transform.LayerNorm.weight’ ]

如果你从另一个任务或另一个架构上训练的模型的检查点初始化 BertForSequenceClassification,这是预期的(例如,从 BertForPreTraining 模型初始化 BertForSequenceClassification 模型)。

如果你从一个你期望完全相同的模型的检查点初始化BertForSequenceClassification(从一个BertForSequenceClassification模型初始化一个BertForSequenceClassification模型),这是不可能的。

BertForSequenceClassification的一些权重没有从bert-base-cased的模型检查点初始化,而是被新初始化。[‘分类器.权重’, ‘分类器.偏置’]

您可能应该在下游任务中训练此模型,以便您可以将其用于预测和推理。

[En]

You should probably train this model on a downstream task so that you can use it for prediction and reasoning.

载入预训练好的训练参数

from transformers import TrainingArguments training_args = TrainingArguments( output_dir="test_trainer", per_device_train_batch_size=1, # batch size per device during training per_device_eval_batch_size=1, # batch size for evaluation )

这个时候如果实例化一个Trainer

from transformers import Trainer trainer = Trainer( model = model, args = training_args, train_dataset= small_train_dataset, eval_dataset=small_eval_dataset )

然后训练(因为用了预训练的参数和模型,所以这叫微调)

训练模型使用trainer对象的train方法

trainer.train()

如何处理离散型变量

load_metric的作用是使模型能在训练期间进行模型评估。该函数接收”预测的标签”和”真实的标签”。

import numpy as np from datasets import load_metric metric = load_metric("accuracy") def compute_metric(eval_pred): logits,labels = eval_pred predictions = np.argmax(logits,axis=-1) return metric.compute(predictions = predictions,references = labels)

评估模型

评估模型使用trainer对象的evaluate方法

trainer = Trainer( model = model, args = training_args, train_dataset= small_train_dataset, eval_dataset=small_eval_dataset, compute_metrics = compute_metric, ) trainer.evaluate()

如何处理离散型变量

Original: https://blog.csdn.net/zoe9698/article/details/124579973Author: zoe9698Title: (情感倾向分类)2分类文本任务,Bert微调详细教程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/445378/

转载文章受原作者版权保护。转载请注明原作者出处!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3