【发布时间】:2021-03-12 21:20:51
【问题描述】:
TypeError: Singleton array array(<__main__.azhu_emailclassifier_2> 处的对象,dtype=object) 不能被视为 有效的集合。
当我尝试在我的自定义 AZHU_EmailClassifier_2 类中运行 train_test_split 函数时收到此错误。
我的班级:
class AZHU_EmailClassifier_2:
import os
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
def __init__(self):
pass
def retrain_model(self, csv_file):
MIN_ROW_NUMBER = 500
TEST_SIZE = 0.25
RANDOM_STATE = 42
self.os.chdir(r"c:\LORI\PROJECTS\ALLIANZ\INCOMING_CHANNELS") # <---- a retraining file mappaja
df=self.pd.read_excel(csv_file,error_bad_lines=False, header=None)
df.dropna(axis=0,how='any', inplace=True)
rows_no=df.shape[0]
if rows_no<MIN_ROW_NUMBER:
print("Insufficient number of rows (<35.000)! RETRAINING ABORTED")
return None
X=df[0]
y=df[1]
X_train, X_test, y_train, y_test=self.train_test_split(X,y)
#X_train, X_test, y_train, y_test=self.train_test_split(X,y,test_size=TEST_SIZE, random_state=RANDOM_STATE, stratify=y)
return X_train
运行 train_test_split 函数时触发错误。
整个错误信息:
----------------------------------- ---------------------------- TypeError Traceback(最近一次调用 最后)在 1 个实例 = AZHU_EmailClassifier_2() 2 ----> 3 instance.retrain_model("retraining_dummy.xlsx")
在 retrain_model(self, csv_file) 28 岁=df[1] 29 ---> 30 X_train, X_test, y_train, y_test=self.train_test_split(X,y) 31 #X_train, X_test, y_train, y_test=self.train_test_split(X,y,test_size=TEST_SIZE, 随机状态=随机状态,分层=y) 32
~\Anaconda3\lib\site-packages\sklearn\model_selection_split.py 在 train_test_split(*arrays, **options) 2125 提高 TypeError("传递的参数无效:%s" % str(options)) 2126 -> 2127 个数组 = 可索引(*arrays)2128 2129 n_samples = _num_samples(arrays[0])
~\Anaconda3\lib\site-packages\sklearn\utils\validation.py 在 可索引(*可迭代) 第291章 292 结果 = [_make_indexable(X) for X in iterables] --> 293 check_consistent_length(*结果) 294 返回结果 295
~\Anaconda3\lib\site-packages\sklearn\utils\validation.py 在 check_consistent_length(*数组) 第251章 252 --> 253 个长度 = [_num_samples(X) for X in array if X is not None] 254 个唯一值 = np.unique(长度) 255 如果 len(uniques) > 1:
~\Anaconda3\lib\site-packages\sklearn\utils\validation.py 在 (.0) 第251章 252 --> 253 个长度 = [_num_samples(X) for X in array if X is not None] 254 个唯一值 = np.unique(长度) 255 如果 len(uniques) > 1:
~\Anaconda3\lib\site-packages\sklearn\utils\validation.py 在 _num_samples(x) 194 如果 hasattr(x, 'shape') 和 x.shape 不是无: 195 如果 len(x.shape) == 0: --> 196 raise TypeError("不能考虑单例数组%r" 197“一个有效的集合。” % X) 198 # 检查 shape 是否返回整数或默认为 len
TypeError: Singleton array array(main.AZHU_EmailClassifier_2 对象位于 0x000001D6E7A68F10>, dtype=object) 不能被视为有效集合。
我不知道它为什么会抛出这个错误。你能指出我正确的方向吗?任何帮助表示赞赏!
【问题讨论】: