В приложении Flask происходит сбой теста склеарна, но не с теми же данными в ноутбуке Jupyter - PullRequest
0 голосов
/ 17 февраля 2019

Это меня сильно смущает.У меня есть одинаковые данные как в приложении Flask, так и в записной книжке Jupyter, и мне нужно, чтобы приложение Flask работало идентично с записной книжкой Jupyter.

Данные - это просто набор данных Iris, поэтому они имеют вид:

array([[ 5.1,  3.5,  1.4,  0.2],
   [ 4.9,  3. ,  1.4,  0.2],
   [ 4.7,  3.2,  1.3,  0.2],
   [ 4.6,  3.1,  1.5,  0.2],
   [ 5. ,  3.6,  1.4,  0.2],
   [ 5.4,  3.9,  1.7,  0.4],
   [ 4.6,  3.4,  1.4,  0.3],
   [ 5. ,  3.4,  1.5,  0.2],
   [ 4.4,  2.9,  1.4,  0.2],
   [ 4.9,  3.1,  1.5,  0.1],
   [ 5.4,  3.7,  1.5,  0.2],
   [ 4.8,  3.4,  1.6,  0.2],
   [ 4.8,  3. ,  1.4,  0.1],
   [ 4.3,  3. ,  1.1,  0.1],
   [ 5.8,  4. ,  1.2,  0.2],
   [ 5.7,  4.4,  1.5,  0.4],
   [ 5.4,  3.9,  1.3,  0.4],
   [ 5.1,  3.5,  1.4,  0.3],
   [ 5.7,  3.8,  1.7,  0.3],
   [ 5.1,  3.8,  1.5,  0.3],
   [ 5.4,  3.4,  1.7,  0.2],
   [ 5.1,  3.7,  1.5,  0.4],
   [ 4.6,  3.6,  1. ,  0.2],
   [ 5.1,  3.3,  1.7,  0.5],
   [ 4.8,  3.4,  1.9,  0.2],
   [ 5. ,  3. ,  1.6,  0.2],
   [ 5. ,  3.4,  1.6,  0.4],
   [ 5.2,  3.5,  1.5,  0.2],
   [ 5.2,  3.4,  1.4,  0.2],
   [ 4.7,  3.2,  1.6,  0.2],
   [ 4.8,  3.1,  1.6,  0.2],
   [ 5.4,  3.4,  1.5,  0.4],
   [ 5.2,  4.1,  1.5,  0.1],
   [ 5.5,  4.2,  1.4,  0.2],
   [ 4.9,  3.1,  1.5,  0.1],
   [ 5. ,  3.2,  1.2,  0.2],
   [ 5.5,  3.5,  1.3,  0.2],
   [ 4.9,  3.1,  1.5,  0.1],
   [ 4.4,  3. ,  1.3,  0.2],
   [ 5.1,  3.4,  1.5,  0.2],
   [ 5. ,  3.5,  1.3,  0.3],
   [ 4.5,  2.3,  1.3,  0.3],
   [ 4.4,  3.2,  1.3,  0.2],
   [ 5. ,  3.5,  1.6,  0.6],
   [ 5.1,  3.8,  1.9,  0.4],
   [ 4.8,  3. ,  1.4,  0.3],
   [ 5.1,  3.8,  1.6,  0.2],
   [ 4.6,  3.2,  1.4,  0.2],
   [ 5.3,  3.7,  1.5,  0.2],
   [ 5. ,  3.3,  1.4,  0.2],
   [ 7. ,  3.2,  4.7,  1.4],
   [ 6.4,  3.2,  4.5,  1.5],
   [ 6.9,  3.1,  4.9,  1.5],
   [ 5.5,  2.3,  4. ,  1.3],
   [ 6.5,  2.8,  4.6,  1.5],
   [ 5.7,  2.8,  4.5,  1.3],
   [ 6.3,  3.3,  4.7,  1.6],
   [ 4.9,  2.4,  3.3,  1. ],
   [ 6.6,  2.9,  4.6,  1.3],
   [ 5.2,  2.7,  3.9,  1.4],
   [ 5. ,  2. ,  3.5,  1. ],
   [ 5.9,  3. ,  4.2,  1.5],
   [ 6. ,  2.2,  4. ,  1. ],
   [ 6.1,  2.9,  4.7,  1.4],
   [ 5.6,  2.9,  3.6,  1.3],
   [ 6.7,  3.1,  4.4,  1.4],
   [ 5.6,  3. ,  4.5,  1.5],
   [ 5.8,  2.7,  4.1,  1. ],
   [ 6.2,  2.2,  4.5,  1.5],
   [ 5.6,  2.5,  3.9,  1.1],
   [ 5.9,  3.2,  4.8,  1.8],
   [ 6.1,  2.8,  4. ,  1.3],
   [ 6.3,  2.5,  4.9,  1.5],
   [ 6.1,  2.8,  4.7,  1.2],
   [ 6.4,  2.9,  4.3,  1.3],
   [ 6.6,  3. ,  4.4,  1.4],
   [ 6.8,  2.8,  4.8,  1.4],
   [ 6.7,  3. ,  5. ,  1.7],
   [ 6. ,  2.9,  4.5,  1.5],
   [ 5.7,  2.6,  3.5,  1. ],
   [ 5.5,  2.4,  3.8,  1.1],
   [ 5.5,  2.4,  3.7,  1. ],
   [ 5.8,  2.7,  3.9,  1.2],
   [ 6. ,  2.7,  5.1,  1.6],
   [ 5.4,  3. ,  4.5,  1.5],
   [ 6. ,  3.4,  4.5,  1.6],
   [ 6.7,  3.1,  4.7,  1.5],
   [ 6.3,  2.3,  4.4,  1.3],
   [ 5.6,  3. ,  4.1,  1.3],
   [ 5.5,  2.5,  4. ,  1.3],
   [ 5.5,  2.6,  4.4,  1.2],
   [ 6.1,  3. ,  4.6,  1.4],
   [ 5.8,  2.6,  4. ,  1.2],
   [ 5. ,  2.3,  3.3,  1. ],
   [ 5.6,  2.7,  4.2,  1.3],
   [ 5.7,  3. ,  4.2,  1.2],
   [ 5.7,  2.9,  4.2,  1.3],
   [ 6.2,  2.9,  4.3,  1.3],
   [ 5.1,  2.5,  3. ,  1.1],
   [ 5.7,  2.8,  4.1,  1.3],
   [ 6.3,  3.3,  6. ,  2.5],
   [ 5.8,  2.7,  5.1,  1.9],
   [ 7.1,  3. ,  5.9,  2.1],
   [ 6.3,  2.9,  5.6,  1.8],
   [ 6.5,  3. ,  5.8,  2.2],
   [ 7.6,  3. ,  6.6,  2.1],
   [ 4.9,  2.5,  4.5,  1.7],
   [ 7.3,  2.9,  6.3,  1.8],
   [ 6.7,  2.5,  5.8,  1.8],
   [ 7.2,  3.6,  6.1,  2.5],
   [ 6.5,  3.2,  5.1,  2. ],
   [ 6.4,  2.7,  5.3,  1.9],
   [ 6.8,  3. ,  5.5,  2.1],
   [ 5.7,  2.5,  5. ,  2. ],
   [ 5.8,  2.8,  5.1,  2.4],
   [ 6.4,  3.2,  5.3,  2.3],
   [ 6.5,  3. ,  5.5,  1.8],
   [ 7.7,  3.8,  6.7,  2.2],
   [ 7.7,  2.6,  6.9,  2.3],
   [ 6. ,  2.2,  5. ,  1.5],
   [ 6.9,  3.2,  5.7,  2.3],
   [ 5.6,  2.8,  4.9,  2. ],
   [ 7.7,  2.8,  6.7,  2. ],
   [ 6.3,  2.7,  4.9,  1.8],
   [ 6.7,  3.3,  5.7,  2.1],
   [ 7.2,  3.2,  6. ,  1.8],
   [ 6.2,  2.8,  4.8,  1.8],
   [ 6.1,  3. ,  4.9,  1.8],
   [ 6.4,  2.8,  5.6,  2.1],
   [ 7.2,  3. ,  5.8,  1.6],
   [ 7.4,  2.8,  6.1,  1.9],
   [ 7.9,  3.8,  6.4,  2. ],
   [ 6.4,  2.8,  5.6,  2.2],
   [ 6.3,  2.8,  5.1,  1.5],
   [ 6.1,  2.6,  5.6,  1.4],
   [ 7.7,  3. ,  6.1,  2.3],
   [ 6.3,  3.4,  5.6,  2.4],
   [ 6.4,  3.1,  5.5,  1.8],
   [ 6. ,  3. ,  4.8,  1.8],
   [ 6.9,  3.1,  5.4,  2.1],
   [ 6.7,  3.1,  5.6,  2.4],
   [ 6.9,  3.1,  5.1,  2.3],
   [ 5.8,  2.7,  5.1,  1.9],
   [ 6.8,  3.2,  5.9,  2.3],
   [ 6.7,  3.3,  5.7,  2.5],
   [ 6.7,  3. ,  5.2,  2.3],
   [ 6.3,  2.5,  5. ,  1.9],
   [ 6.5,  3. ,  5.2,  2. ],
   [ 6.2,  3.4,  5.4,  2.3],
   [ 5.9,  3. ,  5.1,  1.8]])

в то время как функции:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

И я получаю это взамен, когда запускаю sklearn's train_test_split в приложении Flask - ValueError: Найдены входные переменные с непоследовательным количеством выборок: [150, 2].

Это кажется невозможным - как одни и те же данные могут иметь правильную форму в одном месте и неправильную в другом месте?

Возможно, в последних версиях sklearn произошли серьезные изменения?- Я использую scikit-learn[alldeps]==0.20 в приложении Flask, это сборка с какими-либо известными проблемами?Как мне обойти это?Что еще мне здесь не хватает?

Код в записной книжке Jupyter:

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.33, random_state=66)

Код в приложении Flask:

class DataSet:
    def __init__(self, dataset, classifiers):
        self.data = dataset.drop(classifiers, axis=1).values
        self.target = dataset[classifiers]
        self.features = pd.factorize(self.target.values.ravel())

...
df = DataSet(dataset, classifiers)
X_train, X_test, y_train, y_test = train_test_split(df.data, df.features, test_size=0.33, random_state=66)`

Я не сразу добавил это, потому что выходные данные df.features и iris.target, df.data и iris.data точно такие же, но я полагаю, что я должен добавить это в случае, если есть что-то еще не так, вызывающее проблему, которую я могуне вижу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...