0

필자는 열 1의 한 피처의 데이터 세트와 열 0에 추가 된 벡터에 모델을 맞추려고합니다. 시도해도 상관 없이 곡선이 데이터에 잘 맞지 않습니다.선형 회귀 모델 적합하지 않음

다음은 코드입니다.

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 

col = ['id','ri','na','mg','al','si','k','ca','ba','fe','glass_type'] 
data = pd.read_csv('glass.data', names=col, index_col='id') 

x = np.array(data)[:, 0] 
x = x.reshape(np.size(x), 1) 
y = np.array(data)[:, 3] 
y = y.reshape(np.size(y), 1) 


# initialising 
m = np.size(x) 

# appending ones vector in x 
one = np.ones([m, 1], dtype=float) 
x1 = np.append(one, x, axis=1) 

# weight matrix 
theta = np.zeros([2, 1]) 

i_list = [] 
j_l = [] 
error = np.zeros([m, 1]) 


# gradient descent 
for i in range(3500): 
    h = x1.dot(theta) 
    error = h - y 
    theta = theta - (0.0001/m) * np.sum(x1.T.dot(error)) + (1.5/m) * np.sum(np.sum((theta[:, 1:2])**2)) 
    i_list.append(i) 
    j = (1/(2*m)) * np.sum((h-y)**2) 
    j_l.append(j) 


# plotting 
plt.subplot(1, 2, 1) 
plt.plot(x, y, '.r') 
plt.plot(x, x1.dot(theta), '-b') 

plt.subplot(1,2, 2) 
plt.plot(i_list, j_l, '-g') 

plt.show() 

This how the data fits (image) 나에게 그것을 개선 할 수있는 방법을 제안 해주십시오. 고마워요 :)

+0

. 그것은 거의 상관 관계가없는 것으로 보이며 센터의 해당 지점 주변에 집중됩니다. 입력하는 매개 변수 또는 회귀 모델을 변경해보십시오. – Primusa

+0

@primusa 나는 scikit을 사용하여 데이터에 익숙해졌으며 매우 잘 맞았다. – quantumbiker

답변

-1

우선. 쎄타는 모든 업데이트에 대한 정규화로 줄여야합니다. 그것은 정규화의 주요 개념이지만 합계를 취하십시오.

추신. 또한 결과에서 큰 바이어스를 얻을 수있는 큰 정규화 매개 변수를 잊지 마십시오. 이 상황에서는 다른 수준의 정규화를 시도하십시오 (0.03, 0.3, 3, 30, 300). 나는 거기에 또 다른 람다를 넣어보십시오 의미 : 예를 들어

regularization

: 데이터가 들어갈 수 라인처럼 보이지 않는

theta = theta - (0.0001/m) * np.sum(x1.T.dot(error)) + (0.15/m) * np.sum(np.sum((theta[:, 1:2])**2))