1 как справиться с перехватом, например, у меня есть стад ie где-то во время обобщения этого для n + 1 объектов, где +1 для перехвата, использовать массив размером n + 1, но не может понять, как рассчитать это во время расчета наклона, хотя я пытался, но я чувствую, что где-то не так, пожалуйста, помогите
def cost(m,data):
total_cost = 0
tot=len(data)
width=len(data.columns)
for i in range(len(data)):
l=[]
for items in data.loc[i,:].iteritems():
l.append(items[1])
for j in range(len(l)):
x=l[j]
y=l[-1]
total_cost += (1/tot)*((y - m[j]*x - m[-1])**2)
return total_cost
def sg(data,lr,m):
m1=np.zeros(len(data.columns))
tot=len(data)
width=len(data.columns)
for i in range(len(data)):
l=[]
for items in data.loc[i,:].iteritems():
l.append(items[1])
for j in range(len(l)):
x=l[j]
y=l[-1]
m1[j]+=(-2/tot)* (y - m[j] * x - m[-1])*x
new_m=m-lr*m1
return new_m
def gd(data,lr,itr):
m=np.zeros(len(data.columns))
m[-1]=1
for i in range(itr):
m=sg(data,lr,m)
print(i, " Cost: ", cost(m,data))
return m
def run():
df=pd.read_csv("fish.csv")
cols = list(df.columns)
a, b = cols.index('Weight'), cols.index('Width')
cols[b], cols[a] = cols[a], cols[b]
df = df[cols]
encode=LabelEncoder()
df.iloc[:,0]=encode.fit_transform(df.iloc[:,0])
lr=0.0001
itr=50
m=gd(df,lr,itr)
print(m)