使用稀疏矩阵中的 GBC 构建模型时获取具有序列错误的数组元素
Posted
技术标签:
【中文标题】使用稀疏矩阵中的 GBC 构建模型时获取具有序列错误的数组元素【英文标题】:Getting array element with a sequence error while building model using GBC from sparse matrix 【发布时间】:2018-04-12 18:19:53 【问题描述】:我在从稀疏矩阵数据帧构建分类器模型时遇到错误。
错误
C:\Users\AshokEapen\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
380 force_all_finite)
381 else:
--> 382 array = np.array(array, dtype=dtype, order=order, copy=copy)
383
384 if ensure_2d:
ValueError: setting an array element with a sequence.
我的代码
cv = CountVectorizer( max_features = 5000,analyzer='word')
tf = cv.fit_transform(data.pop('Clean_addr'))
for i, col in enumerate(cv.get_feature_names()):
data[col] = pd.SparseSeries(tf[:, i].toarray().ravel(), fill_value=0)
train = data.drop(['Stop_Type','Co_Name','Cust_ID','Phone','Shpr_ID','Resi_Cnt','Buz_Cnt','Nearby_Cnt','parseNumber','removeString','Qty','bins','Co_Name_Flag'], axis=1)
Y = data['Resi']
gbc = GradientBoostingClassifier(max_depth = 7, n_estimators=1500, min_samples_leaf=10)
print('Training GBC')
#fit classifier, look for best
gbc.fit(X_train, y_train)
我该如何解决这个问题? 请在火车的拆分数据框下方找到 X_train
Lat Lng Weight Resi_Ratio Resi_Area Product categorizeNumber ResiR bins_qty ab ... yi yin ying yip yiu yu yue yuen yuet yuk
49291 22.334624 114.195812 0.23 1.000000 U IE Mobile 0.67646 1 0 ... 0 0 0 0 0 0 0 0 0 0
43012 22.373704 114.106212 0.50 0.014925 N IP undefined 0.162105 1 0 ... 0 0 0 0 0 0 0 0 0 0
3237 22.268394 114.129232 1.55 0.050000 N IP Landline 0.105263 1 0 ... 0 0 0 0 0 0 0 0 0 0
52313 22.339494 114.148902 0.30 0.011538 N IP undefined 0 1 0 ... 0 0 0 0 0 0 0 0 0 0
Y_train
Out[37]:
4987 N
47455 N
31422 N
44714 N
56879 N
26408 N
43667 N
18978 N
39741 N
20614 Y
6660 N
35500 N
57861 N
12971 N
35515 N
41007 N
58319 Y
51216 N
5292 N
26321 Y
12624 N
21936 N
29168 Y
更新了 X_train 和 Y_train
【问题讨论】:
【参考方案1】:首先我假设您的意思是您的 X
数据是稀疏格式,而不是您的 y
。
如果您查看sklearn/utils/validation.py
中的源代码,您会发现您的错误是 if ... else 语句的 else 部分,该语句首先检查传递的数组是否稀疏(在这种情况下为 format ' coo'、'csr' 或 'csc')。
因此,您的 X
数据似乎不是其中一种格式。
【讨论】:
X_train 和 y_train 都是 pandas.core.series.Series 你能张贴一小段他们的样子吗? 在问题部分更新 您是否尝试过仅传递 X 和 y 的值(即作为数组)?以上是关于使用稀疏矩阵中的 GBC 构建模型时获取具有序列错误的数组元素的主要内容,如果未能解决你的问题,请参考以下文章