I'm having the same trouble with the Ocelot. It was walking towards me and I right clicked it lots of times with the raw fish in hand, but it still only goes into breeding mode and it won't tame them at all.
In the 1.14 "Village and Pillage" update (releasing early 2019), Ocelot behaviour has changed. Ocelots can no longer be tamed, but the same process of feeding them raw fish will instead lead them to "trust" the player. This simply means that once an Ocelot trusts you, it will no longer run from you.
In previous versions of Minecraft, Ocelots are tricky to tame, as they have a specific "begging" mode that they enter, in which they will creep towards the player. Only when they are in this mode, they can be tamed.
- The ocelot must be in "begging for food" mode, characterized by it looking at the player and slowly walking near to the player.
- Entering "begging" mode requires that the player is within 10 blocks (Euclidean distance).
- If the player is within 6 blocks, the ocelot will exit "begging" mode if the player turns too quickly or moves more than a tiny distance.
If you "scare" an ocelot out of the "begging" mode, it will enter breeding mode again, which will cause the Ocelot to show hearts when fed fish.
If the player fails to tame an ocelot, it will still show smoke particles. They will still go into breeding mode, and if there are two such ocelots in the area they will spawn a baby.
Additionally, the only fish that can be fed to an Ocelot is Raw Fish (default) and Raw Salmon. Tropical fish and Pufferfish cannot be fed to Ocelots.
If you have the latest update, ocelot cannot be tamed. You can find and tame a Stray Cat in any village, but ocelot can no longer be turned into cats. They will trust you and allow you to get close to them, but will not actually be tamed.
This is due to requests for the ability to spawn a specific breed of cat, instead of spawning hundreds of ocelots and taming them, just to get a specific breed. Mojang has decided to make the ocelot a completely separate animal from the cat.