# -*- coding:utf-8 -*- # 房价预测,回归任务 import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import pandas as pd import numpy as np from keras import callbacks from keras.models import Sequential from keras.layers import Dense, Dropout from keras.wrappers.scikit_learn import KerasRegressor from sklearn.model_selection import KFold, cross_val_score from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline seed = 7 np.random.seed(seed) def main(): house_df = pd.read_csv('./data/housing.csv', sep='\s+', header=None) hose_set = house_df.values # print(hose_set) x = hose_set[:, 0:13] y = hose_set[:, 13] # print(y) # tbcallback=callbacks.TensorBoard(log_dir='./logs',histogram_freq=0, write_graph=True, write_images=True) estimators = [] estimators.append(('mlp', KerasRegressor(build_fn=build_model, epochs=512, batch_size=32, verbose=1))) pipeline = Pipeline(estimators) kfold = KFold(n_splits=10, random_state=seed) # results = cross_val_score(estimator, x, y, cv=kfold) scores = cross_val_score(pipeline, x, y, cv=kfold) print('\n') print("Results: %.2f (%.2f) MSE" % (scores.mean(), scores.std())) def build_model(): model = Sequential() model.add(Dense(32, input_dim=13,kernel_initializer='normal', activation='relu')) model.add(Dense(16, kernel_initializer='normal',activation='relu')) model.add(Dense(8, kernel_initializer='normal',activation='linear')) model.add(Dense(1, kernel_initializer='normal')) model.compile(optimizer='rmsprop', loss='mae', metrics=['accuracy']) return model if __name__ == '__main__': main()