Python 在拟合保持NaN值不变的决策树分类器时出现值错误

Python 在拟合保持NaN值不变的决策树分类器时出现值错误,python,Python,我试图在两列中缺少值的数据上拟合DT分类器。由于DT处理缺失值,因此我希望在不输入任何值的情况下测试模型,即将缺失值保留为NaN。但是当我运行模型时,我得到了值错误 ValueError: Input contains NaN, infinity or a value too large for dtype('float32') 我尝试了以下代码: train_data = pd.read_csv('./train.csv') #converting -999 to NAN train_da

我试图在两列中缺少值的数据上拟合DT分类器。由于DT处理缺失值,因此我希望在不输入任何值的情况下测试模型,即将缺失值保留为NaN。但是当我运行模型时,我得到了值错误

ValueError: Input contains NaN, infinity or a value too large for dtype('float32')
我尝试了以下代码:

train_data = pd.read_csv('./train.csv')

#converting -999 to NAN
train_data.x14[train_data.x14==-999]=np.NaN
train_data.x15[train_data.x15==-999]=np.NaN

train_data = train_data.reset_index()

#defining x and y
x = train_data.iloc[:,1:18]
y = train_data.iloc[:,-1]
print("Sample x data\n", x.head(n=5))
print("Sample y data\n", y.head(n=5))

X_train,X_test,Y_train,Y_test = train_test_split(x, y, test_size=0.30, random_state=0)
X_train = X_train.values
Y_train = Y_train.values

model = DecisionTreeClassifier(max_depth=10, 
                               min_samples_split=5,
                                       random_state=520)
                                       # class_weight='balanced')
model.fit(X_train, Y_train)

保持
NaN
完好无损的唯一方法是在将数据提供给分类器之前删除它们

x = train_data.dropna().iloc[:,1:18]
y = train_data.dropna().iloc[:,-1]
您的训练数据(
x
y
)将不包含
NaN
(您别无选择),但至少您的
DataFrame
及其缺少的值将保持完整(无论出于何种原因)

请参阅: