Что означает непоследовательное количество образцов? - PullRequest
0 голосов
/ 28 января 2019

Я использую логистическую регрессию Scikit, но продолжаю получать сообщение:

Found input variables with inconsistent numbers of samples: [90000, 5625]

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

import numpy as np
import pandas as pd
import matplotlib 
import matplotlib.pyplot as plt
from scipy import stats
from sklearn import datasets, linear_model
from sklearn.model_selection import train_test_split

dataset = pd.read_csv("/Users/An/Desktop/data/telco.csv", na_values = ' ') 
dataset = dataset.dropna(axis = 0)

dataset = dataset.replace({'Yes':1, 'Fiber optic': 1, 'DSL':1, 'No':0, 'No phone service':0, 'No internet service':0})
dataset = dataset.drop('Contract', axis  =1)
dataset = dataset.drop('PaymentMethod',axis  =1)
dataset = dataset.drop('customerID',axis  =1)
dataset = dataset.drop('gender',axis  =1)

for i in list(['tenure', 'MonthlyCharges', 'TotalCharges']):
    sd = np.std(dataset[i])
    mean = np.mean(dataset[i])
    dataset[i] = (dataset[i] - mean) / sd

total = pd.DataFrame(dataset)  
data_train, data_test = train_test_split(total, test_size=0.2)
data_train = data_train.values
data_test = data_test.values

from sklearn.linear_model import LogisticRegression

clf = LogisticRegression(C=1e9)
clf = clf.fit(data_train[:,0:16], data_train[:,16])
print clf.intercept_, clf.coef_

Может кто-нибудь объяснить, что означает сообщение об ошибке, и помочь мне выяснить, почему я его получаю?

1 Ответ

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

Во второй последней строке data_train.reshape(-1, 1) вызывает вашу проблему.Удаление reshape сделает вам одолжение.

Причина

LogisticRegression.fit ожидает, что x и y будут иметь одинаковые shape[0], но вы изменяете свой xот (n, m) до (n*m, 1).

Вот воспроизводимые формы:

import numpy as np

df = np.ndarray((2000,10))
x, y  = df[:, 2:9], df[:, 9]
x.shape, y.shape # << what you should give to `clf.fit`
# ((2000, 7), (2000, ))

x.reshape(-1, 1).shape, y.shape # << what you ARE giving to `clf.fit`,
# ((14000, 1), (2000,))         # << which is causing the problem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...