How come my switch is triggering with out pushing the button? New here, sorry If my formatting is bad.

int button = 2;
int relay = 3;
int speaker = 4;

void setup() 
{

  pinMode(button, INPUT_PULLUP);
  pinMode(relay, OUTPUT);
  pinMode(speaker, OUTPUT);

}

void loop() 
{
  if(digitalRead(button) == 0)
  {
    digitalWrite(relay, HIGH);
    tone (speaker, 100, 300);
    delay (3000);
  }
  else
  {
    digitalWrite(relay, LOW);
  }
}


I want the relay to trigger and stay open only while the button is pressed.   However for some reason touching pin 2 triggers the relay and sound, even if I'm not connecting it to the ground. 

If i remove the tone (speaker, 100, 300); it only triggers when the button connecting pin 2 to ground is pressed, but obviously doesn't play the tone.
I want the relay to trigger and stay open only while the button is
  pressed. However for some reason touching pin 2 triggers the relay and
  sound, even if I'm not connecting it to the ground.


Touching a pin is like connecting it to ground with a resistor (human body is conductive). It may or may not be stronger then the pull-up resistor.


  If i remove the tone (speaker, 100, 300); it only triggers when the
  button connecting pin 2 to ground is pressed, but obviously doesn't
  play the tone.


Activation of the neighbor pin influences the pull-up on pin 2. Try external pull-up on pin 2.