def test_krige_housing():
    import ssl
    import urllib

    try:
        housing = fetch_california_housing()
    except (ssl.SSLError, urllib.error.URLError):
        ssl._create_default_https_context = ssl._create_unverified_context
        try:
            housing = fetch_california_housing()
        except PermissionError:
            # This can raise permission error on Appveyor
            pytest.skip("Failed to load california housing dataset")
        ssl._create_default_https_context = ssl.create_default_context

    # take only first 1000
    p = housing["data"][:1000, :-2]
    x = housing["data"][:1000, -2:]
    target = housing["target"][:1000]

    p_train, p_test, y_train, y_test, x_train, x_test = train_test_split(
        p, target, x, train_size=0.7, random_state=10
    )

    for ml_model, krige_method in _methods():

        reg_kr_model = RegressionKriging(
            regression_model=ml_model, method=krige_method, n_closest_points=2
        )
        reg_kr_model.fit(p_train, x_train, y_train)
        if krige_method == "ordinary":
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.5
        else:
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.0
def test_krige_housing():
    try:
        housing = fetch_california_housing()
    except PermissionError:
        # This can raise permission error on Appveyor
        pytest.skip('Failed to load california housing dataset')

    # take only first 1000
    p = housing['data'][:1000, :-2]
    x = housing['data'][:1000, -2:]
    target = housing['target'][:1000]

    p_train, p_test, y_train, y_test, x_train, x_test = \
        train_test_split(p, target, x, train_size=0.7,
                         random_state=10)

    for ml_model, krige_method in _methods():

        reg_kr_model = RegressionKriging(regression_model=ml_model,
                                         method=krige_method,
                                         n_closest_points=2)
        reg_kr_model.fit(p_train, x_train, y_train)
        if krige_method == 'ordinary':
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.5
        else:
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.0
def test_regression_krige():
    np.random.seed(1)
    x = np.linspace(-1.0, 1.0, 100)
    # create a feature matrix with 5 features
    X = np.tile(x, reps=(5, 1)).T
    y = (
        1
        + 5 * X[:, 0]
        - 2 * X[:, 1]
        - 2 * X[:, 2]
        + 3 * X[:, 3]
        + 4 * X[:, 4]
        + 2 * (np.random.rand(100) - 0.5)
    )

    # create lat/lon array
    lon = np.linspace(-180.0, 180.0, 10)
    lat = np.linspace(-90.0, 90.0, 10)
    lon_lat = np.array(list(product(lon, lat)))

    X_train, X_test, y_train, y_test, lon_lat_train, lon_lat_test = train_test_split(
        X, y, lon_lat, train_size=0.7, random_state=10
    )

    for ml_model, krige_method in _methods():
        reg_kr_model = RegressionKriging(
            regression_model=ml_model, method=krige_method, n_closest_points=2
        )
        reg_kr_model.fit(X_train, lon_lat_train, y_train)
        assert reg_kr_model.score(X_test, lon_lat_test, y_test) > 0.25
def test_krige_housing():
    housing = fetch_california_housing()

    # take only first 1000
    p = housing['data'][:1000, :-2]
    x = housing['data'][:1000, -2:]
    target = housing['target'][:1000]

    p_train, p_test, y_train, y_test, x_train, x_test = \
        train_test_split(p, target, x, train_size=0.7,
                         random_state=10)

    for ml_model, krige_method in _methods():

        reg_kr_model = RegressionKriging(regression_model=ml_model,
                                         method=krige_method,
                                         n_closest_points=2)
        reg_kr_model.fit(p_train, x_train, y_train)
        if krige_method == 'ordinary':
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.5
        else:
            assert reg_kr_model.score(p_test, x_test, y_test) > 0.0
def test_regression_krige():
    np.random.seed(1)
    x = np.linspace(-1., 1., 100)
    # create a feature matrix with 5 features
    X = np.tile(x, reps=(5, 1)).T
    y = 1 + 5*X[:, 0] - 2*X[:, 1] - 2*X[:, 2] + 3*X[:, 3] + 4*X[:, 4] + \
        2*(np.random.rand(100) - 0.5)

    # create lat/lon array
    lon = np.linspace(-180., 180.0, 10)
    lat = np.linspace(-90., 90., 10)
    lon_lat = np.array(list(product(lon, lat)))

    X_train, X_test, y_train, y_test, lon_lat_train, lon_lat_test = \
        train_test_split(X, y, lon_lat, train_size=0.7, random_state=10)

    for ml_model, krige_method in _methods():
        reg_kr_model = RegressionKriging(regression_model=ml_model,
                                         method=krige_method,
                                         n_closest_points=2)
        reg_kr_model.fit(X_train, lon_lat_train, y_train)
        assert reg_kr_model.score(X_test, lon_lat_test, y_test) > 0.25
def regression_kriging(file):
    """
    https://pykrige.readthedocs.io/en/latest/examples/regression_kriging2d.html

    :param file:
    :return:
    """
    svr_model = SVR(C=0.1)
    rf_model = RandomForestRegressor(n_estimators=100)
    lr_model = LinearRegression(normalize=True,
                                copy_X=True,
                                fit_intercept=False)

    models = [svr_model, rf_model, lr_model]

    for m in models:
        print('=' * 40)
        print('regression model:', m.__class__.__name__)
        m_rk = RegressionKriging(regression_model=m, n_closest_points=10)
        m_rk.fit(p_train, x_train, target_train)
        print('Regression Score: ',
              m_rk.regression_model.score(p_test, target_test))
        print('RK score: ', m_rk.score(p_test, x_test, target_test))
# take the first 5000 as Kriging is memory intensive
p = housing['data'][:5000, :-2]
x = housing['data'][:5000, -2:]
target = housing['target'][:5000]

p_train, p_test, x_train, x_test, target_train, target_test \
    = train_test_split(p, x, target, test_size=0.3, random_state=42)

for m in models:
    print('=' * 40)
    print('regression model:', m.__class__.__name__)
    m_rk = RegressionKriging(regression_model=m, n_closest_points=10)
    m_rk.fit(p_train, x_train, target_train)
    print('Regression Score: ',
          m_rk.regression_model.score(p_test, target_test))
    print('RK score: ', m_rk.score(p_test, x_test, target_test))

##====================================OUTPUT==================================

# ========================================
#  regression model: <class 'sklearn.svm.classes.SVR'>
# Finished learning regression model
# Finished kriging residuals
# Regression Score:  -0.034053855457
# RK score:  0.66195576665
# ========================================
#  regression model: <class 'sklearn.ensemble.forest.RandomForestRegressor'>
# Finished learning regression model
# Finished kriging residuals
# Regression Score:  0.699771164651
# RK score:  0.737574040386
from pykrige.compat import train_test_split

svr_model = SVR(C=0.1, gamma="auto")
rf_model = RandomForestRegressor(n_estimators=100)
lr_model = LinearRegression(normalize=True, copy_X=True, fit_intercept=False)

models = [svr_model, rf_model, lr_model]

try:
    housing = fetch_california_housing()
except PermissionError:
    # this dataset can occasionally fail to download on Windows
    sys.exit(0)

# take the first 5000 as Kriging is memory intensive
p = housing["data"][:5000, :-2]
x = housing["data"][:5000, -2:]
target = housing["target"][:5000]

p_train, p_test, x_train, x_test, target_train, target_test = train_test_split(
    p, x, target, test_size=0.3, random_state=42)

for m in models:
    print("=" * 40)
    print("regression model:", m.__class__.__name__)
    m_rk = RegressionKriging(regression_model=m, n_closest_points=10)
    m_rk.fit(p_train, x_train, target_train)
    print("Regression Score: ",
          m_rk.regression_model.score(p_test, target_test))
    print("RK score: ", m_rk.score(p_test, x_test, target_test))
# take the first 5000 as Kriging is memory intensive
p = housing['data'][:5000, :-2]
x = housing['data'][:5000, -2:]
target = housing['target'][:5000]

p_train, p_test, x_train, x_test, target_train, target_test \
    = train_test_split(p, x, target, test_size=0.3, random_state=42)

for m in models:
    print('=' * 40)
    print('regression model:', m.__class__.__name__)
    m_rk = RegressionKriging(regression_model=m, n_closest_points=10)
    m_rk.fit(p_train, x_train, target_train)
    print('Regression Score: ', m_rk.regression_model.score(p_test, target_test))
    print('RK score: ', m_rk.score(p_test, x_test, target_test))

##====================================OUTPUT==================================

# ========================================
#  regression model: <class 'sklearn.svm.classes.SVR'>
# Finished learning regression model
# Finished kriging residuals
# Regression Score:  -0.034053855457
# RK score:  0.66195576665
# ========================================
#  regression model: <class 'sklearn.ensemble.forest.RandomForestRegressor'>
# Finished learning regression model
# Finished kriging residuals
# Regression Score:  0.699771164651
# RK score:  0.737574040386