R H2O пакет импорта CSV-файла с китайскими иероглифами
У меня есть большой набор данных в csv
формат для построения модели прогнозирования. Из-за его размера я планировал использовать h2o
пакет в R, чтобы построить модель. Однако данные в нескольких столбцах data.frame
, содержит некоторые китайские упрощенные символы и h2o
испытывает затруднения при получении данных.
Я пробовал два разных подхода. Первый подход включал непосредственное чтение из файла с использованием h2o.importFile()
функция для импорта данных. Тем не менее, этот подход в конечном итоге превращает китайские иероглифы в некоторые грязные коды.
Второй подход, который я пытался сначала перенести в R, используя данные readr
и база R read_csv
/read.csv
функции. После того, как данные загружены правильно в R, я попытался преобразовать data.frame
в h2o
использование кадра as.h2o
функция. Хотя конечный результат этого подхода также привел к неправильному переводу.
Чтобы проиллюстрировать это, я написал следующий фрагмент кода в качестве примера:
require(h2o)
dat<-data.frame(x=rep(c("北京","上海"),50),
y=rnorm(mean=10,sd=3,n=100))
h2o.init(nthreads=-1)
h2o.dat<-as.h2o(dat)
3 ответа
Я бы посчитал это ошибкой, поскольку data.frame R может отображать символы, но в то же время R H2OFrame не может. Я проверил, что это работает для H2OFrames в Python, так что это только проблема R. Я подал ошибку здесь.
Я не знаю, является ли это лучшим способом, но я работал над корейскими данными раньше, и этот процесс я обычно придерживаюсь. Во-первых, убедитесь, что данные, которые вам нужно прочитать, закодированы как "UTF-8". Во-вторых, убедитесь, что языковой стандарт установлен на английский.
Sys.getlocale(category="LC_ALL")
Затем вы можете прочитать файл, используя следующую инструкцию,
dat <- read.csv("Test.txt",header=T,encoding = "UTF-8",stringsAsFactors = F)
dat[,1]
[1] "北京" "上海" "北京" "上海"
dat
X.U.FEFF.X Y
1 <U+5317><U+4EAC> 1
2 <U+4E0A><U+6D77> 2
3 <U+5317><U+4EAC> 3
4 <U+4E0A><U+6D77> 4
Как вы можете видеть, когда вы просматриваете весь data.frame, вы видите их как кодировку "UTF-8", но вы также можете посмотреть на китайские символы, используя df[1,]
и глядя на каждый вектор.
Ваша проблема связана только с тем, что R не показывает закодированный символ внутри кадров H2O, однако данные внутри кадров H2 все еще полностью сохраняются, как и в исходном кадре. Как только вы используете H2O Web/FLOW UI и увидите кадр h2o, вы увидите, что данные внутри кадра h2o в точности совпадают с исходным кадром. На следующем рисунке показаны результаты в различных местах, например, RStudio, окно просмотра R и интерфейс H2O FLOW.
Пожалуйста, перейдите по ссылке ниже для решения, однако вы должны иметь возможность обновлять локальные данные на вашем компьютере, чтобы просматривать эти символы во фреймах данных H2O: