单例数组 array(<function train at 0x7f3a311320d0>, dtype=object) 不能被认为是一个有效的集合
Singleton array array(<function train at 0x7f3a311320d0>, dtype=object) cannot be considered a valid collection
不确定如何修复。非常感谢任何帮助。我看到了 但不确定我是否理解这个
train = df1.iloc[:,[4,6]]
target =df1.iloc[:,[0]]
def train(classifier, X, y):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
classifier.fit(X_train, y_train)
print ("Accuracy: %s" % classifier.score(X_test, y_test))
return classifier
trial1 = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', MultinomialNB()),])
train(trial1, train, target)
错误如下:
----> 6 train(trial1, train, target)
<ipython-input-140-ac0e8d32795e> in train(classifier, X, y)
1 def train(classifier, X, y):
----> 2 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
3
4 classifier.fit(X_train, y_train)
5 print ("Accuracy: %s" % classifier.score(X_test, y_test))
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_split.py in train_test_split(*arrays, **options)
1687 test_size = 0.25
1688
-> 1689 arrays = indexable(*arrays)
1690
1691 if stratify is not None:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in indexable(*iterables)
204 else:
205 result.append(np.array(X))
--> 206 check_consistent_length(*result)
207 return result
208
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
175 """
176
--> 177 lengths = [_num_samples(X) for X in arrays if X is not None]
178 uniques = np.unique(lengths)
179 if len(uniques) > 1:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in <listcomp>(.0)
175 """
176
--> 177 lengths = [_num_samples(X) for X in arrays if X is not None]
178 uniques = np.unique(lengths)
179 if len(uniques) > 1:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in _num_samples(x)
124 if len(x.shape) == 0:
125 raise TypeError("Singleton array %r cannot be considered"
--> 126 " a valid collection." % x)
127 return x.shape[0]
128 else:
TypeError: Singleton array array(<function train at 0x7f3a311320d0>, dtype=object) cannot be considered a valid collection.
____
不确定如何修复。非常感谢任何帮助。我看到了 但不确定我是否理解这个
出现此错误是因为您的函数 train
屏蔽了您的变量 train
,因此它被传递给了它自己。
说明:
你这样定义一个变量序列:
train = df1.iloc[:,[4,6]]
然后在几行之后,你定义一个这样的方法训练:
def train(classifier, X, y):
所以实际发生的是,您以前的 train
版本已更新为新版本。这意味着 train
现在不指向您想要的 Dataframe 对象,而是指向您定义的函数。在错误中它被清除。
array(<function train at 0x7f3a311320d0>, dtype=object)
查看错误语句中的函数train。
解决方法:
重命名其中之一(变量或方法)。
建议:将函数重命名为其他名称,例如 training
或 training_func
或类似名称。
我在另一个上下文中遇到了同样的错误 (sklearn train_test_split
),原因很简单,我传递了一个位置参数作为关键字参数,这导致被调用函数被误解。
第一个答案的变体 - 您可能得到此答案的另一个原因是,如果数据中的列名与包含数据的对象的 attribute/method 相同。
就我而言,我试图使用表面上合法的语法 df.count 访问数据框 "df" 中的列 "count"。
然而,计数被认为是 pandas 数据框对象的一个属性。由此产生的名称冲突会产生(相当令人困惑的)错误。
我在 sklearn.model_selection train_test_split
中遇到了同样的错误,但在我的例子中,原因是我向函数提供了一个从 spark 数据帧派生的数组,而不是来自 Pandas 数据帧的数组.当我使用 toPandas() 函数将我的数据从 pandas 数据帧转换为 pandas 数据帧,然后向 train_test_split 提供 Pandas df 时,问题得到解决。
pandas_df=spark_df.toPandas()
错误:
features_to_use = ['Feature1', 'Feature2']
x5D = np.array(spark_df[ features_to_use ])
y5D = np.array(spark_df['TargetFeature'])
X_train, X_test, y_train, y_test = train_test_split(x5D, y5D, train_size=0.8)
固定:
pandas_df=spark_df.toPandas()
features_to_use = ['Feature1', 'Feature2']
x5D = np.array(pandas_df[ features_to_use ])
y5D = np.array(pandas_df['TargetFeature'])
X_train, X_test, y_train, y_test = train_test_split(x5D, y5D, train_size=0.8)
就我而言,我只是通过转到“文件”->“打开”重新打开了项目。
不知何故一切都重新加载并再次开始工作。
对于那些使用 pyTorch DataLoaders 的人 - 使用数据集功能:
for idx1, idx2 in kfold.split(train_dl.dataset)
这里train_dl是一个DataLoader
不确定如何修复。非常感谢任何帮助。我看到了
train = df1.iloc[:,[4,6]]
target =df1.iloc[:,[0]]
def train(classifier, X, y):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
classifier.fit(X_train, y_train)
print ("Accuracy: %s" % classifier.score(X_test, y_test))
return classifier
trial1 = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', MultinomialNB()),])
train(trial1, train, target)
错误如下:
----> 6 train(trial1, train, target)
<ipython-input-140-ac0e8d32795e> in train(classifier, X, y)
1 def train(classifier, X, y):
----> 2 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
3
4 classifier.fit(X_train, y_train)
5 print ("Accuracy: %s" % classifier.score(X_test, y_test))
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/model_selection/_split.py in train_test_split(*arrays, **options)
1687 test_size = 0.25
1688
-> 1689 arrays = indexable(*arrays)
1690
1691 if stratify is not None:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in indexable(*iterables)
204 else:
205 result.append(np.array(X))
--> 206 check_consistent_length(*result)
207 return result
208
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
175 """
176
--> 177 lengths = [_num_samples(X) for X in arrays if X is not None]
178 uniques = np.unique(lengths)
179 if len(uniques) > 1:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in <listcomp>(.0)
175 """
176
--> 177 lengths = [_num_samples(X) for X in arrays if X is not None]
178 uniques = np.unique(lengths)
179 if len(uniques) > 1:
/home/manisha/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py in _num_samples(x)
124 if len(x.shape) == 0:
125 raise TypeError("Singleton array %r cannot be considered"
--> 126 " a valid collection." % x)
127 return x.shape[0]
128 else:
TypeError: Singleton array array(<function train at 0x7f3a311320d0>, dtype=object) cannot be considered a valid collection.
____
不确定如何修复。非常感谢任何帮助。我看到了
出现此错误是因为您的函数 train
屏蔽了您的变量 train
,因此它被传递给了它自己。
说明:
你这样定义一个变量序列:
train = df1.iloc[:,[4,6]]
然后在几行之后,你定义一个这样的方法训练:
def train(classifier, X, y):
所以实际发生的是,您以前的 train
版本已更新为新版本。这意味着 train
现在不指向您想要的 Dataframe 对象,而是指向您定义的函数。在错误中它被清除。
array(<function train at 0x7f3a311320d0>, dtype=object)
查看错误语句中的函数train。
解决方法:
重命名其中之一(变量或方法)。
建议:将函数重命名为其他名称,例如 training
或 training_func
或类似名称。
我在另一个上下文中遇到了同样的错误 (sklearn train_test_split
),原因很简单,我传递了一个位置参数作为关键字参数,这导致被调用函数被误解。
第一个答案的变体 - 您可能得到此答案的另一个原因是,如果数据中的列名与包含数据的对象的 attribute/method 相同。
就我而言,我试图使用表面上合法的语法 df.count 访问数据框 "df" 中的列 "count"。
然而,计数被认为是 pandas 数据框对象的一个属性。由此产生的名称冲突会产生(相当令人困惑的)错误。
我在 sklearn.model_selection train_test_split
中遇到了同样的错误,但在我的例子中,原因是我向函数提供了一个从 spark 数据帧派生的数组,而不是来自 Pandas 数据帧的数组.当我使用 toPandas() 函数将我的数据从 pandas 数据帧转换为 pandas 数据帧,然后向 train_test_split 提供 Pandas df 时,问题得到解决。
pandas_df=spark_df.toPandas()
错误:
features_to_use = ['Feature1', 'Feature2']
x5D = np.array(spark_df[ features_to_use ])
y5D = np.array(spark_df['TargetFeature'])
X_train, X_test, y_train, y_test = train_test_split(x5D, y5D, train_size=0.8)
固定:
pandas_df=spark_df.toPandas()
features_to_use = ['Feature1', 'Feature2']
x5D = np.array(pandas_df[ features_to_use ])
y5D = np.array(pandas_df['TargetFeature'])
X_train, X_test, y_train, y_test = train_test_split(x5D, y5D, train_size=0.8)
就我而言,我只是通过转到“文件”->“打开”重新打开了项目。
不知何故一切都重新加载并再次开始工作。
对于那些使用 pyTorch DataLoaders 的人 - 使用数据集功能:
for idx1, idx2 in kfold.split(train_dl.dataset)
这里train_dl是一个DataLoader