-
梯度下降的原理
查看全部 -
梯度下降的直接計(jì)算
查看全部 -
最小二乘法模型
查看全部 -
線性回歸的數(shù)學(xué)表示
查看全部 -
實(shí)際的意義
查看全部 -
技術(shù)的背景
查看全部 -
線性回歸的課程安排
查看全部 -
同步更新
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
查看全部 -
梯度下降方法(第二種代碼)可以很好地解決向量方法(第一種)面對大量計(jì)算無法計(jì)算的弊端
而梯度下降更重要的是進(jìn)行同步更新
所以需要一個(gè)temp來進(jìn)行緩存
注意矩陣的形式可能需要變形——
????????????????????????reshape( )(如果出錯(cuò),改成values.reshape( ))
查看全部 -
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? ?#學(xué)習(xí)速率
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]
讀取數(shù)據(jù)方法——定義了一個(gè)函數(shù) iloc()
temp = dataset.iloc[:,2:5]
把X讀出來
temp['x0']=1
偏移
X=temp.iloc[:,[3,0,1,2]]
顯示順序? 第3列? 第0列? 第1列? 第2列
查看全部 -
inv 逆
dot 點(diǎn)乘
mat 矩陣
array 數(shù)組
.T? 轉(zhuǎn)置
查看全部 -
生成‘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)
查看全部
舉報(bào)