Что такое JSONP?
Важная вещь, которую нужно запомнить с помощью jsonp, заключается в том, что на самом деле это не протокол или тип данных. Его просто способ загрузки скрипта «на лету» и обработки скрипта, который вводится на страницу. В духе JSONP это означает введение нового javascript-объекта с сервера в клиентское приложение / скрипт.
Когда нужен JSONP?
Это один способ разрешить один домен для доступа / обработки данных от другого на одной странице асинхронно. Прежде всего, он используется для переопределения ограничений CORS (Cross Origin Resource Sharing), которые могут возникнуть с запросом XHR (ajax).
Как это делается
Представление нового объекта JavaScript с сервера может быть реализовано по-разному, но наиболее распространенная практика заключается в том, что сервер для реализации выполнения функции обратного вызова с требуемым объектом, переданным в него. Функция обратного вызова - это только функция, которую вы уже настроили на клиенте, который сценарий загружает вызовы в точке , загружаемые скриптом для обработки переданных ему данных.
Пример:
У меня есть приложение, которое регистрирует все предметы в чьем-то доме. Мое приложение настроено, и теперь я хочу получить все предметы в главной спальне.
Мое приложение находится на app.home.com
. Мне нужно загрузить данные apis из api.home.com
.
Если сервер явно не установлен для его разрешения, я не могу использовать ajax для загрузки этих данных, так как даже страницы на отдельных субдоменах подвержены ограничениям XHR CORS.
В идеале, установите вещи, позволяющие X-домен XHR
В идеале, поскольку api и app находятся в одном домене, у меня может быть доступ к настройке заголовков на api.home.com
. Если да, я могу добавить элемент заголовка Access-Control-Allow-Origin:
, предоставляющий доступ к app.home.com
. Предполагая, что заголовок настроен следующим образом: Access-Control-Allow-Origin: "http://app.home.com"
, это гораздо безопаснее, чем настройка JSONP. Это связано с тем, что app.home.com
может получить все, что хочет от api.home.com
без api.home.com
, предоставляя CORS доступ ко всему интернету.
Вышеупомянутое решение XHR невозможно. Настройка JSONP На моем клиентском скрипте: я настроил функцию для обработки ответа с сервера, когда я делаю вызов JSONP. :
function processJSONPResponse(data) {
var dataFromServer = data;
}
Серверу необходимо будет чтобы вернуть мини-скрипт, выглядящий как "processJSONPResponse({"room":"main bedroom","items":["bed","chest of drawers"]});"
. Он может быть сконструирован так, чтобы возвращать такую строку, если вызывается что-то вроде //api.home.com?getdata=room&room=main_bedroom
.
Затем клиент устанавливает тег сценария как таковой:
var script = document.createElement('script');
script.src = '//api.home.com?getdata=room&room=main_bedroom';
document.querySelector('head').appendChild(script);
Загружает скрипт и сразу вызывает window.processJSONPResponse()
как написанный / эхо / распечатанный сервером. Данные, переданные в качестве параметра функции, теперь сохраняются в локальной переменной dataFromServer
, и вы можете делать с ней все, что вам нужно.
Очистить
После того, как клиент данные, т.е. сразу после добавления сценария в DOM, элемент сценария может быть удален из DOM:
script.parentNode.removeChild(script);
В двоичной классификации вы всегда имеете две группы. Одна из этих групп будет соответствовать наблюдениям, которые вы хотите обнаружить. В зависимости от области исследований ее можно назвать несколькими способами, но общие термины включают hit , положительный или случай .
Напротив, наблюдения, которые не имеют того, что вы хотите обнаружить, помечены negative , miss или control .
Таким образом, в pROC это называется control и case , но вы можете думать об этом как отрицательный и положительный , соответственно.
Вам не нужно проверять количество доступных элементов управления и случаев. pROC выполнит эту проверку для вас, и цифры, которые были фактически использованы, будут сообщены, когда вы print
на кривой.
Из help(roc)
:
элементы управления, случаи вместо ответа, предиктор, данные могут быть представлены в виде двух числовых или упорядоченных векторов, содержащих значения предиктора для контроля и наблюдения за случаями.
blockquote>Обычно кривая roc используется в параметрах classificaiton, где у вас есть два вектора помеченных классов (
factor()
в R), один - ваши предсказанные метки, а другой - истина, снова каждая obs [. g3]. Иногда вы можете иметь контрольную группу (например, в сценариях медицины), и вы можете дать функцию либо элементам управления (числовому вектору), либо случаям (вектор факторов).
Контрольная группа в основном является частью населения, где вы не даете лечения.
Опять из функции
help
:Данные могут быть предоставляемый в качестве ответа, предиктор, где предсказатель представляет собой числовой (или упорядоченный) уровень оцениваемого сигнала, а ответ кодирует класс наблюдения (контроль или случай). Аргумент уровня указывает, какой уровень ответа следует принимать в качестве контроля (первое значение уровня) или случаев (второй). Его можно безопасно игнорировать, когда ответ кодируется как 0 и 1, но он часто терпит неудачу в противном случае. По умолчанию принимаются первые два значения уровней (as.factor (response)), а остальные уровни игнорируются. Это означает, что если ваш ответ закодирован «контроль» и «случай», уровни будут инвертированы.
В некоторых случаях удобнее передавать данные как элементы управления, случаи, но оба аргумента игнорируется, если ответ, предиктор был указан для значений, отличных от NULL. Кроме того, можно передавать данные плотности с помощью плотности .controls, density.cases, что приведет к сглаженной кривой ROC, даже если smooth = FALSE, но игнорируются, если предусмотрены ответ, предсказатель или элементы управления.
< / blockquote>data(aSAH) # With numeric controls/cases roc(controls=aSAH$s100b[aSAH$outcome=="Good"], cases=aSAH$s100b[aSAH$outcome=="Poor"]) # With ordered controls/cases roc(controls=aSAH$wfns[aSAH$outcome=="Good"], cases=aSAH$wfns[aSAH$outcome=="Poor"])
речь идет о конкретном случае или о функционировании кривых ROC в целом? Если вы застряли в R в проекте кривой ROC, напишите код. Это легче объяснить, когда вы приводите пример.