gpt4 book ai didi

python - 如何修正 sklearn.naive_bayes 中的 sample_weight?

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:46 27 4
gpt4 key购买 nike

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

我尝试用 sklearn.utils.class_weight 计算的 sample_weight 来拟合模型

sample_weight 收到类似这样的内容:

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

import numpy as np

data_set = np.loadtxt("./data/_vector21.csv", delimiter=",")

inp_vec = data_set[:, 1:22]
out_vec = data_set[:, 22:]
#
# # Split dataset into training set and test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(inp_vec, out_vec, test_size=0.2) # 80% training and 20% test
#
# class weight
from keras.utils.np_utils import to_categorical
output_vec_categorical = to_categorical(y_train)
from sklearn.utils import class_weight
y_ints = [y.argmax() for y in output_vec_categorical]
c_w = class_weight.compute_class_weight('balanced', np.unique(y_ints), y_ints)
cw = {}
for i in set(y_ints):
cw[i] = c_w[i]

# Create a Gaussian Classifier
from sklearn.naive_bayes import *
model = GaussianNB()

# Train the model using the training sets
print(c_w)

model.fit(X_train, y_train, c_w)

# Predict the response for test dataset
y_pred = model.predict(X_test)

# Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

# Model Accuracy, how often is the classifier correct?
print("\nClassification Report: \n", (metrics.classification_report(y_test, y_pred)))
print("\nAccuracy: %.3f%%" % (metrics.accuracy_score(y_test, y_pred)*100))

我收到这条消息:ValueError:发现样本数量不一致的输入变量:[13212, 6]

谁能告诉我我做错了什么以及如何解决?

非常感谢。

最佳答案

sample_weightclass_weight 是两个不同的东西。

顾名思义:

  • sample_weight 将应用于单个样本(数据中的行)。因此 sample_weight 的长度必须与您的 X 中的样本数相匹配。

  • class_weight 是让分类器对类别给予更多的重视和关注。所以 class_weight 的长度必须与目标中的类数相匹配。

您正在使用 sklearn.utils.class_weight 计算 class_weight 而不是 sample_weight,但随后尝试将其传递给 样本权重。因此出现尺寸不匹配错误。

请查看以下问题以进一步了解这两个权重如何在内部相互作用:

关于python - 如何修正 sklearn.naive_bayes 中的 sample_weight?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com