У меня есть (2M, 23) размерный numpy
массив X
.Он имеет тип d <U26
, то есть строку Unicode из 26 символов.
array([['143347', '1325', '28.19148936', ..., '61', '0', '0'],
['50905', '0', '0', ..., '110', '0', '0'],
['143899', '1325', '28.80434783', ..., '61', '0', '0'],
...,
['85', '0', '0', ..., '1980', '0', '0'],
['233', '54', '27', ..., '-1', '0', '0'],
['���', '�', '�����', ..., '�', '��', '���']], dtype='<U26')
Когда я конвертирую его в тип данных с плавающей запятой, используя
X_f = X.astype(float)
, я получаю ошибку, как показано выше.Я пытаюсь найти, как решить эту ошибку форматирования строки для '���'.
Что это значит (как это называется?) И как мне решить эту ошибку?
РЕДАКТИРОВАТЬ: Информация о том, как данные были прочитаны: -
импорт соответствующих пакетов
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.functions import col
загрузка набора данных в фрейм данных pyspark
def loading_data(dataset):
dataset=sql_sc.read.format('csv').options(header='true', inferSchema='true').load(dataset)
# #changing column header name
dataset = dataset.select(*[col(s).alias('Label') if s == ' Label' else s for s in dataset.columns])
#to change datatype
dataset=dataset.drop('External IP')
dataset = dataset.filter(dataset.Label.isNotNull())
dataset=dataset.filter(dataset.Label!=' Label')#filter Label from label
print(dataset.groupBy('Label').count().collect())
return dataset
# invoking
ds_path = '../final.csv'
dataset=loading_data(ds_path)
проверка типа набора данных.
type(dataset)
pyspark.sql.dataframe.DataFrame
преобразовать в массив np
import numpy as np
np_dfr = np.array(data_preprocessing(dataset).collect())
разделить элементы и метки
X = np_dfr[:,0:22]
Y = np_dfr[:,-1]
показать X
>> X
array([['143347', '1325', '28.19148936', ..., '61', '0', '0'],
['50905', '0', '0', ..., '110', '0', '0'],
['143899', '1325', '28.80434783', ..., '61', '0', '0'],
...,
['85', '0', '0', ..., '1980', '0', '0'],
['233', '54', '27', ..., '-1', '0', '0'],
['���', '�', '�����', ..., '�', '��', '���']], dtype='<U26')