Как обучить классификатор с очень большим набором данных? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь обучить модель с помощью train_test_split (). Мне это удалось, но когда я пытаюсь использовать fit.transform (), это показывает ошибку. У меня есть файл CSV с 4521 наборами данных и 16 функциями.
Это код, который я использовал:

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

Итак, пожалуйста, помогите мне масштабировать данные для обучения модели

1 Ответ

0 голосов
/ 30 апреля 2020

Я нашел ошибку. Предполагается, что x - это функции, используемые для прогнозов, а y - цель. Следовательно, здесь я назначил только 1 признак для x, и невозможно предсказать, основываясь только на 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)
...