使用 sklearn 数组问题的线性回归



只是尝试根据以下示例设置一个简单的线性回归测试。

这是我的代码:

# Normalize customer data
x_array = np.array(CustomerRFM['recency'])
normalized_X = preprocessing.normalize([x_array])
y_array = np.array(CustomerRFM['monetary_value'])
normalized_Y = preprocessing.normalize([y_array])
print('normalized_X: ' + str(np.count_nonzero(normalized_X)))
print('normalized_Y: ' + str(np.count_nonzero(normalized_Y)))
X_train, X_test = train_test_split(normalized_X, test_size=0.2)
Y_train, Y_test = train_test_split(normalized_Y, test_size=0.2)
print('X_train: ' + str(np.count_nonzero(X_train)))
print('Y_train: ' + str(np.count_nonzero(Y_train)))
regr = LinearRegression()
regr.fit(X_train, Y_train)

我添加了四行print(),因为我遇到了一个奇怪的问题。 这四行的控制台打印是:

normalized_X: 4304
normalized_Y: 4338
X_train: 0
Y_train: 0

出于某种原因,当我在训练数据和测试数据之间拆分数据时,我没有得到任何值?

我在regr.fit()行上收到以下错误:

值错误:找到具有 0 个样本的数组(形状=(0, 4339)),而 至少需要 1 个。

这告诉我 X 值有问题,但我不知道是什么

更新:更改为打印(数组.形状)

如果我将代码更改为使用

print('normalized_X: ' + str(normalized_X.shape))
print('normalized_Y: ' + str(normalized_Y.shape))

而这个:

print('X_train: ' + str(X_train.shape))
print('Y_train: ' + str(Y_train.shape))

我得到:

normalized_X: (1, 4339)
normalized_Y: (1, 4339)

而这个:

X_train: (0, 4339)
Y_train: (0, 4339)

看起来您preprocessing.normalize使用不正确。通过将[x_array]括在方括号中,您将创建一个形状(1, 4339)数组。

根据文档,preprocessing.normalize期待一系列形状[n_samples, n_features]。在您的示例中,n_samples是 1,n_features是 4339,我认为这不是您想要的!然后,您要求train_test_split拆分一个样本的数据集,因此可以理解地返回一个空数组。

相关内容

  • 没有找到相关文章

最新更新