【发布时间】:2020-08-15 02:17:10
【问题描述】:
我正在尝试使用 train_test_split() 来训练模型。我成功了,但是当我尝试使用 fit.transform() 时,它显示错误。我有一个包含 4521 个数据集和 16 个特征的 CSV 文件。
这是我使用的代码:
from sklearn.model_selection import train_test_split
x=banks.balance
y=banks.duration
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
我不断收到错误:
----> 9 X_train = scaler.fit_transform(X_train)
错误提示:
Expected 2D array, got 1D array instead:
然后建议使用重塑功能。我也使用了 rehape 函数,但它不起作用,因为 x 变量变为 4521x1。 x 的值为:
0 1787
1 4789
2 1350
3 1476
4 0
5 747
6 307
7 147
8 221
9 -88
10 9374
11 264
12 1109
13 502
14 360
15 194
16 4073
17 2317
18 -221
19 132
20 0
21 16
22 106
23 93
24 543
25 5883
26 627
27 696
28 784
29 105
...
4491 0
4492 309
4493 0
4494 668
4495 1175
4496 363
4497 38
4498 1183
4499 942
4500 4196
4501 297
4502 -91
4503 362
4504 1080
4505 620
4506 -166
4507 288
4508 642
4509 2506
4510 566
4511 668
4512 1100
4513 322
4514 1205
4515 473
4516 -333
4517 -3313
4518 295
4519 1137
4520 1136
Name: balance, Length: 4521, dtype: int64
并且 y 具有以下值:
0 79
1 220
2 185
3 199
4 226
5 141
6 341
7 151
8 57
9 313
10 273
11 113
12 328
13 261
14 89
15 189
16 239
17 114
18 250
19 148
20 96
21 140
22 109
23 125
24 169
25 182
26 247
27 119
28 149
29 74
...
4491 169
4492 346
4493 205
4494 576
4495 1476
4496 171
4497 185
4498 676
4499 362
4500 193
4501 63
4502 43
4503 816
4504 951
4505 1234
4506 85
4507 306
4508 509
4509 210
4510 129
4511 1263
4512 660
4513 356
4514 45
4515 624
4516 329
4517 153
4518 151
4519 129
4520 345
Name: duration, Length: 4521, dtype: int64
所以,请帮我扩展数据以训练模型
【问题讨论】:
-
你能验证 X_train.shape == X_test.shape
-
有什么问题?你设置了
x=banks.balance,所以看起来你希望 X 是一维的? -
您的问题显然不是由于“非常大的数据集”;请相应地编辑和更新您的标题,因为它目前具有误导性
-
@Kenan no X_train.shape 不等于 X_test.shape
-
@NicolasGervais 我知道数据是一维的。那么有没有办法可以使用 fit.transform() 而不会出现任何错误?
标签: python machine-learning scikit-learn classification