【问题标题】:How do I train the classifier with very large data set?如何用非常大的数据集训练分类器?
【发布时间】: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


【解决方案1】:

我发现了错误。 x 应该是用于预测的特征,y 应该是目标。因此,在这里我只为 x 分配了 1 个特征,并且无法仅基于 1 个特征进行预测。我将“平衡”和“持续时间”分配给 x 和目标,其响应位于另一列响应中。 这是使用的代码:

from sklearn.model_selection import train_test_split
feature_names= ['balance','duration']
x=banks[feature_names]
y=banks['response']

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)

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2019-06-06
    • 2016-07-03
    • 2015-03-13
    • 2021-11-23
    • 2019-06-28
    • 2012-08-14
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多