I should also mention how I chose the resistor values, since that is something that can be tuned to individual preference.
10k resistors for the LED current limiting is quite weak and the LEDs are only dimly lit. That is by choice so I can stare at them comfortably continuously while counting which ones are lit. They are very viewable in a dim room, but could get washed out with bright ambient lighting. You may wish to choose something in the 1k to 3k range for better visibility.
I also chose 10k resistors for the I2C pullups. I really like this value for I2C pullups, at least for peripherals. Besides being one of the most common resistor values you may have laying around, it is usually just strong enough to run at a reasonable speed, but weak enough that it would rarely overload the open drain drivers when combined with any other pullups on the bus. If this were the I2C host, I would probably use stronger 3.3k or 2.2k Ohm resistors, but 10k is a nice safe value for a peripheral when you don't know what is on the other end.
These assumptions are based on a 3.3V supply, but the PCF8574 is also rated for 5V operation and 10k resistors should operate safely with 5V, providing better LED visibility.