我的数据如下:
????
我想使用import pandas as pd
from sklearn_pandas import DataFrameMapper, CategoricalImputer
from sklearn.preprocessing import StandardScaler, LabelBinarizer
from sklearn.pipeline import make_pipeline
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
df = pd.DataFrame({
'y': [0, 0, 0, 1, 1, 1, 1],
'a': [2, 1, 2, 7, 8, 8, 9],
'b': ['a', 'a', 'a', 'b', None, 'b', 'c']
})
y = df['y']
X = df.drop('y', axis=1)
进行预处理,DataFrameMapper
进行预测。所有这些都在方便KerasClassifier
...
make_pipeline
部分很简单:
DataFrameMapper
定义网络很容易:
mapper = DataFrameMapper([
(['a'], StandardScaler()),
('b', [CategoricalImputer(), LabelBinarizer()]),
])
将所有内容放在def model():
model = Sequential()
model.add(Dense(10, activation='relu', input_dim= **4** ))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
kc = KerasClassifier(build_fn=model, epochs=5, verbose=2)
中也很简单:
make_pipeline
但是,这就是问题......我为pipe = make_pipeline(mapper, kc)
pipe.fit(X, y)
pipe.predict_proba(
pd.DataFrame({
'y': [0],
'a': [2],
'b': ['b']
})
)
编写了一个分类器...而且我无法进行制作,因为我不一定知道这个尺寸是什么input_dim
会吐出来......可能是4可能是5可能是11 ...所以我真正的问题:如何将DataFrameMapper
的shape / output_dim传递给{的input_dim {1}}流程中的{1}} ?
谢谢!