Я пытаюсь использовать регрессию 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, я получил те же ошибки и предупреждения )
Видя ту же форму и все, все оптимистично 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, что я делал часами. Так что любая помощь подойдет!
Заранее спасибо за потраченное время!