Logisti c Регрессионные и разреженные матрицы -AttributeError: объект 'bool' не имеет атрибута 'any' - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь использовать регрессию logisti c с разреженными матрицами, потому что она может работать быстрее. Проблема в том, что я получаю ошибки и предупреждения, которые я не понимаю. Я покажу вам код. Я предупреждаю вас, я новичок в этом, поэтому, если вы можете определить любой ненужный-плохой мой код, скажите, пожалуйста.

Мой логин c следующий: (Я также приведу код, если письменный текст совсем не помогает) 1) Train_set и test_set все в одном наборе для одновременной предварительной обработки (заполнение пробелов, onehotencdoing et c) и для преобразования всего в разреженную форму 2) Затем, после предварительной обработки, мне нужно нарезать этот набор на 2 набора, один для поезда (для создания модели) и теста (который я хочу предсказать). 4) После нарезки я делаю обычное для моделирования и затем возникают проблемы.

Время показывать код:

# read csv
train_set = pd.read_csv('train.csv', sep=',', nrows=10000,  keep_default_na=True)
test_set = pd.read_csv('test.csv', sep=',', nrows=10000,  keep_default_na=True)
#all_set includes both train & read data
all_set = pd.concat([train_set, test_set], sort=False)
# Pass values of train_set to X
X = all_set[all_set.columns]
X = X.drop(['id', 'target'], axis=1)
# Pass target values to Y and convert it to a sparse matrix
Y = train_set['target']
Y = sparse.csr_matrix(Y)
Y = csr_matrix.transpose(Y)

(после предварительной обработки )

# Seperate data into Train and Test with preprocessing complete
# first I transform coo to csr (fro new_Train) because for coo slicing is unavailable
csr_Train = new_Train.tocsr()
final_train_set = csr_Train[0:len(train_set['target']), :]
final_test_set = csr_Train[len(train_set['target']):all_set.shape[0], :]

Y содержит мой целевой столбец, который будет использоваться для обучения, а final_train_set - мои данные о поезде

print("shape and type", final_train_set.shape, type(final_train_set))
print("shape and type", Y.shape, type(Y))

Результаты: (* редактировать: даже если бы оба были хорошими или оба были csr, я получил те же ошибки и предупреждения ) enter image description here

Видя ту же форму и все, все оптимистично c Я приступаю к моделированию .

X_train, X_test, y_train, y_test = train_test_split(final_train_set, Y, random_state=42, test_size=0.2)

lr = LogisticRegression(solver='lbfgs')

lr.fit(X_train, y_train)

Форма и тип одинаковы. И вот результаты ...

C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\utils\validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\utils\fixes.py:192: DeprecationWarning: elementwise comparison failed; this will raise an error in the future.
  return X != X
C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\utils\fixes.py:192: DeprecationWarning: elementwise comparison failed; this will raise an error in the future.
  return X != X
Traceback (most recent call last):
  File "C:/Users/kosta/PycharmProjects/cat_dat/Cat_Dat_v2.py", line 110, in <module>
    lr.fit(X_train, y_train)
  File "C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py", line 1532, in fit
    accept_large_sparse=solver != 'liblinear')
  File "C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 725, in check_X_y
    _assert_all_finite(y)
  File "C:\Users\kosta\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 59, in _assert_all_finite
    if _object_dtype_isnan(X).any():
AttributeError: 'bool' object has no attribute 'any'

Process finished with exit code 1

Если честно, я не понимаю, что не так (ни предупреждения, ни ошибки), и я не знаю, как поступить, кроме многих испытаний и исследуя net, что я делал часами. Так что любая помощь подойдет!

Заранее спасибо за потраченное время!

1 Ответ

0 голосов
/ 24 марта 2020

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

...