Частичное кодирование набора данных - PullRequest
0 голосов
/ 11 июня 2018

Я хочу закодировать столбец набора данных в LabelEncoder, а остальные - в MinMaxScaler.Но он остается float64

BinEncoder = LabelEncoder()
scalar = MinMaxScaler()

dat = df.values
X = dat[0:500,0:5]
X[:,-1] = BinEncoder.fit_transform(X[:,-1])
X[:,0:4] = scalar.fit_transform(X[:,0:4])
print(X)

print(X), возвращает:

[[0.35435163 1.         0.96428571 0.05465126 0.        ]
 [0.07876241 0.85714286 0.85714286 0.04695418 0.        ]
 [0.11814948 0.64285714 0.5        0.08307676 3.        ]
 ...
 [0.25025542 0.79166667 0.54285714 0.10023708 1.        ]
 [0.25029285 1.         1.         0.0569226  1.        ]
 [0.25025127 1.         0.82608696 0.06935726 0.        ]]

Полный код:

import pandas as pd
from sklearn.preprocessing import LabelEncoder,MinMaxScaler
import numpy as np

df = pd.read_csv('./EURUSD_DATAFRAME.csv')
BinEncoder = LabelEncoder()
scalar = MinMaxScaler()


dat = df.values
#print(df.head())

X = dat[0:500,0:5]
Y = dat[:,5]
X[:,4] = BinEncoder.fit_transform(X[:,4])
print(X[:,-1])
X[:,0:4] = scalar.fit_transform(X[:,0:4])
print(X[:,-1])
print(X)
Y=BinEncoder.fit_transform(Y)

X = X.reshape(100,5,5)
#print(X[0])

1 Ответ

0 голосов
/ 12 июня 2018

Поскольку вы преобразовали свой объект DataFrame в пустой массив, вы должны выбрать один тип данных для всего массива.Если вы хотите, чтобы у каждого столбца был свой тип данных, вы должны сохранить его в виде DataFrame.

import pandas as pd
from sklearn.preprocessing import LabelEncoder,MinMaxScaler
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)), columns=list('ABCDE'))
BinEncoder = LabelEncoder()
scalar = MinMaxScaler()

X = df.loc[:500,'A':'D']
X['D'] = BinEncoder.fit_transform(X['D'])
X.loc[:,'A':'C'] = scalar.fit_transform(X.loc[:,'A':'C'])
print(X.dtypes)

Надеюсь, это поможет.

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