Python 如何在sklearn.naive_bayes中更正样本权重?

Python 如何在sklearn.naive_bayes中更正样本权重?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在使用不平衡数据通过sklearn实现朴素贝叶斯。 我的数据有超过16k条记录和6个输出类别 我试图用sklearn.utils.class\u weight计算的样本权重来拟合模型 样本重量如下所示: 样本重量=[11.77540107 1.82284768 0.64688602 2.47138047 0.38577435 1.21389195] 将numpy作为np导入 data\u set=np.loadtxt./data/\u vector21.csv,分隔符=, inp_vec=数

我正在使用不平衡数据通过sklearn实现朴素贝叶斯。 我的数据有超过16k条记录和6个输出类别

我试图用sklearn.utils.class\u weight计算的样本权重来拟合模型

样本重量如下所示:

样本重量=[11.77540107 1.82284768 0.64688602 2.47138047 0.38577435 1.21389195]

将numpy作为np导入 data\u set=np.loadtxt./data/\u vector21.csv,分隔符=, inp_vec=数据集[:,1:22] out\u vec=数据集[:,22:] 将数据集拆分为训练集和测试集 从sklearn.cross\u验证导入序列测试\u分割 X_列,X_测试,y_列,y_测试=列测试拆分输入向量,输出向量,测试大小=0.2 80%训练和20%测试 等级权重 从keras.utils.np\u utils导入到\u category 输出向量分类=到分类列车 从sklearn.utils导入类_重量 y_ints=[y.argmax代表输出向量中的y\u category] c_w=类权重。计算类权重“平衡”,np.uniquey\u整数,y\u整数 cw={} 对于sety_ints中的i: cw[i]=c_w[i] 创建一个高斯分类器 从sklearn.naiver_bayes导入* 模型=高斯B 使用训练集训练模型 印刷厂 型号:fitX_火车,y_火车,c_火车 预测测试数据集的响应 y_pred=model.predictX_测试 导入scikit学习度量模块以进行精度计算 从SKM学习导入度量 模型精度,分类器正确的频率是多少? 打印\n分类报告:\n,metrics.classification\u reporty\u test,y\u pred 打印精度:%.3f%%%metrics.accurity\u scorey\u test,y\u pred*100 我得到了这个信息: ValueError:找到样本数不一致的输入变量:[13212,6]

有谁能告诉我我做错了什么,怎样才能纠正它

非常感谢。

样品重量和等级重量是两个不同的东西

顾名思义:

样本权重将应用于数据中的单个样本行。因此,样品的长度和重量必须与X中的样品数量相匹配

类权重是为了使分类器对类给予更多的重视和关注。因此,类权重的长度必须与目标中的类数相匹配

您正在使用sklearn.utils.class_权重计算class_权重,而不是sample_权重,然后尝试将其传递给sample_权重。因此,尺寸不匹配错误

有关这两个权重如何在内部相互作用的更多了解,请参见以下问题:

样本重量和类别重量是两个不同的东西

顾名思义:

样本权重将应用于数据中的单个样本行。因此,样品的长度和重量必须与X中的样品数量相匹配

类权重是为了使分类器对类给予更多的重视和关注。因此,类权重的长度必须与目标中的类数相匹配

您正在使用sklearn.utils.class_权重计算class_权重,而不是sample_权重,然后尝试将其传递给sample_权重。因此,尺寸不匹配错误

有关这两个权重如何在内部相互作用的更多了解,请参见以下问题:


通过这种方式,我能够计算权重来处理班级不平衡

从sklearn.utils导入类_重量 样本=类别重量。计算样本重量“平衡”,y列 分类器朴素贝叶斯 naive=naive_bayes.多项式nb 天真。fitX\u序列,y\u序列,样本重量=样本 预测=naive.predictX\u检验
通过这种方式,我能够计算权重来处理班级不平衡

从sklearn.utils导入类_重量 样本=类别重量。计算样本重量“平衡”,y列 分类器朴素贝叶斯 naive=naive_bayes.多项式nb 天真。fitX\u序列,y\u序列,样本重量=样本 预测=naive.predictX\u检验
谢谢,你的解释很清楚。我从计算类重量改为计算样本重量谢谢,你的解释很清楚。我从计算类重量改为计算样本重量