Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def fit_and_get_errors(X_train, X_test, y_train, y_test):
- Train_err=[]
- Test_err=[]
- for d in range(1, 21):
- X_tilda,w = get_model(X_train, y_train, d)
- h1, E_train = get_prediction_and_error(X_tilda, y_train, w)
- Train_err.append(np.log(E_train))
- X_temp, w1 = get_model(X_train, y_train, d)
- h2, E_test = get_prediction_and_error(X_temp, y_test, w)
- Test_err.append(np.log(E_test))
- return Train_err, Test_err
- #plotanje
- fig, axs = plt.subplots(3, 3, figsize=(15, 15))
- axs = axs.ravel()
- degree=list(range(1, 21))
- noise = [100, 200, 500]
- # N = [50, 100, 500] #ovliko cemo uzmiat iz test/train skupa
- K = [1/3, 2/3, 1]
- X = make_instances(-5,5,1000)
- X_train, X_test = train_test_split(X, test_size=0.5)
- for i, sigma in enumerate(noise):
- y = list(make_labels(X_train, f, sigma))
- y_train = np.array(y)
- y = list(make_labels(X_test,f,sigma))
- y_test = np.array(y)
- for j, n in enumerate(K):
- number_of_examples=math.floor(n*500)
- index_list = np.random.choice(np.arange(500), number_of_examples, replace=False)
- X1_train = X_train[index_list]
- y1_train = y_train[index_list]
- # index_list = np.random.choice(np.arange(500), number_of_examples, replace=False)
- X1_test = X_test[index_list]
- y1_test = y_test[index_list]
- #dobivanje train i test erora
- train,test=fit_and_get_errors(X1_train,X1_test,y1_train,y1_test)
- axs[i*3+j].set_title("N = " + str(math.ceil(n*500)) + ", noise = " + str(sigma))
- axs[i*3+j].plot(degree,train,label="Train")
- axs[i*3+j].plot(degree,test,label="Test")
- axs[i*3+j].legend()
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement