之前有人问我sklearn的MLPRegressor和tensorflow的DNNRegressor在处理数据回归的问题时到底存在的区别是什么?
1.通过查看官网相关方法的解释,感觉除了参数的设置的多少有所不同之外,大致是相同的。(如果有错误的话,欢迎指正)
2.另外对于MLPRegressor(多层感知器)来说可以设置的层数应该比tensorflow的DNNRegressor(深度神经网络)少一些,因此tensorflow应该可以处理层数更多情况下的神经网络,因此可知适用于数据集更加复杂的场景。
3.同时我感觉tensorflow在进行使用时没有sklearn直接调库方便,因为tensorflow要把数据进行一定的处理使它成为特定的形式才能进行处理。
1. # -*- coding: utf-8 -*-
2. import pandas as pd
3. import os
4. os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
5. import tensorflow as tf
6. import numpy as np
7. train_data_file = 'test.csv'
8. train_data = pd.read_csv(train_data_file)
9. from sklearn import preprocessing
10. scaler = preprocessing.StandardScaler().fit(train_data)
11. train_data = scaler.transform(train_data)
12. train_data_features = train_data[:,0]
13. train_data_outcomes = train_data[:,1]
14. train_data_features = train_data_features.reshape(-1, 1)
15. feature_columns = [tf.contrib.layers.real_valued_column("", dimension=1)]
16. classifier = tf.contrib.learn.DNNRegressor(feature_columns=feature_columns,
17. hidden_units=[8],
18. optimizer=tf.train.RMSPropOptimizer(learning_rate=0.001),
19. activation_fn=tf.nn.relu)
20. classifier.fit(x= train_data_features,
21. y=train_data_outcomes,
22. batch_size=4,
23. max_steps=10000)
24. print("3 finished")
25. predict = list(classifier.predict(train_data_features))
26. print(len(predict))
27. print(classifier.evaluate(x= train_data_features, y=train_data_outcomes))
28. import matplotlib.pyplot as plt
29. plt.plot(train_data_features, train_data_outcomes, 'bo')
30. plt.plot(train_data_features, predict, 'ro')
31. plt.show()
实验结果显示:
隐藏层:[10]
激活次数activation_fn=tf.nn.relu
迭代次数:10000次
实验结果: {'loss': 0.00030592017, 'global_step': 10000}
隐藏层:[3]
激活次数:activation_fn=tf.nn.tanh
迭代次数:300000
实验结果:{'loss': 0.00093994406, 'global_step': 300000} 总时间:1.932878017425537