Keras + DataFrameMapper + make_pipeline,input_dim两难

时间:2018-01-11 21:48:27

标签: python pandas scikit-learn keras

我的数据如下:

????

我想使用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}}

谢谢!

0 个答案:

没有答案