Как исправить «ValueError: Найдены входные переменные с непоследовательным количеством выборок: [10000, 60000]»? - PullRequest
0 голосов
/ 18 января 2019

У меня проблема с обучением моего кода с использованием Stochastic Gradient Descent и базы данных MNIST.

    from sklearn.datasets import fetch_mldata
    from sklearn.linear_model import SGDClassifier

    mnist = fetch_mldata('MNIST original')
    X, y = mnist["data"], mnist["target"]

    some_digit = X[36000]
    some_digit_image = some_digit.reshape(28, 28)

    X_train, X_train, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]


    y_train_5 = (y_train == 5)
    y_test_5 = (y_test == 5)

    sgd_clf = SGDClassifier(random_state=42)
    sgd_clf.fit(X_train, y_train_5)

Ошибка в конце процесса (на мой взгляд, последний стих кода плох):

  ValueError: Found input variables with inconsistent numbers of samples: [10000, 60000]

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Я бы предложил использовать стратифицированное разбиение между поездом и тестовым набором данных, потому что некоторые классы могут искажать представление в обучении.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
0 голосов
/ 18 января 2019

Это опечатка на вашей стороне, вы назначаете на X_train дважды:

X_train, X_train, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]

Правильный ответ будет:

X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]

КСТАТИ. fetch_mldata скоро будет устаревшим, лучше использовать:

from sklearn.datasets import fetch_openml
X, y = fetch_openml("mnist_784", version=1, return_X_y=True)
...