ValueError: Количество меток = 25 не соответствует количеству выборок = 56 - PullRequest
2 голосов
/ 30 апреля 2019

Я получаю это в

C: /Users/HP/.PyCharmCE2019.1/config/scratches/scratch.py ​​Traceback (последний звонок последний раз):
Файл "C: /Users/HP/.PyCharmCE2019.1/config/scratches/scratch.py", строка 25, в dtree.fit (x_train, y_train)
Файл "C: \ Users \ HP \ PycharmProjects \ без названия \ venv \ lib \ site-packages \ sklearn \ tree \ tree.py", строка 801, в соответствии X_idx_sorted = X_idx_sorted)
Файл "C: \ Users \ HP \ PycharmProjects \ без названия \ venv \ lib \ site-packages \ sklearn \ tree \ tree.py", строка 236, в подгонке "количество образцов =% d"% (len (y), n_samples))
ValueError: Количество меток = 45 не соответствует числу семплов = 36

Я использую модель DecisionTree, но получаю ошибку. Помощь будет оценена.

#importing libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#reading the dataset
df=pd.read_csv(r'C:\csv\kyphosis.csv')
print(df)
print(df.head())

#visualising the dataset
print(sns.pairplot(df,hue='Kyphosis',palette='Set1'))
plt.show()

#training and testing
from sklearn.modelselection import traintestsplit 
c=df.drop('Kyphosis',axis=1) d=df['Kyphosis'] 
xtrain,ytrain,xtest,ytest=traintestsplit(c,d,testsize=0.30)

#Decision_Tree
from sklearn.tree import DecisionTreeClassifier
dtree=DecisionTreeClassifier()
dtree.fit(xtrain,ytrain)

#Predictions
predictions=dtree.predict(xtest) from sklearn.metrics import 
classificationreport,confusionmatrix 
print(classificationreport(ytest,predictions)) 
print(confusionmatrix(y_test,predictions))

Ожидаемый результат должен быть моим classification_report и confusion_matrix

1 Ответ

2 голосов
/ 30 апреля 2019

Итак, ошибка выдается функцией dtree.fit(xtrain, ytrain), потому что xtrain и ytrain имеют неодинаковую длину.

Проверка части кода, которая его генерирует:

xtrain,ytrain,xtest,ytest=traintestsplit(c,d,testsize=0.30)

и сравнение с примером в документации

import numpy as np
from sklearn.model_selection import train_test_split
[...]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

Вы можете видеть две вещи:

1 traintestsplit должно быть train_test_split

2, изменяя порядок переменных слева от =, вы назначаете разные данные этим переменным.

Итак, ваш код должен быть:

 xtrain, xtest, ytrain, ytest = train_test_split(c,d,testsize=0.30)
...