chuckiferd:
The only thing "dammed" about knights is their 70 shield price tag

The only thing "dammed" about horses is their 30 shield price tag for archer's combat ability
Seriously though:
The dice aren't weighed. It's been tested hundreds of times, and the developers even mentioned that they didn't code any "bias against the player" in the combat rules.
1)
Check the game in my sig. Read all the combats that happened. I had
very good luck in this game, and won ~90% of my battles where my odds were 60% or less chance of winning (Like 2 spears fending fending off 7 swords, archers winning all but 1 battles against swords, one spear fending off 2 knights...).
According to my game, combat loves the human
2)
You may not be considering defense bonuses.
Pike fortified on grassland = DEFENSE 4 (it has +35%) (it's actually 4.05, but I think decimal is lost)
Also, defensive bombard (archers) lowers chances of attackers winning.
3)
You may need to consider cost
1 Knight = 70 shields = 2 Pikes and 1 warrior
So if you send a few knights to attack a city....
You're fighting LOTS of pikes at 50% chances for each battle...
That's a lot of coin flips you need to win.
Please run a test. I dare you

In fact, since my 1 AWDG game finally died, I may run tests myself
EDIT:
@ MAS
A spearman on flat terrain still has a 10% def bonus.
Is this correct?
In programming world, I think ATT & DEF are truncated to INTEGERS.
So I believe spear on flatland only has 2 defense, not 2.1
And a warrior fortified on a hill has 1 + .25 + .5 = 1.75 -> 1 defense. Still just 1.
Can anyone confirm this is how Civ3 works?
Example:
int actualValue;
float calculationValue;
calculationValue = 1.0 + .25 + .50 = 1.75
actualValue = int( UNIT_BASE_DEFENSE x calculationValue)
So when actualValue is stored, it loses the decimal...