【发布时间】: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 不匹配
【问题讨论】:
-
这是错误的回溯: