如何拆分数据集 - 标签数=150 与样本数=600 不匹配

How to spliting datasets - Number of labels=150 does not match number of samples=600

我有一个 750x256 的数据样本。

Rows = 750
Columns = 256

如果我将我的数据分成 20%。我将有 X_train 600 个样本和 y_train 150 个样本。

那么在做decisionTreeRegressor

的时候就会出现这个问题

它会说Number of y_train=150 does not match number of samples=600

但是如果我将我的 test_size 分成 50%,那么它将起作用。 有办法解决这个问题吗?我不想使用我 test_size.

的 50%

任何帮助都会很棒!

这是我的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import graphviz

#Load the data
dataset = pd.read_csv('new_york.csv')
dataset['Higher'] = dataset['2016-12'].gt(dataset['2016-11']).astype(int)
X = dataset.iloc[:, 6:254].values
y = dataset.iloc[:, 255].values

#Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, :248])
X[:, :248] = imputer.transform(X[:, :248])

#Split the data into train and test sets
from sklearn.cross_validation import train_test_split
X_train, X_test, y_test, y_train = train_test_split(X, y, test_size = .2,    random_state = 0)

#let's build our first model
from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier, export_graphviz
clf = DecisionTreeClassifier(max_depth=6)
clf.fit(X_train, y_train)
clf.score(X_train, y_train)

train_test_split() returns X_train, X_test, y_train, y_test,您的 y_train 和 y_test 顺序错误。

如果您使用 50% 的拆分,这不会导致错误,因为 y_train 和 y_test 将具有相同的大小(但显然是错误的值)。