Как исправить: ValueError: Количество меток = 21638 не соответствует количеству семплов = 13 - PullRequest
0 голосов
/ 21 мая 2018

Я очень новичок в python 2.7 Я пытаюсь запустить Decision Tree Classifier на своем наборе данных, но после обучения я столкнулся с этой проблемой, я сначала векторизовал свои столбцы функций и сохранил их в массив, а затем сохранил целевой столбец в массивеиспользуя labelencoder.Подскажите пожалуйста, как мне исправить эту ошибку?

Данные:

Data here

Код:

import pandas as pd

dataset = "C:/Users/ashik swaroop/Desktop/anaconda/Gene Dataset/Final.csv"
datacan = pd.read_csv(dataset)
datacan = datacan.fillna('')
features = datacan[[ 
"Tumour_Types_Somatic","Tumour_Types_Germline",
"Cancer_Syndrome","Tissue_Type", 
"Role_in_Cancer","Mutation_Types","Translocation_Partner",
"Other_Syndrome","Tier","Somatic","Germline",
"Molecular_Genetics","Other_Germline_Mut"]]

 from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import LabelEncoder

X_dict = features.to_dict().values()
vect = DictVectorizer(sparse=False)
X_vector = vect.fit_transform(X_dict)

le = LabelEncoder()
y_train = le.fit_transform(datacan['Gene_Symbol'][:-1])


X_Train = X_vector[:-1]

X_Test = X_vector[-1:] 

from sklearn import tree

clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(X_Train,y_train)    `

Я получаю этоОшибка:

from sklearn import tree
clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(X_Train,y_train)
Traceback (most recent call last):

File "<ipython-input-49-fef4fc045a54>", line 4, in <module>
clf = clf.fit(X_Train,y_train)

File "C:\Users\ashik swaroop\Anaconda2\lib\site- 
packages\sklearn\tree\tree.py", line 739, in fit
X_idx_sorted=X_idx_sorted)

File "C:\Users\ashik swaroop\Anaconda2\lib\site- 
packages\sklearn\tree\tree.py", line 240, in fit
"number of samples=%d" % (len(y), n_samples))

ValueError: Number of labels=21638 does not match number of samples=12

Traceback (most recent call last):

File "<ipython-input-49-fef4fc045a54>", line 4, in <module>
clf = clf.fit(X_Train,y_train)

File "C:\Users\ashik swaroop\Anaconda2\lib\site- 
packages\sklearn\tree\tree.py", line 739, in fit
X_idx_sorted=X_idx_sorted)

File "C:\Users\ashik swaroop\Anaconda2\lib\site- 
packages\sklearn\tree\tree.py", line 240, in fit
"number of samples=%d" % (len(y), n_samples))

ValueError: Number of labels=21638 does not match number of samples=12

1 Ответ

0 голосов
/ 22 мая 2018

Во-первых, чтобы понять ошибку: кажется, что ваше количество тренировочных образцов (например, np.shape(X_train)[0]) не совпадает с количеством меток (т.е.. np.shape(y_train)[0]).

При взгляде на вашКод Я замечаю некоторые несоответствия.Пожалуйста, обратитесь к встроенным комментариям ниже.

import pandas as pd
from apyori import apriori
dataset = "C:/Users/ashik swaroop/Desktop/anaconda/Gene Dataset/Final.csv"
datacan = pd.read_csv(dataset)
datacan = datacan.fillna('')
features = datacan[[ 
"Tumour_Types_Somatic","Tumour_Types_Germline",
"Cancer_Syndrome","Tissue_Type", 
"Role_in_Cancer","Mutation_Types","Translocation_Partner",
"Other_Syndrome","Tier","Somatic","Germline",
"Molecular_Genetics","Other_Germline_Mut"]]
# EDIT replace by features = [ 
#"Tumour_Types_Somatic","Tumour_Types_Germline",
#"Cancer_Syndrome","Tissue_Type", 
#"Role_in_Cancer","Mutation_Types","Translocation_Partner",
#"Other_Syndrome","Tier","Somatic","Germline",
#"Molecular_Genetics","Other_Germline_Mut"]

orders = datacan[features].to_dict( orient = 'records' ) # this variable is not used

from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import LabelEncoder

X_dict = features.to_dict().values() # try replacing this line with X_dict = orders
vect = DictVectorizer(sparse=False)
X_vector = vect.fit_transform(X_dict)

le = LabelEncoder()
y_train = le.fit_transform(datacan['Gene_Symbol'][:-1])


X_Train = X_vector[:-1]

X_Test = X_vector[-1:] 

from sklearn import tree

clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(X_Train,y_train)  
...