Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x (补)
2017-12-17 23:28
876 查看
Exercise 1:Linear Regression---实现一个多元线性回归
房屋价格数据集,其中有2个变量(房子的大小,卧室的数量)和目标(房子的价格)。 我们使用我们已经应用的技术来分析数据集。
2104,3,399900
1600,3,329900
2400,3,369000
1416,2,232000
3000,4,539900
1985,4,299900
1534,3,314900
1427,3,198999
1380,3,212000
代码
(和第一个差不多,就是需要数据特征归一化 ,因为 3列数据差值过大 ,影响结果)
import numpy as np
import pandas as pd
data2 = pd.read_csv('ex1data2.txt',names=['size','house','cost'])
print(data2.describe())
#数据归一化
data2 = (data2 - data2.mean()) / data2.std()
#偏置单元x0
data2.insert(0, 'Ones', 1)
#选取元素
cols = data2.shape[1]
X = data2.iloc[:,0:cols-1]
y = data2.iloc[:,cols-1:cols]
#转化成矩阵
X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0,0]))
#初始化代价函数
def J(x,y,theta):
temp = np.power(((x * theta.T) - y),2) # .T 一定要小心
return np.sum(temp) / (2 * len(x))
print(J(X,y,theta))
#梯度下降公式
def gradDescent(x,y,theta,alpa,iters):
temp = np.matrix(np.zeros(theta.shape)) #创建和theta同行同列的全0矩阵
parameters = int(theta.shape[1]) #得到列数,就是theta的数量 ;revel()合并矩阵,可以删掉!
cost = np.zeros(iters) # 每一次循环得到的代价值
for i in range(iters):
error = (x * theta.T) - y
for j in range(parameters):
temp1 = np.multiply(error,x[:,j]) #x[:,j] 就是第j列的所有数据
temp[0,j] = theta[0,j] - ((alpa / len(x)) * np.sum(temp1)) # 每一个theta 所得的值
theta = temp
cost[i] = J(x,y,theta) # 就是每一次梯度下降后所得的代价值
return theta,cost # 数值型一般需要返回值
theta1,cost = gradDescent(X,y
4000
,theta,alpa=0.1,iters=1000)
print(theta1)
print(J(X,y,theta1))
房屋价格数据集,其中有2个变量(房子的大小,卧室的数量)和目标(房子的价格)。 我们使用我们已经应用的技术来分析数据集。
2104,3,399900
1600,3,329900
2400,3,369000
1416,2,232000
3000,4,539900
1985,4,299900
1534,3,314900
1427,3,198999
1380,3,212000
代码
(和第一个差不多,就是需要数据特征归一化 ,因为 3列数据差值过大 ,影响结果)
import numpy as np
import pandas as pd
data2 = pd.read_csv('ex1data2.txt',names=['size','house','cost'])
print(data2.describe())
#数据归一化
data2 = (data2 - data2.mean()) / data2.std()
#偏置单元x0
data2.insert(0, 'Ones', 1)
#选取元素
cols = data2.shape[1]
X = data2.iloc[:,0:cols-1]
y = data2.iloc[:,cols-1:cols]
#转化成矩阵
X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0,0]))
#初始化代价函数
def J(x,y,theta):
temp = np.power(((x * theta.T) - y),2) # .T 一定要小心
return np.sum(temp) / (2 * len(x))
print(J(X,y,theta))
#梯度下降公式
def gradDescent(x,y,theta,alpa,iters):
temp = np.matrix(np.zeros(theta.shape)) #创建和theta同行同列的全0矩阵
parameters = int(theta.shape[1]) #得到列数,就是theta的数量 ;revel()合并矩阵,可以删掉!
cost = np.zeros(iters) # 每一次循环得到的代价值
for i in range(iters):
error = (x * theta.T) - y
for j in range(parameters):
temp1 = np.multiply(error,x[:,j]) #x[:,j] 就是第j列的所有数据
temp[0,j] = theta[0,j] - ((alpa / len(x)) * np.sum(temp1)) # 每一个theta 所得的值
theta = temp
cost[i] = J(x,y,theta) # 就是每一次梯度下降后所得的代价值
return theta,cost # 数值型一般需要返回值
theta1,cost = gradDescent(X,y
4000
,theta,alpa=0.1,iters=1000)
print(theta1)
print(J(X,y,theta1))
相关文章推荐
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)Python3.x
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结
- Stanford coursera Andrew Ng 机器学习课程第二周总结(附Exercise 1)
- Stanford coursera Andrew Ng 机器学习课程第四周总结(附Exercise 3)
- stanford coursera 机器学习编程作业 exercise 3(使用神经网络 识别手写的阿拉伯数字(0-9))
- stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
- stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
- stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 9(二)——推荐系统作业
- stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)
- 关于Coursera上的斯坦福机器学习课程的编程作业提交问题
- coursera斯坦福Andrew Ng的机器学习编程作业答案
- 斯坦福机器学习Coursera课程:第八次作业--推荐系统
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 4——神经网络(一)
- 斯坦福机器学习Coursera课程:第三周作业--逻辑回归
- Coursera—machine learning(Andrew Ng)第四周编程作业
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Tensorflow+tutorial(2-3)
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 1——简单的线性回归模型和梯度下降
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 6(一)—— 机器学习诊断、偏差与方差