Big-hitting opener Chris Gayle returned for the West Indies after sitting out their dead rubber defeat to Afghanistan, with Evin Lewis making way.
Lendl Simmons also came in for the injured Andre Fletcher.
India also made two changes to the team that defeated Australia on Sunday, with Ajinkya Rahane and Manish Pandey replacing Shikhar Dhawan and the injured Yuvraj Singh.
The victors will take on England in Sunday's final at Eden Gardens in Kolkata after Eoin Morgan's side defeated New Zealand in the first last-four match.
India: Mahendra Singh Dhoni (capt), Rohit Sharma, Virat Kohli, Suresh Raina, Hardik Pandya, Ravindra Jadeja, Ravichandran Ashwin, Ashish Nehra, Jasprit Bumrah, Ajinkya Rahane, Manish Pandey
West Indies: Darren Sammy (capt), Chris Gayle, Johnson Charles, Marlon Samuels, Dwayne Bravo, Denesh Ramdin, Andre Russell, Carlos Brathwaite, Samuel Badree, Sulieman Benn, Lendl Simmons
Umpires: Ian Gould (ENG) and Richard Kettleborough (ENG)
TV umpire: Marais Erasmus (RSA
Match referee: Chris Broad (ENG)
Reserve umpire: Michael Gough (ENG) - AFP
Original source: #WT20 Semi2 Windies opt to field first