-
最小二乘法模型
查看全部 -
线性回归的数学表示
查看全部 -
实际的意义
查看全部 -
技术的背景
查看全部 -
线性回归的课程安排
查看全部 -
同步更新
for i in range(10000):
temp[0]=theta[0] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[1]=theta[1] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[2]=theta[2] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[3]=theta[3] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
theta=temp
查看全部 -
import numpy as np
from numpy.linalg import inv
from numpy import dot
from numpy import mat
import pandas as pd;
dataset = pd.read_csv('data.csv')
#print(dataset)
temp = dataset.iloc[:,2:5]
temp['X0']=1 #截距
X=temp.iloc[:,[3,0,1,2]] #读取temp的第3,0,1,2列
#print(X)
#iloc[m,n] m-行 n-列
Y=dataset.iloc[:,1].values.reshape(150,1)
#print(Y)
theta = dot(dot(inv(dot(X.T,X)),X.T),Y)
print(theta)
theta=np.array([1.,1.,1.,1.]).reshape(4,1)
alpha=0.1 #学习速率
X0=X.iloc[:,0].values.reshape(150,1)
X1=X.iloc[:,1].values.reshape(150,1)
X2=X.iloc[:,2].values.reshape(150,1)
X3=X.iloc[:,3].values.reshape(150,1)
for i in range(10000):
temp[0]=theta[0] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[1]=theta[1] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[2]=theta[2] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
temp[3]=theta[3] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0
theta=temp
print(theta)
查看全部 -
temp=dataset.iloc[:,2:5]
读取数据方法——定义了一个函数 iloc()
temp = dataset.iloc[:,2:5]
把X读出来
temp['x0']=1
偏移
X=temp.iloc[:,[3,0,1,2]]
显示顺序 第3列 第0列 第1列 第2列
查看全部 -
生成‘data.csv’文件的python代码
import random
def Y(X1, X2, X3):
return 0.65 * X1 + 0.70 * X2 - 0.55 * X3 + 1.95
def Produce():
filename = 'data.csv'
with open(filename, 'w') as file:
file.write('X1,X2,X3,Y\n')
for i in range(200):
random.seed()
x1 = random.random() * 10
x2 = random.random() * 10
x3 = random.random() * 10
y = Y(x1, x2, x3)
try:
file.write(str(x1) + ',' + str(x2) + ',' + str(x3) + ',' + str(y) + '\n')
except Exception as e:
print ('Write Error')
print (str(e))
Produce()
查看全部 -
在命令行行python文件
》》》python "D:\Python\demo03.py"
查看全部 -
>>> import numpy as np
>>> from numpy.linalg import inv
>>> from numpy import dot
>>> from numpy import mat
>>> import pandas as pd
>>> dataset=pd.read_csv('data.csv')
>>> print(dataset)
查看全部 -
掌握python梯度下降求解线性分析模型参数
θ=theta
alpha是学习速率[0,1]——
//保证梯度下降的速率不要太快,在一个合适的区间之内,是函数迅速收敛,找到局部最小值
theta=theta-alpha(theta * X - Y)*X
np.sum()/组数——加权平均
>>> import numpy as np
>>> from numpy.linalg import inv
>>> from numpy import dot
>>> from numpy import mat
>>> X=mat([1,2,3]).reshape(3,1)
>>> Y=2*X
>>> theta=1.0
>>> alpha=0.1
>>> for i in range(100):
... theta=theta + np.sum(alpha*(Y-dot(X,theta))*X.reshape(1,3))/3.0
...
>>> print(theta)
2.0
>>>
查看全部 -
本次不要截距,用一个过原点的方程来作为例子
y=2x
θ=(X^T X)^-1 * X^T Y
>>> import numpy as np
>>> from numpy.linalg import inv
>>> from numpy import dot
>>> from numpy import mat
>>> X=mat([1,2,3]).reshape(3,1)
>>> Y=2*X
>>> theta=dot(dot(inv(dot(X.T,X)),X.T),Y)
>>> print(theta)
[[2.]]
>>>
查看全部 -
A.reshape(1,2)
把A输出成1行2列的形式
查看全部 -
inv是求矩阵的逆
dot是矩阵点乘dot(A,B)
mat是矩阵是二维的
Array数组维度是一维的
".T" 矩阵的转置
查看全部
举报