Ошибка значения «»установка элемента массива с последовательностью», параметр группового лассо

#python #regression #data-analysis #valueerror #lasso-regression

#python #регрессия #анализ данных #ошибка значения #лассо-регрессия

Вопрос:

Я выполняю некоторые методы регуляризации в наборе данных общего доступа к байкам UCI. Я хотел бы реализовать современную технику регуляризации группового лассо для оценки моей модели. Однако я столкнулся с проблемой. Вот фрагмент кода, который вы, ребята, должны понять. Моя модель разделена на обучение и тестирование и имеет одинаковое количество элементов, поскольку я пока не собираюсь писать резюме.

 standard_data1.columns
Index(['January', 'February', 'March', 'April', 'May', 'June', 'July',
       'August', 'September', 'October', 'November', 'December', 'Monday',
       'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday',
       'clear', 'light_rain/snow', 'heavy_rain/snow', 'atemp', 'hum',
       'windspeed', 'cnt'],
      dtype='object')
 
 X_train1,X_test1,y_train1,y_test1=train_test_split(standard_data1.drop(['cnt'],axis=1),standard_data1['cnt'],test_size=0.25,random_state=42)
 
 lambda1 = [0.001, 0.01, 0.1, 1, 10]
group_index = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6])
group_lasso_model = asgl.ASGL(model='lm', penalization='gl',lambda1=lambda1)
group_lasso_model.fit(x=X_train1, y=y_train1, group_index=group_index)
 

Вот ошибка, которую я получаю, у кого-нибудь есть простое решение, ошибка кажется легко pythonic, но я не уверен.

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-128-fd9c54078bdf> in <module>
      2 group_index = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6])
      3 group_lasso_model = asgl.ASGL(model='lm', penalization='gl',lambda1=lambda1)
----> 4 group_lasso_model.fit(x=X_train1, y=y_train1, group_index=group_index)

~/anaconda3/lib/python3.7/site-packages/asgl/asgl.py in fit(self, x, y, group_index)
    754                 else:
    755                     self.coef_ = getattr(self, self._get_solver_names())(x=x, y=y, param=param,
--> 756                                                                          group_index=group_index)
    757             else:
    758                 self.coef_ = self._parallel_execution(x=x, y=y, param=param, group_index=group_index)

~/anaconda3/lib/python3.7/site-packages/asgl/asgl.py in gl(self, x, y, group_index, param)
    372             group_lasso_penalization  = cvxpy.sqrt(group_sizes[i]) * cvxpy.norm(beta_var[i], 2)
    373         if self.model == 'lm':
--> 374             objective_function = (1.0 / n) * cvxpy.sum_squares(y - model_prediction)
    375         else:
    376             objective_function = (1.0 / n) * cvxpy.sum(self._quantile_function(x=(y - model_prediction)))

~/anaconda3/lib/python3.7/site-packages/cvxpy/atoms/sum_squares.py in sum_squares(expr)
     31         An expression representing the sum of squares.
     32     """
---> 33     return quad_over_lin(expr, 1)

~/anaconda3/lib/python3.7/site-packages/cvxpy/atoms/quad_over_lin.py in __init__(self, x, y)
     28 
     29     def __init__(self, x, y):
---> 30         super(quad_over_lin, self).__init__(x, y)
     31 
     32     @Atom.numpy_numeric

~/anaconda3/lib/python3.7/site-packages/cvxpy/atoms/atom.py in __init__(self, *args)
     42             )
     43         # Convert raw values to Constants.
---> 44         self.args = [Atom.cast_to_const(arg) for arg in args]
     45         self.validate_arguments()
     46         self._shape = self.shape_from_args()

~/anaconda3/lib/python3.7/site-packages/cvxpy/atoms/atom.py in <listcomp>(.0)
     42             )
     43         # Convert raw values to Constants.
---> 44         self.args = [Atom.cast_to_const(arg) for arg in args]
     45         self.validate_arguments()
     46         self._shape = self.shape_from_args()

~/anaconda3/lib/python3.7/site-packages/cvxpy/expressions/expression.py in cast_to_const(expr)
    465                         "Combine Expressions using atoms such as bmat, hstack, and vstack."
    466                     )
--> 467         return expr if isinstance(expr, Expression) else cvxtypes.constant()(expr)
    468 
    469     @staticmethod

~/anaconda3/lib/python3.7/site-packages/cvxpy/expressions/constants/constant.py in __init__(self, value)
     43             self._sparse = True
     44         else:
---> 45             self._value = intf.DEFAULT_INTF.const_to_matrix(value)
     46             self._sparse = False
     47         self._imag = None

~/anaconda3/lib/python3.7/site-packages/cvxpy/interface/numpy_interface/ndarray_interface.py in const_to_matrix(self, value, convert_scalars)
     48             return result
     49         else:
---> 50             return result.astype(numpy.float64)
     51 
     52     # Return an identity matrix.

ValueError: setting an array element with a sequence.
 

Вот github, за которым я следил:
https://github.com/alvaromc317/asgl/blob/master/user_guide .ipynb

Комментарии:

1. трудно сказать. я не могу воспроизвести вашу ошибку с набором данных boston. Имеет ли ваш standard_data1 какую-то странную структуру

2. standard_data1 — это просто стандартизированная версия фрейма данных pandas, в конце концов я заставил его работать, однако мне пришлось перевести его в numpy с помощью to_numpy() . Чего я не собирался делать, потому что я не хотел терять связь своих столбцов с их метками.