Я не могу использовать кадры данных polars с scikitlearn для обучения машинному обучению.
В настоящее время я выполняю всю предварительную обработку фрейма данных в полярах, и во время обучения модели я преобразовываю его в панд, чтобы он работал.
Есть ли способ напрямую использовать фрейм данных polars, как для обучения ML, не меняя его на pandas?
Во время операций подгонки и преобразования sklearn не принимает полярные кадры данных.
Вы должны сделать пример. См.: stackoverflow.com/help/how-to-ask
Вы должны вызывать to_numpy
при передаче DataFrame
в sklearn. Хотя иногда sklearn
может работать с полярами Series
, преобразование в тип, ожидаемый основной библиотекой, является хорошей гигиеной типов.
import polars as pl
from sklearn.linear_model import LinearRegression
data = pl.DataFrame(
np.random.randn(100, 5)
)
x = data.select([
pl.all().exclude("column_0"),
])
y = data.select(pl.col("column_0").alias("y"))
x_train = x[:80]
y_train = y[:80]
x_test = x[80:]
y_test = y[80:]
m = LinearRegression()
m.fit(X=x_train.to_numpy(), y=y_train.to_numpy())
m.predict(x_test.to_numpy())
Спасибо. Мне просто нужна еще одна вещь во время кодирования категориальных функций с использованием одного горячего кодирования sklearn или любых других методов, что мне делать тогда. Он не кодируется.
Кроме того, если я конвертирую x_train или x_test в многомерные массивы numpy, то я хочу знать, используется ли больше памяти или нет (я имею в виду некоторую память для полярного кадра данных + некоторую память для массива numpy). Если он занимает дополнительную память, это будет проблемой, если в моей системе меньше оперативной памяти.
encoding_transformer1 = ColumnTransformer(
[("Normalizer", Normalizer(), ['Age', 'Fare']),
("One-hot encoder",
OneHotEncoder(dtype=int, handle_unknown='infrequent_if_exist'),
['Pclass', 'Sex', 'SibSp', 'Parch', 'Embarked'])],
n_jobs=-1,
verbose=True,
verbose_feature_names_out=True)
encoding_transformer1.fit(xtrain)
train_data = encoding_transformer1.transform(xtrain).tocsr()
test_data = encoding_transformer1.transform(xtest).tocsr()
Я получаю эту ошибку:
ValueError: Specifying the columns using strings is only supported for pandas DataFrames
что я должен делать?
Я нашел одну горячую кодировку методом to_dummies, но как же нам сделать другие методы кодирования.
Можете ли вы добавить небольшой пример того, чего вы хотите достичь?