'How to transform data from nested List for ML.NET purpose

I want to train model using data stored in database, but i don't have idea, how to transform data to correct format. Data will be use for multiclass classification. In my case, I would like to get some answers to a question from users, and finally display to him the predicted answer to the last question.

In msdn i found, that data should be in format:

HousingData[] inMemoryCollection = new HousingData[]
{
    new HousingData
    {
        Size =700f,
        HistoricalPrices = new float[]
        {
            100000f, 3000000f, 250000f
        },
        CurrentPrice = 500000f
    },
    new HousingData
    {
        Size =1000f,
        HistoricalPrices = new float[]
        {
            600000f, 400000f, 650000f
        },
        CurrentPrice=700000f
    }
};

IDataView data = mlContext.Data.LoadFromEnumerable<HousingData>(inMemoryCollection);

My data looks like:

Questionnaire[] mlmodel = new Questionnaire[] {
  new Questionnaire() {
      QuestionnaireAnswers = new List < QuestionnaireAnswer > () {
        new QuestionnaireAnswer() {
            IdQuestion = 1,
              IdAnswer = 1,
          },
          new QuestionnaireAnswer() {
            IdQuestion = 2,
              IdAnswer = 5,
          },
          new QuestionnaireAnswer() {
            IdQuestion = 3,
              IdAnswer = 8,
          },
      }
    },
    new Questionnaire() {
      QuestionnaireAnswers = new List < QuestionnaireAnswer > () {
        new QuestionnaireAnswer() {
            IdQuestion = 1,
              IdAnswer = 2,
          },
          new QuestionnaireAnswer() {
            IdQuestion = 2,
              IdAnswer = 4,
          },
          new QuestionnaireAnswer() {
            IdQuestion = 3,
              IdAnswer = 7,
          },
      }
    },
};

And model :

public class Questionnaire
{
   [Key] public int IdQuestionnaire { get; set; }
   public List<QuestionnaireAnswer> QuestionnaireAnswers { get; set; }
}

public class QuestionnaireAnswer
{
   [Key] public int IdQuestionnaireAnswer { get; set; }
   [ForeignKey(nameof(Questionnaire))] public int IdQuestionnaire { get; set; }
   [ForeignKey(nameof(Question))] public int IdQuestion { get; set; }
   [ForeignKey(nameof(Answer))] public int IdAnswer { get; set; }

   public Questionnaire Questionnaire { get; set; }
   public Question Question { get; set; }
   public Answer Answer { get; set; }
}

public class Question
{
   [Key] public int IdQuestion { get; set; }
   public string Text { get; set; }
   public string Slug { get; set; }
   public bool IsPredicted { get; set; }
   public List<Answer> Answers { get; set; }
}

public class Answer
{
   [Key] public int IdAnswer { get; set; }
   [ForeignKey("Question")] public int IdQuestion { get; set; }
   public string Literal { get; set; }
   public string Text { get; set; }
   public Question Question { get; set; }
}

P.S. for a better understanding of my data structure, below I put in what it would look like in a spreadsheet enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source