2016-04-02 14 views
1

Makine öğrenimi için yeni biriyim. Belirli bir modeli takip eden "oluşturulmuş" verilerle doğrusal regresyon kullanarak basit bir tahmin çalışıyorum. Bazı nedenlerden ötürü, tahmin eğitim verisi ile uyuşmuyor. Düzeltmem gereken şeyi bilmeme izin verir misin? Örnek kodDoğrusal regresyon tahmini, eğitim verilerini eşleştirmiyor

from sklearn import linear_model 
import numpy as np 

X = np.random.randint(3, size=(3, 1000)) 
Y = np.random.randint(10, size=(1, 1000)) 
# f1, f2, f3 - min = 0, max = 2 
# f1 = 0 and f2 = 1 then 7 <= Y < 10, irrespective of f3 
# f1 = 1 and f2 = 2 Y is 0, irrespective of f3 
# f1 = 0 and f2 = 2 if f3 = 2 then 3 <= Y < 7 else Y = 0 
for i in range(1000): 
    if ((X[0][i] == 0 and X[1][i] == 1) or (X[0][i] == 1 and X[1][i] == 0)): 
     Y[0][i] = np.random.randint(7, 10) 
    elif ((X[0][i] == 1 and X[1][i] == 2) or (X[0][i] == 2 and X[1][i] == 1)): 
     Y[0][i] = 0 
    elif ((X[0][i] == 0 and X[1][i] == 2 and X[2][i] == 2) or 
     (X[0][i] == 2 and X[1][i] == 0 and X[2][i] == 2)): 
     Y[0][i] = np.random.randint(3, 7) 
    else: 
     Y[0][i] = 0 

X1 = X.transpose() 
Y1 = Y.reshape(-1, 1) 
print zip(X1, Y1) 

# create and fit the model 
clf = linear_model.LinearRegression() 
clf.fit(X1, Y1) 

Z = np.array([[0, 0, 0, 0, 1, 1], 
       [1, 1, 2, 2, 2, 2], 
       [1, 2, 1, 2, 1, 2]]) 
Z1 = Z.transpose() 
print Z1 

y_predict = clf.predict(Z1) 
print y_predict 

cevap

1

'un altındadır ve neden eğitim verileriyle eşleşmelidir? X-> Y ilişkiniz açıkça doğrusal değildir ve sadece mükemmel doğrusal ilişki için, yani Y = AX + b, egzersiz verilerini mükemmel şekilde uydurmak için doğrusal regresyon bekleyebilirsiniz. Aksi takdirde, çözümden uzak bir şekilde keyfi alabilirsiniz - örneğin bir Anscombe dörtlüsüne bakın (wiki'den resim).

enter image description here

+0

Tabii eğitim verileri bu tür için daha iyi bir algoritma nedir? – user6147957

+0

Tek bir karar/gerileme ağacı (veya çok küçük bir rasgele orman) onu iyi işlemelidir. – lejlot

+0

Teşekkürler kararsızdı iyi çalıştı – user6147957

İlgili konular