【问题标题】:ValueError: Number of labels=19 does not match number of samples=1ValueError:标签数=19 与样本数=1 不匹配
【发布时间】:2018-08-17 18:11:46
【问题描述】:

这是我使用的代码。我正在尝试使用随机森林分类器根据学习者和主导主题对活动进行分类。

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn import linear_model
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
from sklearn.metrics import accuracy_score
from sklearn.cross_validation import train_test_split
from sklearn.datasets import make_multilabel_classification
Data = pd.read_excel("F:\VIT material\Master thesis\DATASET.xlsx",names=['learner','Dominant_Subject','Activity'])
print(Data)
print(Data.columns)
Data.reshape(Data.columns.values)
print(Data)
number= LabelEncoder()
Data['learner']= number.fit_transform(Data['learner'].astype('str'))
Data['Dominant_Subject']=number.fit_transform(Data['Dominant_Subject'].astpye('str'))                                      
Data['Activity']= number.fit_transform(Data['Activity'].astype('str'))
print(Data)
print(Data.shape)
X = Data['learner']
print(X)
print(X.shape)
Y = Data['Dominant_Subject'] 
print(Y)
print(Y.shape)
print(len(X))
print(len(Y))
X_train = X[:-5]
X_test = X[-5:]
Y_train = Y[:-10]
Y_test = Y[-10:]
X_train, X_test, Y_train, Y_test=train_test_split(X,test_size=0.2,random_state=20)
print(X_train,X_test,Y_train,Y_test)
model = linear_model.LinearRegression() 
model.fit(X_train,Y_train)
print(model.fit())
clf = RandomForestClassifier(n_estimators=100, min_samples_split=2)
clf.fit(X_train,Y_train)
print(clf.fit())
predicted = clf.predict(X)
print(accuracy_score(predicted,Y))

样本和标签的数量相等,但是我仍然收到标签数量不等于样本数量的错误。

错误追溯: 文件“C:/Users/RAJIV MISHRA/PycharmProjects/mltutorialpractice/13.py”,第 38 行,在 clf.fit(X_train,Y_train)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py”,第 326 行,适合

for i, t in enumerate(trees))

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py”,第 758 行, 在通话 而 self.dispatch_one_batch(iterator):

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py”,第 608 行,在 dispatch_one_batch 中

self._dispatch(tasks)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py”,第 571 行,在 _dispatch 中

job = self._backend.apply_async(batch, callback=cb)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib_parallel_backends.py”,第 109 行,在 apply_async 中

result = ImmediateResult(func)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib_parallel_backends.py”,第 326 行,在 init

self.results = batch()

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py”,第 131 行,在 call

return [func(*args, **kwargs) for func, args, kwargs in self.items]

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py”,第 131 行,

return [func(*args, **kwargs) for func, args, kwargs in self.items]

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py”,第 120 行,在 _parallel_build_trees 中

tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\tree\tree.py”,第 739 行,适合

X_idx_sorted=X_idx_sorted)

文件“C:\Users\RAJIV MISHRA\Anaconda3\lib\site-packages\sklearn\tree\tree.py”,第 240 行,适合

"number of samples=%d" % (len(y), n_samples))

ValueError:标签数=19 与样本数=1 不匹配

【问题讨论】:

  • 这是错误的回溯:

标签: python machine-learning


【解决方案1】:

有一些问题可以在此代码中修复。假设 X.shape[0] == Y.shape[0]:-
1.如果你使用train_test_split,下面的代码就不需要了

X_train = X[:-5]
X_test = X[-5:]
Y_train = Y[:-10]
Y_test = Y[-10:] 

代码还有另一个问题。样本索引与标签索引不匹配。我的 be following 可以用来解决这个问题。

X_train = X[:-5]
X_test = X[-5:]
Y_train = Y[:-5]
Y_test = Y[-5:]     

2。如果您使用train_test_split 将数据集拆分为训练集和测试集,则应同时传递标签和样本。

X_train, X_test, Y_train, Y_test=train_test_split(X,Y,test_size=0.2,random_state=20)

【讨论】:

  • 是的,我明白这一点。我尝试一次使用其中任何一个,但都没有改变错误。我还通过 X 作为特征和 Y 作为要使用的标签。
猜你喜欢
  • 2021-07-28
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2019-06-02
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多