我从稀疏矩阵数据框构建分类器模型时出错。
错误
C:UsersAshokEapenAnaconda3libsite-packagessklearnutilsvalidation.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
首先,
我假设你的意思是你的X
数据是稀疏格式,而不是你的y
。
如果您查看sklearn/utils/validation.py
中的源代码,您会发现您的错误是 if ...首先检查传递的数组是否稀疏的 else 语句(在本例中为格式为"coo"、"csr"或"csc")。
因此,您的X
数据似乎不是这些格式之一。