将二维数组作为元素传递给sklearn.SVM

问题描述

我有一个自变量X,其中每个元素都是形状为(20,431)的二维数组。变量X本身是形状为numpy的二维(200,)数组。 。如何将其传递给sklearn.SVM对象?

编辑:实际数据框:

    Category              Features
0     1        [[-177.08171,-219.89174,-253.55954,-218.560...
1     0        [[-291.89288,-316.40735,-389.8398,-413.6302...
2     1        [[-355.88293,-351.0909,-364.43524,-400.7097.

Features的每个元素都是20 * 431 numpy数组。我需要使用这些功能对类别进行分类

x = data.iloc[:,1].values
y = data.iloc[:,0].values

x.shape
(200,)

x[0].shape
(20,431)

y.shape
(200,)

分解为训练数据和测试数据后拟合模型:

classifier = SVC(kernel = 'rbf',random_state=0)
classifier.fit(x_train,y_train)

错误

TypeError                                 Traceback (most recent call last)
TypeError: only size-1 arrays can be converted to Python scalars

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
<ipython-input-203-fdf0fc8db087> in <module>
----> 1 classifier.fit(x_train,y_train)

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\svm\_base.py in fit(self,X,y,sample_weight)
    160             X,y = self._validate_data(X,dtype=np.float64,161                                        order='C',accept_sparse='csr',--> 162                                        accept_large_sparse=False)
    163 
    164         y = self._validate_targets(y)

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\base.py in _validate_data(self,reset,validate_separately,**check_params)
    430                 y = check_array(y,**check_y_params)
    431             else:
--> 432                 X,y = check_X_y(X,**check_params)
    433             out = X,y
    434 

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\utils\validation.py in inner_f(*args,**kwargs)
     71                           FutureWarning)
     72         kwargs.update({k: arg for k,arg in zip(sig.parameters,args)})
---> 73         return f(**kwargs)
     74     return inner_f
     75 

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\utils\validation.py in check_X_y(X,accept_sparse,accept_large_sparse,dtype,order,copy,force_all_finite,ensure_2d,allow_nd,multi_output,ensure_min_samples,ensure_min_features,y_numeric,estimator)
    801                     ensure_min_samples=ensure_min_samples,802                     ensure_min_features=ensure_min_features,--> 803                     estimator=estimator)
    804     if multi_output:
    805         y = check_array(y,force_all_finite=True,~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\utils\validation.py in inner_f(*args,args)})
---> 73         return f(**kwargs)
     74     return inner_f
     75 

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\sklearn\utils\validation.py in check_array(array,estimator)
    597                     array = array.astype(dtype,casting="unsafe",copy=False)
    598                 else:
--> 599                     array = np.asarray(array,order=order,dtype=dtype)
    600             except ComplexWarning:
    601                 raise ValueError("Complex data not supported\n"

~\Anaconda3\envs\LangDetEnv1.0\lib\site-packages\numpy\core\_asarray.py in asarray(a,order)
     81 
     82     """
---> 83     return array(a,copy=False,order=order)
     84 
     85 

ValueError: setting an array element with a sequence.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)