Heat the oven to 350°F and (optionally) line two large baking pans with foil.
Break the cauliflower into bite-sized florets and put into a large bowl. Pour 4 tablespoons of oil over the florets (or mix enough to coat them properly), then sprinkle with 1 teaspoon of salt. Mix with your hands until they’re completely coated, and place in a single layer in the baking pans. Roast for 30 to 40 minutes, until tender and nicely browned in places. Check every 10 minutes—if the florets start to burn, cover them loosely with foil.
In the meantime, put 3 tablespoons of oil into a large frying pan over medium heat and, when hot, add the onions. Cook for 12 to 15 minutes, until soft and browning, then crush or grate in the garlic and grate in the ginger. Fry for a couple of minutes, then add the ground cardamom, black pepper, garam masala, ground red chile, ground almonds, honey and 1 1/4 teaspoons of salt (or to taste). Stir-fry for 3 minutes, then add the yogurt.
Turn the heat down to low and cook for around 10 minutes, until the sauce starts to turn a rich gold. When the cauliflower is tender, tip it ino the sauce and stir to coat. Thin the sauce to the consistency of pouring yogurt with milk, and heat through. Check for seasoning, as you may need to add a little more salt.
Finally, put a small frying pan over medium heat and, when hot, add the raisins and sliced almonds. Stir-fry until the raisins start to blacken and puff up and the almonds turn golden brown, then take off the heat.