提问者:小点点

Python决策树分类器


试图建立一个树形分类器与Scikit包,但我有问题得到正确的格式为分类器输入...

import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

#import dataset
data = pd.read_table('Data/Breast.csv')
data.head(10)

  X=data[['clump_thickness','shape_uniformity','marginal_adhesion','epithelial_size','bare_nucleoli','bland_chromatin','normal_nucleoli','mitoses']]

X_train = X.values

Y = data[['class']]
Y_train = Y.values

model = DecisionTreeClassifier()
model 

model.fit(X_train,Y_train)

但我收到以下错误消息:

()中的ValueError回溯(最近一次调用)----

C:\用户\托比亚斯\appdata\本地\程序\python\python36\lib\site-包\sk学\树\tree.py适合(自我,X,y,sample_weight,check_input,X_idx_sorted)788sample_weight=sample_weight,789check_input=check_input,-

c:\users\tobias\appdata\local\programs\python36\lib\site packages\sklearn\tree\tree。py拟合(自身、X、y、样本重量、检查输入、X\U idx\U排序)114随机状态=检查随机状态(自身、随机状态)115如果检查输入:--

c:\users\tobias\appdata\local\programs\python36\lib\site packages\sklearn\utils\validation。检查数组中的py(数组、接受稀疏、数据类型、顺序、复制、强制所有有限、确保2d、允许nd、确保最小样本、确保最小特征、警告数据类型、估计器)431强制所有有限)432其他:--

ValueError:无法将字符串转换为浮点:'?'

我做错了什么?我可以看到X.values的类型是dType=Object。。。

谢谢


共1个答案

匿名用户

尝试此操作以确保传递的是整数,如果集合包含字符串或分类值,或显示其他问题,我将使用解决方案编辑此答案:

cols = ['clump_thickness','shape_uniformity','marginal_adhesion','epithelial_size','bare_nucleoli','bland_chromatin','normal_nucleoli','mitoses']
for col in cols:
     data[col] = data[col].astype('int') 
X.train = data[cols]
Y.train = data[['class]]

model = DecissionTreeClassifier()
model.fit(X_train,Y_train)