It really should be PSD. The reason adding a small diagonal is done is because while the kernel may be positive definite on paper, it’s off numerically a tiny bit. The added bit to the diagonal makes is PSD on the computer too. If you have to add a larger value that early always means something is wrong. The magic number that nearly every GP library uses is 1e-6.
Did you modify ISLAND DISTANCES at all?
I’m able to run this without issues:
import pandas as pd
from io import StringIO
import scipy as sp
import numpy as np
D = pd.read_csv(StringIO(
"""Malekula;Tikopia;Santa Cruz;Yap;Lau Fiji;Trobriand;Chuuk;Manus;Tonga;Hawaii
0.0;0.475;0.631;4.363;1.234;2.036;3.178;2.794;1.86;5.678
0.475;0.0;0.315;4.173;1.236;2.007;2.877;2.67;1.965;5.283
0.631;0.315;0.0;3.859;1.55;1.708;2.588;2.356;2.279;5.401
4.363;4.173;3.859;0.0;5.391;2.462;1.555;1.616;6.136;7.178
1.234;1.236;1.55;5.391;0.0;3.219;4.027;3.906;0.763;4.884
2.036;2.007;1.708;2.462;3.219;0.0;1.801;0.85;3.893;6.653
3.178;2.877;2.588;1.555;4.027;1.801;0.0;1.213;4.789;5.787
2.794;2.67;2.356;1.616;3.906;0.85;1.213;0.0;4.622;6.722
1.86;1.965;2.279;6.136;0.763;3.893;4.789;4.622;0.0;5.037
5.678;5.283;5.401;7.178;4.884;6.653;5.787;6.722;5.037;0.0"""), sep=";").values
K = np.exp(-D**2)
sp.linalg.cholesky(K + 1e-6 * np.eye(D.shape[0]))