【问题标题】:Linear regression using sklearn array issue使用 sklearn 数组问题的线性回归
【发布时间】:2019-01-02 03:04:48
【问题描述】:

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

这是我的代码:

# 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() 行收到以下错误:

ValueError: 找到包含 0 个样本的数组 (shape=(0, 4339)) 而一个 至少需要 1 个。

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

更新:更改为 print(array.shape)

如果我将代码更改为使用

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)

【问题讨论】:

  • 在计算非零值之前,您是否只是 print (X_train)print (Y_train) 看看里面有什么
  • @Bazingaa - 看起来像他们的两个空数组。
  • print(np.count_nonzero(array))更有帮助的是print(array.shape)count_nonzero 将展平尺寸并忽略零值 - 这里的两个功能会适得其反。形状是许多棘手的令人兴奋的事情发生的地方
  • 但我不明白为什么归一化的 X 和 Y 都有数据
  • X_train, X_test = train_test_split(np.transpose(normalized_X), test_size=0.2) Y_train, Y_test = train_test_split(np.transpose(normalized_Y,) test_size=0.2)

标签: python scikit-learn


【解决方案1】:

您似乎错误地使用了preprocessing.normalize。通过将[x_array] 包裹在方括号中,您将创建一个形状为(1, 4339) 的数组。

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

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2018-05-16
    • 2020-08-06
    • 2014-05-05
    • 2020-12-24
    • 2021-07-04
    • 2021-11-20
    • 2021-02-20
    • 2015-01-29
    相关资源
    最近更新 更多