Классификатор дерева решений Python - PullRequest
0 голосов
/ 09 мая 2018

пытается построить древовидный классификатор с пакетом 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)

enter image description here

  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 Traceback (самый последний вызов последний) в () ----> 1 model.fit (X_train, Y_train)

C: \ Users \ Тобиас \ AppData \ Local \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ sklearn \ дерево \ tree.py в соответствии (self, X, y, sample_weight, check_input, X_idx_sorted) 788 sample_weight = sample_weight, 789 check_input = check_input, -> 790 X_idx_sorted = X_idx_sorted) 791 вернуть себя 792

C: \ Users \ Тобиас \ AppData \ Local \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ sklearn \ дерево \ tree.py в соответствии (self, X, y, sample_weight, check_input, X_idx_sorted) 114 random_state = check_random_state (self.random_state) 115 если check_input: -> 116 X = check_array (X, dtype = DTYPE, accept_sparse = "csc") 117 y = check_array (y, sure_2d = False, dtype = None) 118 if issparse (X):

C: \ Users \ Тобиас \ AppData \ Local \ Программы \ питон \ python36 \ Lib \ сайт-пакеты \ sklearn \ Utils \ validation.py в check_array (массив, accept_sparse, dtype, порядок, копия, force_all_finite, sure_2d, allow_nd, sure_min_samples, ure_min_features, warn_on_dtype, оценщик) 431 force_all_finite) Еще 432: -> 433 array = np.array (массив, dtype = dtype, order = order, copy = copy) 434 435, если обеспечить_2d:

ValueError: не удалось преобразовать строку в число с плавающей точкой: '?'

Что я делаю не так? Я вижу, что X.values ​​имеет dType = Object ...

Спасибо

1 Ответ

0 голосов
/ 15 августа 2019

Попробуйте, чтобы убедиться, что вы передаете целые числа, если ваш набор содержит строки или категориальные значения или показывает другую проблему, я отредактирую этот ответ с помощью решения:

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)
...