Как исправить 'ValueError: Найдены входные переменные с непоследовательным количеством выборок: [32979, 21602]'? - PullRequest
0 голосов
/ 06 июля 2019

Я делаю модель логистической регрессии для анализа настроений. Это проблема - ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602] Это происходит, когда я пытаюсь разбить свой набор данных на x и y train и действительные наборы.

# splitting data into training and validation set 
xtrain_bow, xvalid_bow, ytrain, yvalid = train_test_split(train_bow, train['label'], test_size=0.3, random_state=42)
lreg = LogisticRegression() # training the model 
lreg.fit(xtrain_bow, ytrain) 
prediction = lreg.predict_proba(xvalid_bow) # predicting on the validation set 
prediction_int = prediction[:,1] >= 0.3 # if prediction is greater than or equal to 0.3 than 1 else 0 
prediction_int = prediction_int.astype(np.int) 
f1_score(yvalid, prediction_int) # calculating f1 score for the validation set 

Я видел в некоторых сообщениях, что это может произойти из-за формы X и Y, поэтому распечатав формы набора данных, я разделил свой набор данных на 85% для обучения и отдыха для проверки / действительной цели.

# Extracting train and test BoW features
split_frac = 0.85

split_num = int(len(combi['tidy_tweet']) * split_frac)

train_bow = bow[:split_num,:] 
test_bow = bow[split_num:,:] 
print(train_bow.shape)
print(test_bow.shape)
print(train['label'].shape)

(32979, 1000)
(5820, 1000)
(21602,)

Также проблема в этой строке -

----> 1 xtrain_bow, xvalid_bow, ytrain, yvalid = train_test_split(train_bow, train['label'], test_size=0.3, random_state=42)
      2 lreg = LogisticRegression() # training the model
      3 lreg.fit(xtrain_bow, ytrain)

Теперь я не знаю, что на самом деле вызывает проблему? Ребята, пожалуйста, помогите? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Вы получаете ошибку выше, потому что длина второго параметра, то есть метки, в train_test_split() равна 21602, а длина первого параметра 32979, что не должно быть. Длина данных X и Y должна быть одинаковой. Итак, проверьте длину train_bow и train['label'].

Итак, просто измените

xtrain_bow, xvalid_bow, ytrain, yvalid = train_test_split(train_bow, train['label'], test_size=0.3, random_state=42) что-то вроде ниже:

xtrain_bow, xvalid_bow, ytrain, yvalid = train_test_split(bow[:split_num,:-1], bow[:split_num,-1], test_size=0.3, random_state=42)

(Предполагается, что bow содержит как элементы, так и метки, метки являются последним столбцом).

Подробнее sklearn.model_selection.train_test_split от здесь .

0 голосов
/ 06 июля 2019

Если вы можете закомментировать f1_score и попробовать, это не должно дать вам этой ошибки.Дайте мне знать, если это работает, спасибо

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