Исключение фактически не вызывается конструктором суперкласса; он (или, по крайней мере, объявляется потенциально брошенным), вызывается URI.toURL()
, который вы вызываете в свой аргумент в конструктор суперкласса.
Один из вариантов - написать статический метод для преобразования этого исключения в непроверенный:
private static URL convertFileToURL(File file) {
try {
return file.toURI().toURL();
} catch (MalformedURLException e) {
throw new RuntimeException("Unable to convert file to URL", e);
}
}
Затем:
private loader(ClassLoader paramClassLoader, File paramFile){
super(new URL[] { convertFileToURL(paramFile) }, paramClassLoader);
if (paramClassLoader == null)
throw new IllegalArgumentException("Error loading class");
}
Это предполагает, что вы рассматриваете это как нечто, чего в принципе не может быть, или на что вы не хотите, чтобы звонящие заботились о них. Я не знаю достаточно о URI.toURL
, чтобы узнать, действительно ли это в отношении URI на основе файлов.
Если вызывающие должны заботиться, потому что это может произойти в реальной жизни, и они должны иметь дело с этим (что я считаю маловероятным, если честно), вы должны просто заявить, что ваш конструктор может исключить исключение.
В качестве стороннего, пожалуйста, переименуйте свой класс в что-то более значимое, которое следует за соглашениями об именах Java.
fetch_mldata
будет по умолчанию проверять данные в `` ~ / scikit_learn_data / mldata ', чтобы узнать, загружен ли набор данных или нет.
Согласно исходному коду
# if the file does not exist, download it
if not exists(filename):
urlname = MLDATA_BASE_URL % quote(dataname)
Итак, в вашем случае он проверит местоположение
~/scikit_learn_data/mldata/mnist-original.mat
, и если он не найден, он будет загружен из
http://mldata.org/repository/data/download/matlab/mnist-original.mat
, который в настоящее время не работает, как вы подозревали.
Итак, что вы можете сделать, это загрузить набор данных из любого другого местоположения, подобного этому:
https://github.com/amplab/datascience-sp14/blob/master/lab7/mldata/mnist-original.mat
и сохранить это в указанной выше папке.
После этого при запуске fetch_mldata()
он должен выбрать загруженный набор данных без подключения mldata.org.
Здесь ~
относится к домашняя папка пользователя. Вы можете использовать следующий код, чтобы узнать местоположение по умолчанию этой папки в соответствии с вашей системой.
from sklearn.datasets import get_data_home
print(get_data_home())
~/
в файлах?~/scikit_learn_data/mldata/mnist-original.mat
указывает на папкуscikit_learn_data
внутри моей папки проекта (и которая находится рядом с исполняемым файлом python?) – Piotrek 12 July 2018 в 11:40~
означает путь к домашней папке. Вы используете окна или Linux? – Vivek Kumar 12 July 2018 в 12:44