Коэффициенты-картография в 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

Это хорошо сопоставляет вещи для меня.

Другие вопросы по тегам