Preheat the oven to 350 degrees F. Prepare a cupcake pan with liners.
In a bowl, whisk together the flour, cardamom, baking powder, baking soda, and salt.
In a large bowl, whisk together the canola oil and sugar. Add in the eggs one at a time, whisking thoroughly between each one.
Add the milk, sour cream, and vanilla to the wet ingredients and whisk until well combined.
Add the dry ingredients into the wet ingredients and mix just until combined.
Fill the prepared cupcake pan until each liner is about 2/3rds full.
Bake for 16 to 19 minutes or until a toothpick inserted into the center of a cupcake comes out clean.
Carefully remove the cupcakes from the pan and allow them to cool on a wire rack until completely cool, about 1 hour.
To make the frosting, cream together the butter and cream cheese for 5 minutes. Then, add the powdered sugar, cinnamon, and vanilla and cream for another 5 minutes.
Using a pastry bag fitted with your favorite piping tip top each cupcake with a generous amount of frosting.
Store the cupcakes in the fridge.