import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing

# 立刻下载数据集
housing = fetch_california_housing()
print(housing)
# 获得X数据行数和列数
m, n = housing.data.shape
print(m, n)
# 这里添加一个额外的bias输入特征(x0=1)到所有的训练数据上面，因为使用的numpy所有会立即执行
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]  # np.c_整合combine np.ones((m, 1)是x0=1这一列
# 以上代码会立即执行 因为不是tf的函数
# 创建两个TensorFlow常量节点X和y，去持有数据和标签
X = tf.constant(housing_data_plus_bias, dtype=tf.float32, name='X')  # 延迟执行，只是做了一下标记
y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name='y')  # reshape(-1,1)把行向量转变成列向量  -1代表随便行 不限制行数 最终m行一列
# 以上y是真实的数据
# 使用一些TensorFlow框架提供的矩阵操作去求theta
XT = tf.transpose(X)
# 解析解一步计算出最优解
theta = tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(XT, X)), XT), y)  # 解析解公式
with tf.Session() as sess:
    theta_value = theta.eval()  # 与sess.run(theta)等价 theta相当于一个图通过DAG构建
    print(theta_value)

import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing

# 立刻下载数据集
housing = fetch_california_housing()
print(housing)
# 获得X数据行数和列数
m, n = housing.data.shape
print(m, n)
# 这里添加一个额外的bias输入特征(x0=1)到所有的训练数据上面，因为使用的numpy所有会立即执行
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]  # np.c_整合combine np.ones((m, 1)是x0=1这一列
# 以上代码会立即执行 因为不是tf的函数
# 创建两个TensorFlow常量节点X和y，去持有数据和标签
X = tf.constant(housing_data_plus_bias, dtype=tf.float32, name='X')  # 延迟执行，只是做了一下标记
y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name='y')  # reshape(-1,1)把行向量转变成列向量  -1代表随便行 不限制行数 最终m行一列
# 以上y是真实的数据
# 使用一些TensorFlow框架提供的矩阵操作去求theta
XT = tf.transpose(X)
# 解析解一步计算出最优解
theta = tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(XT, X)), XT), y)  # 解析解公式
with tf.Session() as sess:
    theta_value = theta.eval()  # 与sess.run(theta)等价 theta相当于一个图通过DAG构建
    print(theta_value)

# 立刻下载数据集 # 获得X数据行数和列数 # 这里添加一个额外的bias输入特征(x0=1)到所有的训练数据上面，因为使用的numpy所有会立即执行 # np.c_整合combine np.ones((m, 1)是x0=1这一列 # 以上代码会立即执行 因为不是tf的函数 # 创建两个TensorFlow常量节点X和y，去持有数据和标签 # 延迟执行，只是做了一下标记 # reshape(-1,1)把行向量转变成列向量  -1代表随便行 不限制行数 最终m行一列 # 以上y是真实的数据 # 使用一些TensorFlow框架提供的矩阵操作去求theta # 解析解一步计算出最优解 # 解析解公式 # 与sess.run(theta)等价 theta相当于一个图通过DAG构建