深圳网页制作与网站建设方案维护,jquery 类似wordpress,网站美工做专题尺寸多少,移动网站建设推广目录
1#xff09;数据处理
2#xff09;代价函数
3#xff09;Scikit-learn训练数据集
4#xff09;正规方程
练习1还包括一个房屋价格数据集#xff0c;其中有2个变量#xff08;房子的大小#xff0c;卧室的数量#xff09;和目标#xff08;房子的价格#…目录
1数据处理
2代价函数
3Scikit-learn训练数据集
4正规方程
练习1还包括一个房屋价格数据集其中有2个变量房子的大小卧室的数量和目标房子的价格。 我们使用我们已经应用的技术来分析数据集。
1数据处理
还是那个建议大家拿到数据先看看数据长什么样子。
path ex1data2.txt
data2 pd.read_csv(path, headerNone, names[Size, Bedrooms, Price])
data2.head()
对于此任务我们添加了另一个预处理步骤 - 特征归一化。 这个对于pandas来说很简单
data2 (data2 - data2.mean()) / data2.std()
data2.head()
2代价函数
现在我们重复第1部分的预处理步骤并对新数据集运行线性回归程序。
data2.insert(0, Ones, 1)# set X (training data) and y (target variable)
cols data2.shape[1]
X2 data2.iloc[:,0:cols-1]
y2 data2.iloc[:,cols-1:cols]# convert to matrices and initialize theta
X2 np.matrix(X2.values)
y2 np.matrix(y2.values)
theta2 np.matrix(np.array([0,0,0]))# perform linear regression on the data set
g2, cost2 gradientDescent(X2, y2, theta2, alpha, iters)# get the cost (error) of the model
computeCost(X2, y2, g2
0.13070336960771892
我们也可以快速查看这一个的训练进程。
fig, ax plt.subplots(figsize(12,8))
ax.plot(np.arange(iters), cost2, r)
ax.set_xlabel(Iterations)
ax.set_ylabel(Cost)
ax.set_title(Error vs. Training Epoch)
plt.show() 3Scikit-learn训练数据集
我们也可以使用scikit-learn的线性回归函数而不是从头开始实现这些算法。 我们将scikit-learn的线性回归算法应用于第1部分的数据并看看它的表现。
from sklearn import linear_model
model linear_model.LinearRegression()
model.fit(X, y)
scikit-learn model的预测表现
x np.array(X[:, 1].A1) #选取X的第1列从0列开始
f model.predict(X).flatten()fig, ax plt.subplots(figsize(12,8))
ax.plot(x, f, r, labelPrediction)
ax.scatter(data.Population, data.Profit, labelTraning Data)
ax.legend(loc2)
ax.set_xlabel(Population)
ax.set_ylabel(Profit)
ax.set_title(Predicted Profit vs. Population Size)
plt.show() 4正规方程
正规方程是通过求解下面的方程来找出使得代价函数最小的参数的 假设我们的训练集特征矩阵为 X包含了?01并且我们的训练集结果为向量 y则利用正规方程解出向量 。
梯度下降与正规方程的比较
梯度下降需要选择学习率α需要多次迭代当特征数量n大时也能较好适用适用于各种类型的模型
正规方程不需要选择学习率α一次计算得出需要计算如果特征数量n较大则运算代价大因为矩阵逆的计算时间复杂度为通常来说当n小于10000 时还是可以接受的只适用于线性模型不适合逻辑回归模型等其他模型。
# 正规方程
def normalEqn(X, y):theta np.linalg.inv(X.TX)X.Ty#X.TX等价于X.T.dot(X)return theta
final_theta2normalEqn(X, y)#感觉和批量梯度下降的theta的值有点差距
final_theta2
matrix([[-3.89578088],[ 1.19303364]])