def testBoston(self): random.seed(42) boston = datasets.load_boston() regressor = learn.LinearRegressor( feature_columns=learn.infer_real_valued_columns_from_input(boston.data)) regressor.fit(boston.data, boston.target, max_steps=500) score = mean_squared_error(boston.target, regressor.predict(boston.data)) self.assertLess(score, 150, "Failed with score = {0}".format(score))
def testBoston(self): random.seed(42) boston = datasets.load_boston() regressor = learn.TensorFlowLinearRegressor(batch_size=boston.data.shape[0], steps=500, learning_rate=0.001) regressor.fit(boston.data, boston.target) score = mean_squared_error(boston.target, regressor.predict(boston.data)) self.assertLess(score, 150, "Failed with score = {0}".format(score))
def testBoston(self): random.seed(42) boston = datasets.load_boston() regressor = learn.LinearRegressor( feature_columns=learn.infer_real_valued_columns_from_input(boston.data)) regressor.fit(boston.data, boston.target, max_steps=500) score = mean_squared_error( boston.target, np.array(list(regressor.predict(boston.data)))) self.assertLess(score, 150, "Failed with score = {0}".format(score))
def loaddata(): """ 获取到数据集 :return: """ boston_data = datasets.load_boston() X_train, Y_train = boston_data.data[:, 5], boston_data.target # X_train=normaize(X_train) n_samples = len(X_train) return (X_train, Y_train, n_samples)
def multiple_linear_regression(): """ 多特征的线性回归模型 :return: """ boston_data = datasets.load_boston() X_train, Y_train = boston_data.data, boston_data.target n_samples = len(X_train) # 将偏差作为一列特征添加进去 X_train = np.c_[X_train, np.zeros(shape=(n_samples, 1))] n_features = X_train.shape[1] X_train = (X_train - np.mean(X_train)) / np.std(X_train) Y_train = np.reshape(Y_train, newshape=(n_samples, 1)) # TODO 暂时不考虑偏差,考虑偏差就是把偏差也当做一个特征值 X = tf.placeholder(dtype=tf.float32, shape=(n_samples, n_features), name="X") Y = tf.placeholder(dtype=tf.float32, shape=(n_samples, 1), name="Y") w = tf.Variable(tf.random_normal(shape=(n_features, 1)), name="w") Y_that = tf.matmul(X, w) loss = tf.reduce_mean(tf.square(Y - Y_that), name="loss") optimizer = tf.train.GradientDescentOptimizer( 0.001, name="optimizer").minimize(loss) linear_ops = tf.global_variables_initializer() total = [] with tf.Session() as sess: sess.run(linear_ops) writer = tf.summary.FileWriter("multiplinear_regression", sess.graph) for i in range(1000): _, total_loss = sess.run([optimizer, loss], feed_dict={ X: X_train, Y: Y_train }) total.append(total_loss) logger.info("epoll {0} loss {1}".format(i, total_loss / n_samples)) writer.close() w_value = sess.run(w) writer.close() show_loss(total) # 预测 n = 500 Y_pred = np.matmul(X_train[n, :], w_value) logger.info("pred {0} real {1}".format(Y_pred[0], Y_train[n][0]))
def testBostonDNN(self): random.seed(42) boston = datasets.load_boston() regressor = learn.TensorFlowDNNRegressor( hidden_units=[10, 20, 10], n_classes=0, batch_size=boston.data.shape[0], steps=200, learning_rate=0.001 ) regressor.fit(boston.data, boston.target) score = mean_squared_error(boston.target, regressor.predict(boston.data)) self.assertLess(score, 110, "Failed with score = {0}".format(score)) weights = regressor.weights_ self.assertEqual(weights[0].shape, (13, 10)) self.assertEqual(weights[1].shape, (10, 20)) self.assertEqual(weights[2].shape, (20, 10)) self.assertEqual(weights[3].shape, (10, 1)) biases = regressor.bias_ self.assertEqual(len(biases), 4)
def testBostonDNN(self): random.seed(42) boston = datasets.load_boston() regressor = learn.TensorFlowDNNRegressor(hidden_units=[10, 20, 10], n_classes=0, batch_size=boston.data.shape[0], steps=200, learning_rate=0.001) regressor.fit(boston.data, boston.target) score = mean_squared_error(boston.target, regressor.predict(boston.data)) self.assertLess(score, 110, "Failed with score = {0}".format(score)) weights = regressor.weights_ self.assertEqual(weights[0].shape, (13, 10)) self.assertEqual(weights[1].shape, (10, 20)) self.assertEqual(weights[2].shape, (20, 10)) self.assertEqual(weights[3].shape, (10, 1)) biases = regressor.bias_ self.assertEqual(len(biases), 4)
def testBoston(self): boston = datasets.load_boston() self.assertTupleEqual(boston.data.shape, (506, 13)) self.assertTupleEqual(boston.target.shape, (506, ))
def testBoston(self): boston = datasets.load_boston() self.assertTupleEqual(boston.data.shape, (506, 13)) self.assertTupleEqual(boston.target.shape, (506,))