Коэффициенты-картография в weka Логистический классификатор
Чтобы вывести коэффициенты, используемые классификатором логистики в Weka, можно использовать методы коэффициентов, как указано здесь: Можно ли проверить веса, полученные классификатором логистической регрессии в weka?,
Тем не менее, не все атрибуты, данные в наборе данных (то есть объект Instances), используются в классификаторе.
Итак, мой вопрос - как я могу создать отображение атрибута-имени \ соответствующего-коэффициента, которое появляется в методе toString()?
например, используя пример toString, я получаю следующий коэффициент:
Я хотел бы иметь отображение следующим образом:
{avgP = -9,6225, BysP=5,3931, степень =0,0016...}
1 ответ
Значение double[][], возвращаемое coefficients(), имеет набор атрибутов, отличный от объекта Instances, который вы передаете в Logistic. Я должен был просмотреть код Weka, чтобы понять, как с этим справиться. Я не смог найти способ получить информацию с помощью методов в Logistic, но вы можете легко продублировать фильтр, который он использует, и получить тот же набор атрибутов для работы.
Я использую Weka как библиотеку в JRuby, и поэтому здесь используется синтаксис Ruby.
import 'weka.filters.unsupervised.attribute.RemoveUseless'
logit_filter = RemoveUseless.new
logit_filter.setInputFormat train_filtered
logit_filtered = Filter.useFilter(train_filtered, logit_filter)
Переменная logit_filtered представляет собой коллекцию Instances, которая отражает то, что создано Logistic, но есть заключительная морщина. Внутренние элементы Logistic сохраняют Intercept в качестве первого элемента double[][], который возвращается с коэффициентами, поэтому мы должны игнорировать первый элемент для сопоставления наборов атрибутов правильно...
java_array = logit.coefficients.to_a #converting java array to ruby
coeffs = java_array.map(&:to_a) #converting second level of java array to ruby
coeffs.each_with_index do |arr, index|
next if index == 0 #this is the Intercept
puts "#{logit_filtered.attribute(index-1).name.to_s}: #{coeffs}"
end
Это хорошо сопоставляет вещи для меня.