Как избежать ошибки: не удалось преобразовать строку в число с плавающей точкой - PullRequest
0 голосов
/ 08 марта 2020

Моя цель - создать модель, которая разбивает текст на предложения. У меня есть набор данных (xlsx) с 24 столбцами: первый столбец для экземпляров (слова), 22 объектов и последний столбец содержит класс. Только первый столбец является строкой, все остальные являются целыми числами.

Мой код:

dataset = pd.read_excel('File_xlsx', header=0, dtype=str)
testdataset = pd.read_excel('file_xlsx', header=0, dtype=str)

# Split-out validation dataset
array = dataset.values
testarray = dataset.values
X_train = array[1:-1]
Y_train = array[:,22]

X_test = testarray[1:-1]
Y_test = testarray[:,22]

svclassifier = SVC(kernel='linear')
svclassifier.fit(X_train,Y_train)

#Predict values using the SVM algorithm model
Y_pred = svclassifier.predict(X_test)

#Evaluation
Print(confusion_matrix(Y_test,Y_pred))
print(classification_report(Y_test,Y_pred))

После запуска я получаю

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

'Alkl' - последняя строка в первом столбце

Печать моего набора данных (набор данных [: 5])

       0  1  2  3  4  5  6  7  8  9  ... 14 15 16 17 18 19 20 21 22 23
0   dstwr  0  0  0  0  0  0  0  0  0 ...  0  0  0  1  0  0  0  0  0  1
1    twns  1  0  0  0  0  0  0  0  0 ...  0  0  0  1  0  0  0  0  0  2
2  Aljdyd  1  0  0  0  0  0  0  0  0 ...  0  0  0  0  0  0  0  0  0  2
3     kml  1  0  0  0  0  0  0  0  0 ...  0  0  0  0  0  0  0  0  0  2
4    nhAr  0  0  0  0  0  0  0  0  0 ...  0  0  0  0  0  0  0  0  0  2

print (X_train [: 5])

[5 rows x 24 columns]
[['twns' '1' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0'
  '1' '0' '0' '0' '0' '0' '2']
 ['Aljdyd' '1' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0'
  '0' '0' '0' '0' '0' '0' '0' '2']
 ['kml' '1' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0'
  '0' '0' '0' '0' '0' '0' '2']
 ['nhAr' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0'
  '0' '0' '0' '0' '0' '0' '2']
 ['27' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0'
  '0' '0' '0' '0' '0' '0' '2']]

1 Ответ

2 голосов
/ 09 марта 2020

Эти строки

X_train = array[:,0:22]
Y_train = array[:,22]

X_test = testarray[:,0:22]
Y_test = testarray[:,22]

начинаются с первого столбца - попробуйте использовать его в качестве среза

[:,1:-1]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...