├── src
├── conftest.py
├── __init__.py
└── ppxgboost
│ ├── __init__.py
│ ├── OPEMetadata.py
│ ├── PPKey.py
│ ├── PPModel.py
│ ├── PaillierAPI.py
│ ├── PPQuery.py
│ ├── PPPrediction.py
│ └── PPTree.py
├── test
├── __init__.py
├── test_files
│ ├── model_file.pkl
│ └── test_prediction_input.csv
├── test_PPKey.py
└── test_ppxg_boost.py
├── examples
├── __init__.py
├── readmitted.ipynb
├── Titanic.ipynb
└── Iris.ipynb
├── NOTICE
├── DEVELOPMENT.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── pyproject.toml
├── README.md
├── CONTRIBUTING.md
├── LICENSE
└── data
├── titanic_test.csv
└── titanic_train.csv
/src/conftest.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 |
--------------------------------------------------------------------------------
/DEVELOPMENT.md:
--------------------------------------------------------------------------------
1 | This code is tested under MacOS (>= Mac OS 10.14), and Ubuntu 18.04
2 | Python version: Python 3.7.3
3 |
--------------------------------------------------------------------------------
/src/__init__.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
--------------------------------------------------------------------------------
/test/test_files/model_file.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/awslabs/privacy-preserving-xgboost-inference/HEAD/test/test_files/model_file.pkl
--------------------------------------------------------------------------------
/src/ppxgboost/__init__.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | # Implement your code here.
5 | __author__ = 'Xianrui Meng'
6 | __version__ = '0.0.1'
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea/
3 | build/
4 | build-tools/
5 | .pytest_cache
6 | __pycache__/
7 | *.egg-info/
8 | .installed.cfg
9 | *.egg
10 | env/
11 | develop-eggs/
12 | dist/
13 | *.ipynb_checkpoints/
14 | examples/tree.txt
15 | .venv
16 | .vscode
17 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | ## Code of Conduct
2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
4 | opensource-codeofconduct@amazon.com with any additional questions or comments.
5 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | # https://ianhopkinson.org.uk/2022/02/understanding-setup-py-setup-cfg-and-pyproject-toml-in-python/
2 | [build-system]
3 | requires = ["setuptools"]
4 | build-backend = "setuptools.build_meta"
5 |
6 | [project]
7 | name = "ppxgboost"
8 | version = "0.0.1"
9 | dependencies = [
10 | "numpy>=1.22.0",
11 | "pandas==1.5.3",
12 | "phe==1.5.0",
13 | "xgboost>=1.6.2",
14 | "pytest==7.2.1",
15 | "pyope==0.2.2",
16 | ]
17 |
18 | [project.optional-dependencies]
19 | examples = ["jupyter", "scikit-learn>=1.0.2",]
20 |
--------------------------------------------------------------------------------
/test/test_files/test_prediction_input.csv:
--------------------------------------------------------------------------------
1 | PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
2 | 892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
3 | 893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
4 | 894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
5 | 895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S
6 | 896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S
7 | 897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S
8 | 898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q
9 | 899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S
10 | 900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C
11 | 901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S
12 | 902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S
13 | 903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S
14 | 904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S
15 | 905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S
16 | 906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S
17 | 907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C
18 | 908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q
19 | 909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C
20 | 910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S
21 | 911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C
22 | 912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C
23 | 913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Privacy-Preserving XGBoost Inference
2 |
3 | ## Description
4 | This repo is a prototype implementation of privacy-preserving XGBoost (https://xgboost.readthedocs.io/en/latest/).
5 | We adopt several property-preserving encryption schemes to encrypt the XGBoost model so that
6 | the privacy-preserving model can predict an encrypted query.
7 |
8 | An extended abstract of this work (https://arxiv.org/abs/2011.04789) appears in Privacy-preserving Machine Learning Workshop at NeurIPS 2020.
9 |
10 | ## Development
11 |
12 | This package requires python>=3.8. Install the dependencies with
13 |
14 | - python -m pip install .
15 |
16 | This command installs the dependencies in a specific order.
17 |
18 | Run the tests with:
19 | - cd test
20 | - python -m pytest
21 |
22 | Install dependencies required to run the examples with:
23 | - python -m pip install .[examples]
24 | Run the examples with:
25 | - cd examples
26 | - jupyter nbconvert --to notebook --execute foo.ipynb --output foo.ipynb
27 | You can clear the notebook output with
28 | - jupyter nbconvert --clear-output --ClearMetadataPreprocessor.enabled=True foo.ipynb
29 |
30 | This package depends on the Paillier partially homomorphic encryption scheme (https://en.wikipedia.org/wiki/Paillier_cryptosystem). It also includes source code for a modified version of Boldyreva et. al.'s order-preserving encryption scheme (https://github.com/tonyo/pyope). The source code is place in the 'third-party/ope/' directory.
31 |
32 | See [DEVELOPMENT.md](./DEVELOPMENT.md)
33 |
34 | ## Security
35 |
36 | See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
37 |
38 | ## License
39 |
40 | This project is licensed under the Apache-2.0 License.
41 |
--------------------------------------------------------------------------------
/test/test_PPKey.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | # This test file tests the Key wrapper (PPKey.py)
5 | from random import randrange
6 | from secrets import token_bytes
7 | from ppxgboost import PaillierAPI as paillier
8 | import ppxgboost.PPKey as PPKey
9 | import pyope.ope as pyope
10 |
11 | # The tests require modified input and output ranges
12 | in_range = pyope.ValueRange(pyope.DEFAULT_IN_RANGE_START, 2 ** 43 - 1)
13 | out_range = pyope.ValueRange(pyope.DEFAULT_OUT_RANGE_START, 2 ** 63 - 1)
14 |
15 | class Test_Key:
16 | def test_get_PPBoost_key(self):
17 | """
18 | Testing the PPBoost Key Wrapper.
19 | """
20 |
21 | # Build the PPModelKey
22 | ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys(in_range, out_range)
23 |
24 | a = randrange(pow(2, 30))
25 | b = randrange(pow(2, 30))
26 |
27 | # test the ope key
28 | ea = ppModelKey.get_ope_encryptor().encrypt(a)
29 | eb = ppModelKey.get_ope_encryptor().encrypt(b)
30 | assert (a < b) == (ea < eb)
31 |
32 | ea = ppModelKey.get_public_key().encrypt(a)
33 | eb = ppModelKey.get_public_key().encrypt(b)
34 | assert ppQueryKey.get_private_key().decrypt(ea + eb) == a + b
35 |
36 | def test_get_private_key(self):
37 | """
38 | Testing the Client Key Wrapper.
39 | """
40 |
41 | # Build the PPQueryKey
42 | ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys(in_range, out_range)
43 |
44 | a = randrange(pow(2, 30))
45 | b = randrange(pow(2, 30))
46 |
47 | # test the ope key
48 | ea = ppQueryKey.get_ope_encryptor().encrypt(a)
49 | eb = ppQueryKey.get_ope_encryptor().encrypt(b)
50 | assert (a < b) == (ea < eb)
51 |
52 | ea = ppModelKey.get_public_key().encrypt(a)
53 | eb = ppModelKey.get_public_key().encrypt(b)
54 | assert ppQueryKey.get_private_key().decrypt(ea + eb) == a + b
55 |
--------------------------------------------------------------------------------
/src/ppxgboost/OPEMetadata.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import pyope.ope as pyope
5 |
6 | class OPEMetadata:
7 | """
8 | OPE encryption takes floating point values in a fixed range and
9 | maps them to an integer range. This metadata defines the input
10 | range for this OPE instance.
11 |
12 | Although it would be nice if the model encryption was context-free,
13 | evaluating a model requires comparing values in an (unknown at encryption time)
14 | query to values in the model itself. Thus the input range for the OPE
15 | instance depends on the comparison values in the model itself as well
16 | as the minimum and maximum values in any query, across all features.
17 | """
18 |
19 | def __init__(self, model, test_data_min, test_data_max, max_num_ope_enc = pyope.DEFAULT_IN_RANGE_END):
20 | """
21 | :param model: plaintext PPXGBoost model
22 | :param test_data_min: minimum value across all features of all (future) queries
23 | :param test_data_max: maximum value across all features of all (future) queries
24 | :param max_num_ope_enc: the maximum number that the OPE encryption can support. This value is also used
25 | as the maximum output of the affine transformation
26 | """
27 | model_min, model_max = model.get_extreme_values()
28 | self.min_val = min(test_data_min, model_min)
29 | self.max_val = max(test_data_max, model_max)
30 | self.max_num_ope_enc = max_num_ope_enc
31 |
32 | def affine_transform(self, x):
33 | """
34 | This affine transformation will linearly rescale [min_val, max_val] to [0, max_num_ope_enc].
35 | Linear rescaling: (x - min_val) * max_num_ope_enc / (max_val - min_val)
36 |
37 | :param x: float in range [min_val, max_val]
38 | :return: int in range [0, max_num_ope_enc]
39 | """
40 | if x > self.max_val or x < self.min_val:
41 | raise Exception('Input ' + str(x) + ' is outside allowed range [' +
42 | str(self.min_val) + ', ' + str(self.max_val) + ']')
43 |
44 | return int((x - self.min_val) * self.max_num_ope_enc / (self.max_val - self.min_val))
45 |
--------------------------------------------------------------------------------
/src/ppxgboost/PPKey.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | from phe import PaillierPrivateKey, PaillierPublicKey
5 | from pyope.ope import OPE, ValueRange, DEFAULT_IN_RANGE_START, DEFAULT_IN_RANGE_END, DEFAULT_OUT_RANGE_START, DEFAULT_OUT_RANGE_END
6 | from secrets import token_bytes
7 | import ppxgboost.PaillierAPI as paillier
8 |
9 |
10 | class PPModelKey:
11 | """
12 | Key used to encrypt a PPModel
13 | """
14 |
15 | def __init__(self, public_key: PaillierPublicKey, prf_key: bytes, ope_encryptor: OPE):
16 | """
17 | :param public_key: Paillier cryptosystem public key
18 | :param prf_key: PRF key
19 | :param ope_encryptor: OPE key
20 | """
21 | # Private Attributes
22 | self.__public_key = public_key
23 | self.__prf_key = prf_key
24 | self.__ope_encryptor = ope_encryptor
25 |
26 | def get_public_key(self):
27 | """
28 | :return: the Paillier public key
29 | """
30 | return self.__public_key
31 |
32 | def get_prf_key(self):
33 | """
34 | :return: the PRF key
35 | """
36 | return self.__prf_key
37 |
38 | def get_ope_encryptor(self):
39 | """
40 | :return: the OPE encrypter
41 | """
42 | return self.__ope_encryptor
43 |
44 |
45 | class PPQueryKey:
46 | """
47 | Key used to encrypt queries and decrypt query results
48 | """
49 |
50 | def __init__(self, private_key: PaillierPrivateKey, prf_key: bytes, ope_encryptor: OPE):
51 | """
52 | :param private_key: Paillier cryptosystem private key
53 | :param prf_key: PRF key
54 | :param ope_encryptor: OPE key
55 | """
56 | # Private Attributes
57 | self.__private_key = private_key
58 | self.__prf_key = prf_key
59 | self.__ope_encryptor = ope_encryptor
60 |
61 | def get_private_key(self):
62 | """
63 | :return: the Paillier private key
64 | """
65 | return self.__private_key
66 |
67 | def get_prf_key(self):
68 | """
69 | :return: the PRF key
70 | """
71 | return self.__prf_key
72 |
73 | def get_ope_encryptor(self):
74 | """
75 | :return: the OPE encrypter
76 | """
77 | return self.__ope_encryptor
78 |
79 | # default OPE parameters
80 | default_input_range = ValueRange(DEFAULT_IN_RANGE_START, DEFAULT_IN_RANGE_END)
81 | default_output_range = ValueRange(DEFAULT_OUT_RANGE_START, DEFAULT_OUT_RANGE_END)
82 |
83 | def generatePPXGBoostKeys(ope_input_range = default_input_range, ope_output_range = default_output_range):
84 | """
85 | Generate keys to encrypt an XGBoost model, encrypt queries, and decrypt query results.
86 |
87 | :return: model encryption keys, query encryption/decryption keys
88 | """
89 |
90 | # token bytes calls the os.urandom().
91 | prf_key = token_bytes(16)
92 | paillier_public_key, paillier_private_key = paillier.he_key_gen()
93 | ope_encryptor = OPE(token_bytes(16), ope_input_range, ope_output_range)
94 | return (PPModelKey(paillier_public_key, prf_key, ope_encryptor), PPQueryKey(paillier_private_key, prf_key, ope_encryptor))
95 |
--------------------------------------------------------------------------------
/src/ppxgboost/PPModel.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import ppxgboost.PPTree as PPTree
5 | from ppxgboost.PPKey import PPModelKey
6 | from ppxgboost.PPQuery import PPQuery
7 | import xgboost
8 | from ppxgboost.OPEMetadata import OPEMetadata
9 |
10 | class PPModel:
11 | """
12 | A representation of an XGBoost model composed of multiple trees.
13 | """
14 |
15 | def __init__(self, trees):
16 | """
17 | :param trees: a list of PPTrees
18 | """
19 |
20 | self.trees = list(trees)
21 |
22 | def eval(self, x: PPQuery):
23 | """
24 | Evaluate the model on the given query.
25 |
26 | :param x: dictionary corresponding to the input
27 | :return: result of evaluating the model on x
28 | """
29 |
30 | return list(map(lambda t: t.eval(x), self.trees))
31 |
32 | def get_features(self):
33 | """
34 | :return: The set of features used by this model
35 | """
36 |
37 | features = set()
38 | for t in self.trees:
39 | features = features.union(t.get_features())
40 | return features
41 |
42 | def get_extreme_values(self):
43 | """
44 | :return: The minimum and maximum comparison values in the model
45 | """
46 |
47 | min_val = float('inf')
48 | max_val = float('-inf')
49 | for t in self.trees:
50 | t_min, t_max = t.get_extreme_values()
51 | min_val = min(min_val, t_min)
52 | max_val = max(max_val, t_max)
53 | return min_val, max_val
54 |
55 | def encrypt(self, pp_boost_key: PPModelKey, metadata: OPEMetadata):
56 | """
57 | Encrypt a plaintext XGBoost model
58 |
59 | :param pp_boost_key: The model encryption key
60 | :param metadata: OPE metadata
61 | :return: a new PPModel corresponding to the encryption of `self`
62 | """
63 |
64 | # use a global dictionary so that we only encrypt each feature once
65 | global_feature_encryption_dict = {}
66 | return PPModel(map(lambda t: t.encrypt(pp_boost_key, metadata, global_feature_encryption_dict), self.trees))
67 |
68 |
69 | def from_xgboost_model(model: xgboost.core.Booster) -> PPModel:
70 | """
71 | Create a PPModel from an xgboost library model.
72 |
73 | :param model: an XGBoost model from the xgboost library
74 | :return: a PPModel corresponding to the input model
75 | """
76 |
77 | # xgboost doesn't provide a way to access the model parameters directly,
78 | # so we convert to the PPModel representation via serialization.
79 | # Specifically, xgboost will return a string representation of the model,
80 | # which we then convert to a PPModel using PPTree deserialization. This
81 | # works because the PPTree serialization was designed to coincide with
82 | # xgboost serialization of a model.
83 |
84 | # get_dump() returns a list strings, each representing a single tree in the model
85 | # We parse this string representation one tree at a time to create
86 | # an internal representation of the model.
87 | trees_dump = model.get_dump()
88 |
89 | # For each string representation of an xgboost tree, parse the representation
90 | # into an internal representation of the tree
91 | output_trees = map(PPTree.parse_tree, trees_dump)
92 |
93 | # output an (internal) XGBoost model
94 | return PPModel(output_trees)
95 |
--------------------------------------------------------------------------------
/src/ppxgboost/PaillierAPI.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import json
5 | import phe
6 |
7 |
8 | # Wrapper of the Paillier encryption scheme.
9 | def he_key_gen(private_keyring=None, n_length=phe.paillier.DEFAULT_KEYSIZE):
10 | """
11 | Key generation of the Paillier homomorphic encryption. The key_gen can take
12 | a private_key and n_length as parameters. The default key length is 2048
13 | :param private_keyring: this parameter is the private key that used to
14 | generate the public key. We usually do not set up this parameter.
15 | :param n_length: the key length -- the default key size is set to 2048.
16 | :return: public/private key pair
17 | """
18 |
19 | public_key, private_key = phe.generate_paillier_keypair(private_keyring, n_length)
20 | return public_key, private_key
21 |
22 | def encrypt(public_key, msg, precision=None):
23 | """
24 | Encode and Paillier encrypt a real number *msg*.
25 |
26 | Args:
27 | msg: an int or float to be encrypted. If int, it must satisfy abs(*msg*) < public_key.n / 3.
28 | If float, it must satisfy abs(*msg* / *precision*) << n / 3
29 | (i.e. if a float is near the limit then detectable
30 | overflow may still occur)
31 | precision (float): Passed to :method:`EncodedNumber.encode`.
32 | If *msg* is a float then *precision* is the maximum
33 | **absolute** error allowed when encoding *msg*. Defaults
34 | to encoding *msg* exactly.
35 |
36 | :param public_key: public key
37 | :param msg: message
38 | :param precision: this is optional, the maximum absolute error allowed when encoding *msg*
39 | :return: Enc(message)
40 | """
41 | return public_key.encrypt(msg, precision)
42 |
43 |
44 | def decrypt(private_key, msg):
45 | """
46 | private_key to decrypt the message
47 | :param private_key: private key
48 | :param msg: encrypted number
49 | :return: decrypt and decode the number
50 | """
51 | return private_key.decrypt(msg)
52 |
53 |
54 | def assert_ciphertext(encrypted_number):
55 | """
56 | Check if *encrypted_number* is a valid EncryptedNumber type
57 | :param encrypted_number: input
58 | exit if it is not.
59 | """
60 | if not isinstance(encrypted_number, phe.EncryptedNumber):
61 | raise ValueError("encrypted input is not a EncryptedNumber Type")
62 |
63 |
64 | def ciphertext_serialization(public_key, encrypted_number):
65 | """
66 | EncryptedNumber:
67 | ciphertext (int) – encrypted representation of the encoded number.
68 | exponent (int) – used by EncodedNumber to keep track of fixed precision. Usually negative.
69 | Exponent will be zero when encrypting an integer.
70 | :param public_key: the public key
71 | :param encrypted_number: encrypted ciphertext
72 | :return:
73 | """
74 | encrypt_with_pub_key = {'public_key': {'n': public_key.n},
75 | 'values': [str(encrypted_number.ciphertext()), encrypted_number.exponent]}
76 | serialised = json.dumps(encrypt_with_pub_key)
77 | return serialised
78 |
79 |
80 | def ciphertext_deserialization(serialised):
81 | """
82 | EncryptedNumber: ciphertext (int), exponent (int).
83 | :param serialised json format
84 | :return: public key and the ciphertext.
85 | """
86 | received_dict = json.loads(serialised)
87 | pk = received_dict['public_key']
88 | public_key_rec = phe.paillier.PaillierPublicKey(n=int(pk['n']))
89 | enc_nums_rec = phe.paillier.EncryptedNumber(public_key_rec, int(received_dict['values'][0]),
90 | int(received_dict['values'][1]))
91 | return public_key_rec, enc_nums_rec
92 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing Guidelines
2 |
3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
4 | documentation, we greatly value feedback and contributions from our community.
5 |
6 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
7 | information to effectively respond to your bug report or contribution.
8 |
9 |
10 | ## Security
11 | This work is research prototype and it has not been used or tested in production environment. Privacy-preserving XGBoost uses a non-standard security model.
12 | Unlike a traditional security model (such as [semantic security](https://en.wikipedia.org/wiki/Semantic_security)), the model operator learns information about clients' encrypted queries (for instance, the relative order, i.e encrypted value x > encrypted value y).
13 | The model operator might also learn how one encrypted query might be related to another. In particular, the model operator can detect whether the encrypted response is the same.
14 | We recommend users read the detailed security analysis in our paper (https://arxiv.org/abs/2011.04789).
15 |
16 | ## Reporting Bugs/Feature Requests
17 |
18 | We welcome you to use the GitHub issue tracker to report bugs or suggest features.
19 |
20 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already
21 | reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
22 |
23 | * A reproducible test case or series of steps
24 | * The version of our code being used
25 | * Any modifications you've made relevant to the bug
26 | * Anything unusual about your environment or deployment
27 |
28 |
29 | ## Contributing via Pull Requests
30 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
31 |
32 | 1. You are working against the latest source on the *master* branch.
33 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
34 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
35 |
36 | To send us a pull request, please:
37 |
38 | 1. Fork the repository.
39 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
40 | 3. Ensure local tests pass.
41 | 4. Commit to your fork using clear commit messages.
42 | 5. Send us a pull request, answering any default questions in the pull request interface.
43 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
44 |
45 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
46 | [creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
47 |
48 |
49 | ## Finding contributions to work on
50 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start.
51 |
52 |
53 | ## Code of Conduct
54 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
55 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
56 | opensource-codeofconduct@amazon.com with any additional questions or comments.
57 |
58 |
59 | ## Security issue notifications
60 | If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue.
61 |
62 |
63 | ## Licensing
64 |
65 | See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
66 |
67 | We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes.
68 |
--------------------------------------------------------------------------------
/src/ppxgboost/PPQuery.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import math
5 | import pandas as pd
6 | import base64
7 | import encodings
8 | import hashlib
9 | import hmac
10 |
11 | from ppxgboost.OPEMetadata import *
12 | from ppxgboost.PPKey import PPQueryKey
13 |
14 | def hmac_msg(prf_key_hash: bytes, feature):
15 | """
16 | HMAC of a string using the provided key
17 |
18 | :param prf_key_hash: hash key as bytes
19 | :param feature: feature name as a string (encoded using 'UTF-8')
20 | :return: HMAC of feature name
21 | """
22 |
23 | # The encryption scheme requires a PRF to create 'pseudonyms' for the features.
24 | # We instantiate the PRF with HMAC using utf-8 encoding (python3) for feature names.
25 | # A reference that shows HMAC is a PRF (see Theorem 1 in https://eprint.iacr.org/2014/578.pdf)
26 | message = bytes(feature, encodings.utf_8.getregentry().name)
27 | sig = base64.b64encode(hmac.new(prf_key_hash, message, hashlib.sha256).digest())
28 | return sig.decode()
29 |
30 | class PPQuery:
31 | """
32 | PPXGBoost query object
33 | """
34 |
35 | def __init__(self, query_dict):
36 | """
37 | :param query_dict: A dictionary containing the query labels and values
38 | """
39 | self.query_dict = query_dict
40 |
41 | class QueryEncryptor:
42 | """
43 | Encryptor object for queries
44 | """
45 |
46 | def __init__(self, query_key: PPQueryKey, feature_set, metadata: OPEMetadata):
47 | """
48 | :param query_key: The query encryption/decryption key
49 | :param feature_set: The set of model features to encrypt in a query
50 | :param metadata: OPE metadata
51 | """
52 |
53 | self.key = query_key
54 | self.feature_set = feature_set
55 | self.metadata = metadata
56 | self.feature_name_map = {}
57 | for f in self.feature_set:
58 | self.feature_name_map[f] = hmac_msg(self.key.get_prf_key(), f)
59 |
60 | def encrypt_query(self, query: PPQuery):
61 | """
62 | Encrypt a single query by HMACing each feature name and OPE-encrypting
63 | each value.
64 |
65 | :param query: An unencrypted PPQuery
66 | :return: An encrypted PPQuery
67 | """
68 |
69 | encrypted_query = {}
70 | for k, v in query.query_dict.items():
71 | if k not in self.feature_set:
72 | continue
73 |
74 | # TODO: datasets in the tests *do* contain NaN
75 | # but this leaks where NaNs are...
76 | if math.isnan(v):
77 | encrypted_val = v
78 | else:
79 | normalized_val = self.metadata.affine_transform(v)
80 |
81 | if normalized_val > self.metadata.max_num_ope_enc or normalized_val < 0:
82 | raise Exception("Invalid input: input is out of range (0, " + str(self.metadata.max_num_ope_enc) +
83 | "). The system cannot encrypt", normalized_val)
84 | encrypted_val = self.key.get_ope_encryptor().encrypt(int(normalized_val))
85 | encrypted_query[self.feature_name_map[k]] = encrypted_val
86 | return PPQuery(encrypted_query)
87 |
88 | def encrypt_queries(encryptor: QueryEncryptor, queries: [PPQuery]):
89 | return list(map(lambda q: encryptor.encrypt_query(q), queries))
90 |
91 | def pandas_to_queries(data_set: pd.DataFrame):
92 | """
93 | Convert data parsed with pandas into a list of queries
94 |
95 | :param data_set: A pandas data frame
96 | :return: list of queries
97 | """
98 |
99 | queries = []
100 | for i, row in data_set.iterrows():
101 | query = {}
102 | for feature in list(data_set.columns.values):
103 | query[feature] = row[feature]
104 | queries.append(PPQuery(query))
105 | return queries
106 |
107 | # pytest will try to do weird things if you have a function name that starts with `test_`!!
108 | # "fixture 'test_data' not found"
109 | def get_test_data_extreme_values(queries: [PPQuery]):
110 | """
111 | Extract the minimum and maximum values from a list of queries.
112 |
113 | The `OPEMetadata` class requires an estimate for the minimum and maximum
114 | values across all features and all queries. For tests and examples,
115 | the entire test dataset is known in advance, so we can just extract
116 | the minimum and maximum values from the dataset directly.
117 |
118 | :param test_data: A non-empty list of queries
119 | :return: minimum value across all queries, maximum value across all queries
120 | """
121 |
122 | def query_extremes(q: PPQuery):
123 | values = q.query_dict.values()
124 | return min(values), max(values)
125 |
126 | extremes = map(query_extremes, queries)
127 | # unpack the list of tuples into mins and maxes
128 | q_mins, q_maxs = list(zip(*extremes))
129 |
130 | return min(q_mins), max(q_maxs)
131 |
--------------------------------------------------------------------------------
/src/ppxgboost/PPPrediction.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import numpy as np
5 | import pandas as pd
6 |
7 | import ppxgboost.PaillierAPI as paillier
8 | from ppxgboost.PPModel import *
9 | from ppxgboost.PPQuery import PPQuery
10 |
11 |
12 | def predict_single_input_binary(model: PPModel, query, default_base_score=0.5):
13 | """
14 | Return the score for this query in a binary classification model
15 |
16 | :param model: the model to evaluate
17 | :param query: a single input query
18 | :param default_base_score: a default score is 0.5 (global bias)
19 | :return: the query's score
20 | """
21 |
22 | scores = model.eval(query)
23 | return default_base_score + sum(scores)
24 |
25 | def predict_binary(enc_model: PPModel, enc_queries: [PPQuery], default_base_score=0.5):
26 | """
27 | Prediction on @enc_queries over the @enc_model
28 | :param enc_model: encrypted PPModel
29 | :param enc_queries: a list of encrypted PPQuery
30 | :param default_base_score: default score is 0.5 (according to the xgboost -- global bias)
31 | :return: a list of prediction values
32 | """
33 |
34 | return list(map(lambda q: predict_single_input_binary(enc_model, q, default_base_score), enc_queries))
35 |
36 |
37 | def predict_single_input_multiclass(model: PPModel, num_classes, query):
38 | """
39 | Return a prediction on a single input vector.
40 | The algorithm computes the sum of scores for all the corresponding classes (boosters in the xgboost model).
41 | For each class, it sum up all the leaves' values
42 |
43 | :param model: internal model representation
44 | :param num_classes: the total number classes to classify
45 | :param query: a single input query
46 | :return: the predicted score
47 | """
48 | scores = model.eval(query)
49 |
50 | # sum of score for each category: exp(score)
51 | result = []
52 | for i in range(num_classes):
53 | result.append(0)
54 |
55 | # this is to compute the softmax, however, server can only perform
56 | # additvely homomorphic operation, so here we can compute scores
57 | # seperately
58 | for i in range(len(scores)):
59 | j = i % num_classes
60 | result[j] = result[j] + scores[i]
61 |
62 | return result
63 |
64 | def predict_multiclass(enc_model: PPModel, num_classes, enc_queries: [PPQuery]):
65 | """
66 | This prediction for dataframe input. For each record,
67 | it calls the 'predict_single_input_multiclass'
68 | :param enc_model: encrypted PPModel
69 | :param num_classes: the total number classes to classify
70 | :param enc_queries: list of encrypted PPQuery
71 | :return: a list of prediction with aggregated scores
72 | """
73 |
74 | return list(map(lambda q: predict_single_input_multiclass(enc_model, num_classes, q), enc_queries))
75 |
76 | def client_side_multiclass_compute(predictions):
77 | """
78 | Output the actual predictions using the softmax methods.
79 | In particular, it computes the normalized exponential function, which converts a vector
80 | of K real numbers and normalizes it into a probability distribution consisting of K
81 | probability scores proportional to the exponentials of the input numbers, i.e. SoftMax assigns
82 | decimal probabilities to each class in a multi-class problem.
83 | Those decimal probabilities must add up to 1.0.
84 |
85 | :param predictions: a list of predictions, where each element is a list that contains
86 | the scores for each inputs - here, we allow the client to receive a list of
87 | prediction (consistent to xgboost's prediction) for the corresponding queries.
88 | :return: predicted classes: a list of the most probable classes the model predicts.
89 | """
90 | final_output = []
91 |
92 | # Predictions is a vector of results, the value can be any real floating point number
93 | # e.g. predictions for k classes -- predictions = [[x_1,... x_k], [y_1,... y_k], [z_1, ..., z_k]]
94 | for predict_i in predictions:
95 |
96 | # gets the sum of all the exponential predicted results
97 | # e.g. e^(x_1) + ... + e^(x_k)
98 | sum_score = np.sum(np.exp(predict_i))
99 | output = []
100 | for x_i in predict_i:
101 | # for each t in predict_i
102 | # e.g. e^(x_i)/(e^(x_1) + ... + e^(x_k))
103 | output.append(np.exp(x_i) / sum_score)
104 |
105 | # report the argmax as the predicted class (most probable).
106 | final_output.append(np.argmax(output))
107 | return final_output
108 |
109 |
110 | def client_decrypt_prediction_multiclass(private_key, predictions):
111 | """
112 | Client calls this function to compute the multi-class prediction -- i.e. it outputs the most probable class for the
113 | predicted class.
114 | This methods first decrypts the aggregated predictions using @private_key@,
115 | then calls the client_side_multiclass_compute() function.
116 |
117 | :param private_key: the private key to decrypt the values.
118 | :param predictions: encrypted list of predictions (each entry of the list is a list of encrypted scores.)
119 | :return: the results as numpy.ndarray()
120 | """
121 | decrypted_pred_list = []
122 | for enc_pred in predictions:
123 | decrypted_scores = []
124 | for enc_scores in enc_pred:
125 | # decrypts the encrypted scores.
126 | decrypted_scores.append(paillier.decrypt(private_key, enc_scores))
127 | decrypted_pred_list.append(decrypted_scores)
128 | result = client_side_multiclass_compute(decrypted_pred_list)
129 | return np.array(result)
130 |
--------------------------------------------------------------------------------
/examples/readmitted.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "attachments": {},
5 | "cell_type": "markdown",
6 | "metadata": {
7 | "tags": []
8 | },
9 | "source": [
10 | "### Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n",
11 | "### SPDX-License-Identifier: Apache-2.0"
12 | ]
13 | },
14 | {
15 | "cell_type": "markdown",
16 | "metadata": {},
17 | "source": [
18 | "( Run jupyter notebook under the project directory )"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": null,
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "from ppxgboost import PPPrediction as prediction\n",
28 | "import ppxgboost.PPModel as PPModel\n",
29 | "from ppxgboost import PaillierAPI as paillier\n",
30 | "import ppxgboost.OPEMetadata as OPEMetadata\n",
31 | "import ppxgboost.PPKey as PPKey\n",
32 | "import ppxgboost.PPQuery as PPQuery\n",
33 | "import random\n",
34 | "import time\n",
35 | "import pandas as pd\n",
36 | "import numpy as np\n",
37 | "import xgboost as xgb\n",
38 | "from xgboost import XGBClassifier\n",
39 | "from secrets import token_bytes\n",
40 | "from pyope.ope import OPE\n",
41 | "from sklearn.model_selection import train_test_split"
42 | ]
43 | },
44 | {
45 | "attachments": {},
46 | "cell_type": "markdown",
47 | "metadata": {
48 | "pycharm": {
49 | "name": "#%% md\n"
50 | }
51 | },
52 | "source": [
53 | "# XGBoost for Dataset\n",
54 | "\n",
55 | "This example demonstrates how to use ppxgboost to encrypt an xgboost model and query it.\n",
56 | "\n",
57 | "The sample dataset we are going to use in this lab is a sampled version of the \"Diabetes 130-US hospitals for years 1999-2008 Data Set\" (Beata Strack, Jonathan P. DeShazo, Chris Gennings, Juan L. Olmo, Sebastian Ventura, Krzysztof J. Cios, and John N. Clore, “Impact of HbA1c Measurement on Hospital Readmission Rates: Analysis of 70,000 Clinical Database Patient Records,” BioMed Research International, vol. 2014, Article ID 781670, 11 pages, 2014. ).\n"
58 | ]
59 | },
60 | {
61 | "cell_type": "markdown",
62 | "metadata": {
63 | "pycharm": {
64 | "name": "#%% md\n"
65 | }
66 | },
67 | "source": [
68 | "### Data Preparation and Train an XGBoost ML model"
69 | ]
70 | },
71 | {
72 | "cell_type": "code",
73 | "execution_count": null,
74 | "metadata": {},
75 | "outputs": [],
76 | "source": [
77 | "# In the following example, the datasets modified to match the input requirements by SageMaker Data Wrangler.\n",
78 | "data = pd.read_csv('../data/readmitted.csv')\n",
79 | "\n",
80 | "train, test = train_test_split(data, train_size = 0.998, test_size = 0.002)\n",
81 | "\n",
82 | "AttributeLabels = ['race', 'gender', 'age', 'time_in_hospital', 'num_lab_procedures', 'num_procedures', 'num_medications', 'number_outpatient', 'number_emergency', 'number_inpatient', 'number_diagnoses', 'max_glu_serum', 'a1c_result', 'change', 'diabetes_med']\n",
83 | "\n",
84 | "# Training dataset\n",
85 | "X_train = train[AttributeLabels]\n",
86 | "Y_train = train[['readmitted']]\n",
87 | "\n",
88 | "# Testing dataset\n",
89 | "X_test = test[AttributeLabels]\n",
90 | "Y_test = test[['readmitted']]\n",
91 | "\n",
92 | "X_train.head()"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "execution_count": null,
98 | "metadata": {},
99 | "outputs": [],
100 | "source": [
101 | "Y_train.head()"
102 | ]
103 | },
104 | {
105 | "cell_type": "code",
106 | "execution_count": null,
107 | "metadata": {},
108 | "outputs": [],
109 | "source": [
110 | "# Train a xgboost model \n",
111 | "dtrain = xgb.DMatrix(X_train, label=Y_train)\n",
112 | "num_class = 3\n",
113 | "params = {'eta': 0.1, 'objective':'multi:softmax', 'num_class': num_class}\n",
114 | "model = xgb.train(params=params, dtrain=dtrain)\n",
115 | "\n",
116 | "# predict using the plaintext prediction\n",
117 | "start = time.time()\n",
118 | "plaintext_predict = model.predict(xgb.DMatrix(X_test))\n",
119 | "end = time.time()\n",
120 | "print(\"XGBoost Prediction : Elapsed Time: \", end - start)"
121 | ]
122 | },
123 | {
124 | "attachments": {},
125 | "cell_type": "markdown",
126 | "metadata": {
127 | "pycharm": {
128 | "name": "#%% md\n"
129 | }
130 | },
131 | "source": [
132 | "### Encryption Preparation for XGBoost Model\n",
133 | "\n",
134 | "1. Set up the encryption materials\n",
135 | "2. process the tree into ope_enc_tree\n",
136 | "3. Encrypts the input vector for prediction\n",
137 | "4. Perform the prediction\n",
138 | "5. Decrypt the prediction"
139 | ]
140 | },
141 | {
142 | "cell_type": "code",
143 | "execution_count": null,
144 | "metadata": {},
145 | "outputs": [],
146 | "source": [
147 | "# parse the tree\n",
148 | "# (add fake metadata here as this testing only test the model correctness)\n",
149 | "test_input_vector = pd.DataFrame(X_test)\n",
150 | "ppModel = PPModel.from_xgboost_model(model)\n",
151 | "features = ppModel.get_features()\n",
152 | "metadata = OPEMetadata.OPEMetadata(ppModel, 0, 132)\n",
153 | "\n",
154 | "# 1. Set up encryption materials.\n",
155 | "ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys()\n",
156 | "\n",
157 | "# 2. process the tree into ope_enc_tree\n",
158 | "enc_model = ppModel.encrypt(ppModelKey, metadata)\n",
159 | "\n",
160 | "# 3. Encrypts the input vector for prediction (using prf_key_hash and ope-encrypter) based on the feature set.\n",
161 | "queryEncryptor = PPQuery.QueryEncryptor(ppQueryKey, features, metadata)\n",
162 | "queries = PPQuery.pandas_to_queries(test_input_vector)\n",
163 | "enc_queries = PPQuery.encrypt_queries(queryEncryptor, queries)\n",
164 | "\n",
165 | "# # 4. OPE evaluation based on OPE encrypted values in the tree nodes.\n",
166 | "start = time.time()\n",
167 | "enc_predictions = prediction.predict_multiclass(enc_model, num_class, enc_queries)\n",
168 | "end = time.time()\n",
169 | "print(\"PPXGBoost Prediction : Elapsed Time: \", end - start)\n",
170 | "\n",
171 | "# 5. Client decryption.\n",
172 | "result = prediction.client_decrypt_prediction_multiclass(ppQueryKey.get_private_key(), enc_predictions)"
173 | ]
174 | },
175 | {
176 | "cell_type": "code",
177 | "execution_count": null,
178 | "metadata": {},
179 | "outputs": [],
180 | "source": [
181 | "\n",
182 | "result = np.array([round(x, 7) for x in result])\n",
183 | "assert len(plaintext_predict) == len(result)\n",
184 | "\n",
185 | "# check if the predicted values are same (the ppxgboost might not produce same values \n",
186 | "# as the plaintext value due to precision)\n",
187 | "for i in range(len(plaintext_predict)):\n",
188 | " assert abs(plaintext_predict[i] - result[i]) < 0.000001\n"
189 | ]
190 | }
191 | ],
192 | "metadata": {
193 | "language_info": {
194 | "name": "python"
195 | }
196 | },
197 | "nbformat": 4,
198 | "nbformat_minor": 4
199 | }
200 |
--------------------------------------------------------------------------------
/examples/Titanic.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n",
10 | "# SPDX-License-Identifier: Apache-2.0"
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {},
16 | "source": [
17 | "( Run jupyter notebook under the project directory )"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": null,
23 | "metadata": {},
24 | "outputs": [],
25 | "source": [
26 | "from ppxgboost import PPPrediction as prediction\n",
27 | "import ppxgboost.PPModel as PPModel\n",
28 | "from ppxgboost import PaillierAPI as paillier\n",
29 | "import ppxgboost.OPEMetadata as OPEMetadata\n",
30 | "import ppxgboost.PPKey as PPKey\n",
31 | "import ppxgboost.PPQuery as PPQuery\n",
32 | "import random\n",
33 | "import time\n",
34 | "import pandas as pd\n",
35 | "import numpy as np\n",
36 | "import xgboost as xgb\n",
37 | "from xgboost import XGBClassifier\n",
38 | "from secrets import token_bytes\n",
39 | "import pyope.ope as pyope"
40 | ]
41 | },
42 | {
43 | "cell_type": "markdown",
44 | "metadata": {
45 | "pycharm": {
46 | "name": "#%% md\n"
47 | }
48 | },
49 | "source": [
50 | "# XGBoost for Titanic Dataset\n",
51 | "\n",
52 | "(We use this example to demenstrate how to use ppxgboost for encypting an xgboost model and query it.)\n",
53 | "\n",
54 | "Please go to https://www.kaggle.com/c/titanic/data and download the dataset.\n",
55 | "In the following example, the datasets are downloaded in the example directory\n"
56 | ]
57 | },
58 | {
59 | "cell_type": "markdown",
60 | "metadata": {
61 | "pycharm": {
62 | "name": "#%% md\n"
63 | }
64 | },
65 | "source": [
66 | "### Data Preparation and Train an XGBoost ML model"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": null,
72 | "metadata": {},
73 | "outputs": [],
74 | "source": [
75 | "# The pp-xgboost for titanic \n",
76 | "# In the following example, the datasets are downloaded in the example directory\n",
77 | "train = pd.read_csv('../data/titanic_train.csv')\n",
78 | "test = pd.read_csv('../data/titanic_test.csv')\n",
79 | "\n",
80 | "# Training dataset. We skip the data exploration part ...\n",
81 | "# Only get the features that are useful for building the ML model\n",
82 | "X_train = train[['Pclass', 'Age', 'Fare', 'SibSp', 'Parch']]\n",
83 | "y_train = train[['Survived']]\n",
84 | "\n",
85 | "# Testing dataset\n",
86 | "X_test = test[['Pclass', 'Age', 'Fare', 'SibSp', 'Parch']]\n",
87 | "\n",
88 | "X_train.head()"
89 | ]
90 | },
91 | {
92 | "cell_type": "code",
93 | "execution_count": null,
94 | "metadata": {},
95 | "outputs": [],
96 | "source": [
97 | "y_train.head()"
98 | ]
99 | },
100 | {
101 | "cell_type": "code",
102 | "execution_count": null,
103 | "metadata": {},
104 | "outputs": [],
105 | "source": [
106 | "X_test.head()"
107 | ]
108 | },
109 | {
110 | "cell_type": "code",
111 | "execution_count": null,
112 | "metadata": {},
113 | "outputs": [],
114 | "source": [
115 | "# Train a xgboost model \n",
116 | "dtrain = xgb.DMatrix(X_train, label=y_train)\n",
117 | "params = {'eta': 0.1}\n",
118 | "model = xgb.train(params=params, dtrain=dtrain)\n",
119 | "\n",
120 | "# predict using the plaintext prediction\n",
121 | "plaintext_predict = model.predict(xgb.DMatrix(X_test))"
122 | ]
123 | },
124 | {
125 | "cell_type": "markdown",
126 | "metadata": {},
127 | "source": [
128 | "Dump the model"
129 | ]
130 | },
131 | {
132 | "cell_type": "code",
133 | "execution_count": null,
134 | "metadata": {},
135 | "outputs": [],
136 | "source": [
137 | "model.dump_model('tree.txt')"
138 | ]
139 | },
140 | {
141 | "cell_type": "markdown",
142 | "metadata": {
143 | "pycharm": {
144 | "name": "#%% md\n"
145 | }
146 | },
147 | "source": [
148 | "### Encryption Preparation for XGBoost Model\n",
149 | "1. Set up some metadata information for the dataset.\n",
150 | "2. Set up the encryption materials\n",
151 | "3. Encrypt the model\n",
152 | "4. Encrypt the query\n",
153 | "5. Perform the prediction\n",
154 | "6. Decrypt the prediction"
155 | ]
156 | },
157 | {
158 | "cell_type": "code",
159 | "execution_count": null,
160 | "metadata": {},
161 | "outputs": [],
162 | "source": [
163 | "# 0. Create custom data ranges\n",
164 | "in_range = pyope.ValueRange(pyope.DEFAULT_IN_RANGE_START, 2 ** 43 - 1)\n",
165 | "out_range = pyope.ValueRange(pyope.DEFAULT_OUT_RANGE_START, 2 ** 63 - 1)\n",
166 | "\n",
167 | "# 1. parsing to internal tree data structure, and output feature set\n",
168 | "queries = PPQuery.pandas_to_queries(X_test)\n",
169 | "qmin, qmax = PPQuery.get_test_data_extreme_values(queries)\n",
170 | "ppModel = PPModel.from_xgboost_model(model)\n",
171 | "\n",
172 | "# 2. Set up encryption materials.\n",
173 | "ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys(in_range, out_range)\n",
174 | "\n",
175 | "# 3. process the tree into ppmodel\n",
176 | "metadata = OPEMetadata.OPEMetadata(ppModel, qmin, qmax, in_range.end)\n",
177 | "features = ppModel.get_features()\n",
178 | "\n",
179 | "enc_model = ppModel.encrypt(ppModelKey, metadata)\n",
180 | "\n",
181 | "# 4. Encrypts the input vector for prediction (using prf_key_hash and ope-encrypter) based on the feature set.\n",
182 | "queryEncryptor = PPQuery.QueryEncryptor(ppQueryKey, features, metadata)\n",
183 | "enc_queries = PPQuery.encrypt_queries(queryEncryptor, queries)"
184 | ]
185 | },
186 | {
187 | "cell_type": "code",
188 | "execution_count": null,
189 | "metadata": {},
190 | "outputs": [],
191 | "source": [
192 | "# 5. privacy-preserving evaluation.\n",
193 | "start = time.time()\n",
194 | "values = prediction.predict_binary(enc_model, enc_queries)\n",
195 | "end = time.time()\n",
196 | "print(\"Elapsed Time: \", end - start)"
197 | ]
198 | },
199 | {
200 | "cell_type": "code",
201 | "execution_count": null,
202 | "metadata": {},
203 | "outputs": [],
204 | "source": [
205 | "# 6. decryption\n",
206 | "decryptions = []\n",
207 | "\n",
208 | "for c in values:\n",
209 | " decryptions.append(paillier.decrypt(ppQueryKey.get_private_key(), c))\n",
210 | "\n",
211 | "decryptions = np.array([round(x, 7) for x in decryptions])\n",
212 | "assert len(plaintext_predict) == len(decryptions)\n",
213 | "\n",
214 | "# if the predicted values are same (the ppxgboost might not produce same values \n",
215 | "# as the plaintext value due to precision)\n",
216 | "for i in range(len(plaintext_predict)):\n",
217 | " assert abs(plaintext_predict[i] - decryptions[i]) < 0.000001"
218 | ]
219 | }
220 | ],
221 | "metadata": {
222 | "language_info": {
223 | "name": "python"
224 | }
225 | },
226 | "nbformat": 4,
227 | "nbformat_minor": 2
228 | }
229 |
--------------------------------------------------------------------------------
/examples/Iris.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "collapsed": true,
7 | "pycharm": {
8 | "name": "#%% md\n"
9 | }
10 | },
11 | "source": [
12 | "Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n",
13 | "SPDX-License-Identifier: Apache-2.0"
14 | ]
15 | },
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {},
19 | "source": [
20 | "( Run jupyter notebook under the project directory )\n",
21 | "\n",
22 | "# XGBoost for Iris Dataset\n",
23 | "\n",
24 | "We use this example to demenstrate how to use ppxgboost for encypting an xgboost model for multi-class\n",
25 | " prediction. We directly use the iris data from Sklearn, but one\n",
26 | " can go to https://archive.ics.uci.edu/ml/datasets/iris to download the original dataset.\n"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": null,
32 | "metadata": {},
33 | "outputs": [],
34 | "source": [
35 | "import pandas as pd\n",
36 | "import numpy as np\n",
37 | "import xgboost as xgb\n",
38 | "from secrets import token_bytes\n",
39 | "\n",
40 | "from sklearn.datasets import load_iris\n",
41 | "from sklearn.model_selection import train_test_split\n",
42 | "\n",
43 | "from ppxgboost import PPPrediction as prediction\n",
44 | "import ppxgboost.OPEMetadata as OPEMetadata\n",
45 | "import ppxgboost.PPModel as PPModel\n",
46 | "import ppxgboost.PPKey as PPKey\n",
47 | "import ppxgboost.PPQuery as PPQuery\n",
48 | "import pyope.ope as pyope\n",
49 | "from ppxgboost import PaillierAPI as paillier"
50 | ]
51 | },
52 | {
53 | "cell_type": "code",
54 | "execution_count": null,
55 | "metadata": {},
56 | "outputs": [],
57 | "source": [
58 | "iris = load_iris()\n",
59 | "X = iris.data\n",
60 | "y = iris.target\n",
61 | "\n",
62 | "# Pre-assign the column name first.\n",
63 | "# the default feature name from the xgboost -- iris have 4 columns\n",
64 | "feature_names = ['f0', 'f1', 'f2', 'f3']\n",
65 | "X = pd.DataFrame(X, columns=feature_names)"
66 | ]
67 | },
68 | {
69 | "cell_type": "code",
70 | "execution_count": null,
71 | "metadata": {},
72 | "outputs": [],
73 | "source": [
74 | "X.head()"
75 | ]
76 | },
77 | {
78 | "cell_type": "code",
79 | "execution_count": null,
80 | "metadata": {},
81 | "outputs": [],
82 | "source": [
83 | "y"
84 | ]
85 | },
86 | {
87 | "cell_type": "code",
88 | "execution_count": null,
89 | "metadata": {},
90 | "outputs": [],
91 | "source": [
92 | "# splitting the data into train and test\n",
93 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n",
94 | "\n",
95 | "test_input_vector = pd.DataFrame(X_test, columns=feature_names)"
96 | ]
97 | },
98 | {
99 | "cell_type": "code",
100 | "execution_count": null,
101 | "metadata": {},
102 | "outputs": [],
103 | "source": [
104 | "# first dump and pickled the model in the file directory.\n",
105 | "# total number of tree = total_estimators * number_labels\n",
106 | "# e.g. for the imported iris dataset, the number of classes is 3.\n",
107 | "\n",
108 | "# Just provide estimator number for testing purposes.\n",
109 | "total_estimaters = 6\n",
110 | "model = xgb.XGBClassifier(n_estimators=total_estimaters, objective='multi:softmax')\n",
111 | "model.fit(X, y)"
112 | ]
113 | },
114 | {
115 | "cell_type": "code",
116 | "execution_count": null,
117 | "metadata": {},
118 | "outputs": [],
119 | "source": [
120 | "# Get the number of classes -- i.e. 3 from iris dataset\n",
121 | "# The classes as array can be get by calling model.classes_\n",
122 | "num_classes = model.n_classes_\n",
123 | "\n",
124 | "# Create custom data ranges\n",
125 | "in_range = pyope.ValueRange(pyope.DEFAULT_IN_RANGE_START, 2 ** 43 - 1)\n",
126 | "out_range = pyope.ValueRange(pyope.DEFAULT_OUT_RANGE_START, 2 ** 63 - 1)\n",
127 | "\n",
128 | "# parse the tree\n",
129 | "ppModel = PPModel.from_xgboost_model(model.get_booster())\n",
130 | "features = ppModel.get_features()\n",
131 | "# (add fake test data range here as this testing only test the model correctness)\n",
132 | "metadata = OPEMetadata.OPEMetadata(ppModel, 0, 100, in_range.end)"
133 | ]
134 | },
135 | {
136 | "cell_type": "markdown",
137 | "metadata": {
138 | "pycharm": {
139 | "name": "#%% md\n"
140 | }
141 | },
142 | "source": [
143 | "Encryption Preparation for XGBoost Model\n",
144 | "1). Set up some metadata information for the dataset.\n",
145 | "2). Set up the encryption materials\n",
146 | "3). Encrypt the model\n",
147 | "4). Encrypt the query\n",
148 | "5). Perform the prediction \n",
149 | "6). Decrypt the prediction"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": null,
155 | "metadata": {},
156 | "outputs": [],
157 | "source": [
158 | "# ##################################################################################\n",
159 | "# # The folowing is to compute the scores based on the OPE processed decision tree #\n",
160 | "# ##################################################################################\n",
161 | "# # Set up encryption materials.\n",
162 | "ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys(in_range, out_range)\n",
163 | "\n",
164 | "# 1. process the tree into ope_enc_tree\n",
165 | "enc_model = ppModel.encrypt(ppModelKey, metadata)\n"
166 | ]
167 | },
168 | {
169 | "cell_type": "code",
170 | "execution_count": null,
171 | "metadata": {},
172 | "outputs": [],
173 | "source": [
174 | "# 2. Encrypts the input vector for prediction (using prf_key_hash and ope-encrypter) based on the feature set.\n",
175 | "queryEncryptor = PPQuery.QueryEncryptor(ppQueryKey, features, metadata)\n",
176 | "queries = PPQuery.pandas_to_queries(test_input_vector)\n",
177 | "enc_queries = PPQuery.encrypt_queries(queryEncryptor, queries)"
178 | ]
179 | },
180 | {
181 | "cell_type": "markdown",
182 | "metadata": {
183 | "pycharm": {
184 | "name": "#%% md\n"
185 | }
186 | },
187 | "source": [
188 | "Note that: The prediction on the server side is done differently from the log:binary. This is because\n",
189 | "the server needs to perofrm the softmax aggregation."
190 | ]
191 | },
192 | {
193 | "cell_type": "code",
194 | "execution_count": null,
195 | "metadata": {},
196 | "outputs": [],
197 | "source": [
198 | "# # 3. OPE evaluation based on OPE encrypted values in the tree nodes.\n",
199 | "enc_predictions = prediction.predict_multiclass(enc_model, num_classes, enc_queries)"
200 | ]
201 | },
202 | {
203 | "cell_type": "code",
204 | "execution_count": null,
205 | "metadata": {},
206 | "outputs": [],
207 | "source": [
208 | "# 4. Client decryption.\n",
209 | "result = prediction.client_decrypt_prediction_multiclass(ppQueryKey.get_private_key(), enc_predictions)"
210 | ]
211 | },
212 | {
213 | "cell_type": "code",
214 | "execution_count": null,
215 | "metadata": {},
216 | "outputs": [],
217 | "source": [
218 | "real_y = model.predict(X_test)\n",
219 | "assert np.array_equal(result, real_y)\n",
220 | "print(\"success!\")\n"
221 | ]
222 | },
223 | {
224 | "cell_type": "code",
225 | "execution_count": null,
226 | "metadata": {},
227 | "outputs": [],
228 | "source": []
229 | }
230 | ],
231 | "metadata": {
232 | "language_info": {
233 | "name": "python"
234 | }
235 | },
236 | "nbformat": 4,
237 | "nbformat_minor": 1
238 | }
239 |
--------------------------------------------------------------------------------
/test/test_ppxg_boost.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import pytest
5 |
6 | # This test file mainly tests binary prediction for xgboost
7 | # It tests all of the interfaces using OPE, Paillier, etc.
8 | import pickle as pl
9 | import pandas as pd
10 | import random
11 |
12 | import pyope.ope as pyope
13 | from ppxgboost import PaillierAPI as paillier
14 | import ppxgboost.OPEMetadata as OPEMetadata
15 | import ppxgboost.PPModel as PPModel
16 | import ppxgboost.PPTree as PPTree
17 | import ppxgboost.PPKey as PPKey
18 | import ppxgboost.PPQuery as PPQuery
19 |
20 | # The tests require modified input and output ranges
21 | in_range = pyope.ValueRange(pyope.DEFAULT_IN_RANGE_START, 2 ** 43 - 1)
22 | out_range = pyope.ValueRange(pyope.DEFAULT_OUT_RANGE_START, 2 ** 63 - 1)
23 |
24 | # Testing class for the pytest. To run simply "pytest test/" this will run all of the test in the test directory.
25 | class Test_PPMParser:
26 |
27 | # the testing for the parsing the model and the dumped trees.
28 | def test_model_parse(self):
29 | dir_path = "test_files/model_file.pkl"
30 |
31 | with open(dir_path, 'rb') as f: # will close() when we leave this block
32 | testing_model = pl.load(f)
33 |
34 | ppmodel = PPModel.from_xgboost_model(testing_model)
35 |
36 | # get the trees in string representation.
37 | # dump_tree is a list of strings, where each string is tree representation. See the docs in xgBoost for details.
38 | dump_tree = testing_model.get_dump()
39 |
40 | # for each one of trees, test if the parsed tree is the same as the tree object (calling print in tree object)
41 | for i in range(len(dump_tree)):
42 | assert dump_tree[i] == PPTree.tree_to_string(ppmodel.trees[i])
43 |
44 | def test_ope_node(self):
45 | """
46 | Test vector on evaluating the decision tree based on OPE
47 | :return:
48 | """
49 | t1 = '0:[Pclass<3] yes=1,no=2,missing=1\n\t1:[Fare<13] yes=3,no=4,missing=3\n\t\t3:leaf=323\n\t\t4:[' \
50 | 'Age<42] yes=9,no=10,missing=10\n\t\t\t9:leaf=32434\n\t\t\t10:leaf=43124\n\t2:[Age<6] yes=5,' \
51 | 'no=6,missing=6\n\t\t5:[SibSp<32] yes=11,no=12,' \
52 | 'missing=11\n\t\t\t11:leaf=9473\n\t\t\t12:leaf=836\n\t\t6:leaf=46\n '
53 |
54 | input_vector = pd.read_csv('test_files/test_prediction_input.csv')
55 |
56 | ################################################################################################
57 | # The following is to compute the scores for the decision tree on input vectors in plaintext!
58 | ################################################################################################
59 |
60 | # As this test just to test the correctness of the encrypt_tree_node method
61 | ppModel = PPModel.PPModel([PPTree.parse_tree(t1)])
62 | features = ppModel.get_features()
63 |
64 | # The score list value in plaintext.
65 | score_value = list()
66 | # get each row indexing with input vector's head
67 | queries = PPQuery.pandas_to_queries(input_vector)
68 | # Evaluating a model produces a list of results; we only want the result for the (one and) only tree in this model
69 | score_value = list(map(lambda q: ppModel.eval(q)[0], queries))
70 |
71 | ################################################################################################
72 | # The following is to compute the scores based on the OPE processed decision tree
73 | ################################################################################################
74 |
75 | # Set up encrytion materials.
76 | ppModelKey, ppQueryKey = PPKey.generatePPXGBoostKeys(in_range, out_range)
77 |
78 | # as this only test the enc_tree_node ope, add fake metadata (min and max) for this computation
79 | # just for testing purposes.
80 | metadata = OPEMetadata.OPEMetadata(ppModel, 0, 1000, in_range.end)
81 |
82 | # 1. Encrypts the input vector for prediction (using prf_key_hash and ope-encrypter) based on the feature set.
83 |
84 | queryEncryptor = PPQuery.QueryEncryptor(ppQueryKey, features, metadata)
85 | enc_queries = PPQuery.encrypt_queries(queryEncryptor, queries)
86 |
87 | # 2. process the tree into ope_enc_tree
88 | enc_model = ppModel.encrypt(ppModelKey, metadata)
89 |
90 | # 3. OPE evaluation based on OPE encrypted values in the tree nodes.
91 | # Evaluating a model produces a list of results; we only want the result for the (one and) only tree in this model
92 | encrypted_value = list(map(lambda q: enc_model.eval(q)[0], enc_queries))
93 |
94 | dec_value = list()
95 | for c in encrypted_value:
96 | dec_value.append(paillier.decrypt(ppQueryKey.get_private_key(), c))
97 |
98 | # 4. compare
99 | assert dec_value == score_value
100 |
101 | def test_paillier_encryption(self):
102 |
103 | # randomly generate a number
104 | a = random.getrandbits(64)
105 |
106 | # Key Generation
107 | pub_key, priv_key = paillier.he_key_gen()
108 | # encrypt the random number
109 | enc_a = paillier.encrypt(pub_key, a)
110 |
111 | # test if decryption works.
112 | assert a == paillier.decrypt(priv_key, enc_a)
113 |
114 | def test_paillier_api(self):
115 |
116 | pub_key, priv_key = paillier.he_key_gen()
117 |
118 | # randomly generate the a and b from [0, sixty_four_bit_num)
119 | a = random.getrandbits(64)
120 | b = random.getrandbits(64)
121 |
122 | # encrypt a & b
123 | enc_a = paillier.encrypt(pub_key, a)
124 | enc_b = paillier.encrypt(pub_key, b)
125 |
126 | # homomorphically evaluate a + b
127 | # enc_a_b = enc(a+b)
128 | paillier.assert_ciphertext(enc_a)
129 | paillier.assert_ciphertext(enc_b)
130 | enc_a_b = enc_a + enc_b
131 |
132 | # try to catch the exception if the input is NOT a ciphertext
133 | try:
134 | paillier.assert_ciphertext(a)
135 | except ValueError:
136 | print("Input was not a ciphertext")
137 | assert True
138 |
139 | scalar = random.getrandbits(64)
140 |
141 | # encrypted_c_scalar = enc(scalar * a)
142 | encrypted_c_scalar = scalar * enc_a
143 |
144 | # perform all decryptions
145 | dec_a_b = paillier.decrypt(priv_key, enc_a_b)
146 | dec_c_scalar = paillier.decrypt(priv_key, encrypted_c_scalar)
147 |
148 | assert dec_a_b == a + b
149 | assert dec_c_scalar == scalar * a
150 |
151 | def test_paillier_negative_num_test(self):
152 |
153 | pub_key, priv_key = paillier.he_key_gen()
154 |
155 | # Negative number test #
156 | x = random.randint((-1) * random.getrandbits(64), 0)
157 |
158 | # encrypt negative number x
159 | enc_x = paillier.encrypt(pub_key, x)
160 | # encrypted negative number -x (a positive num)
161 | enc_pos_x = paillier.encrypt(pub_key, (-1) * x)
162 |
163 | paillier.assert_ciphertext(enc_pos_x)
164 | paillier.assert_ciphertext(enc_x)
165 | # homomorphic addition (enc_sum <- enc(0))
166 | enc_sum = enc_pos_x + enc_x
167 |
168 | dec_x = paillier.decrypt(priv_key, enc_x)
169 | dec_sum = paillier.decrypt(priv_key, enc_sum)
170 | assert dec_x == x
171 | assert dec_sum == 0
172 |
173 | def test_serialization(self):
174 |
175 | pub_key, priv_key = paillier.he_key_gen()
176 |
177 | # randomly generate 64 bit number
178 | message = random.getrandbits(64)
179 |
180 | # Encrypt a message
181 | encrypted_message = paillier.encrypt(pub_key, message)
182 | # serialize it to json format
183 | json_str = paillier.ciphertext_serialization(pub_key, encrypted_message)
184 |
185 | # deserialize the json format
186 | pub_key, encrypted_number = paillier.ciphertext_deserialization(json_str)
187 | # decrypted the message using the correct private key.
188 | check_number = paillier.decrypt(priv_key, encrypted_number)
189 |
190 | assert message == check_number
191 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
--------------------------------------------------------------------------------
/src/ppxgboost/PPTree.py:
--------------------------------------------------------------------------------
1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 | # SPDX-License-Identifier: Apache-2.0
3 |
4 | import numpy as np
5 | import re
6 |
7 | from ppxgboost.PPKey import PPModelKey
8 | from ppxgboost.OPEMetadata import OPEMetadata
9 | import ppxgboost.PaillierAPI as paillier
10 | from ppxgboost.PPQuery import PPQuery, hmac_msg
11 |
12 | # This module implements a basic tree structure for XGBoost trees,
13 | # plus serialization to/deserialization from a string. The serialization
14 | # functionality allows us to import models from the xgboost library.
15 |
16 | class TreeNode:
17 | """
18 | A parent class for interior and leaf nodes of a tree
19 | """
20 |
21 | def __init__(self, identifier):
22 | """
23 | :param identifier: a unique value identifying this node within the tree
24 | """
25 |
26 | self.id = identifier
27 |
28 |
29 | class Leaf(TreeNode):
30 | """
31 | A leaf node of a tree
32 | """
33 |
34 | def __init__(self, identifier, value):
35 | """
36 | :param identifier: a unique value identifying this node within the tree
37 | :param value: score for this leaf node
38 | """
39 |
40 | super().__init__(identifier)
41 | self.value = value
42 |
43 | def eval(self, _):
44 | """
45 | Evaluate the model on an input. Since this is a leaf node,
46 | we ignore the input and return the node's value.
47 |
48 | :return: result of evaluating the model on the provided query
49 | """
50 |
51 | return self.value
52 |
53 | def node_to_string(self, lvl):
54 | """
55 | Serialize this leaf as a string at level `lvl`. Note that this
56 | serialization is carefully designed to match the xgboost.get_dump()
57 | so that the deserialization function works for both model types.
58 |
59 | :param lvl: The level in the tree of this leaf
60 | :return: A string representing this leaf node
61 | """
62 |
63 | return '\t'*lvl + str(self.id) + ":leaf=" + str(self.value) + "\n"
64 |
65 | def get_features(self):
66 | """
67 | :return: The set of all features used in this XGBoost tree
68 | """
69 |
70 | return set()
71 |
72 | def get_extreme_values(self):
73 | """
74 | :return: the minimum and maximum values used for comparison in the tree
75 | """
76 |
77 | return float('inf'), float('-inf')
78 |
79 | def encrypt(self, pp_boost_key: PPModelKey, metadata: OPEMetadata, feature_encryption_dict):
80 | """
81 | Encrypt a plaintext XGBoost model
82 |
83 | :param pp_boost_key: The model encryption key
84 | :param metadata: OPE metadata
85 | :param feature_encryption_dict: dictionary from plaintext feature name to PRF'd feature name
86 | :return: a new PPModel corresponding to the encryption of `self`
87 | """
88 | encrypted_value = paillier.encrypt(pp_boost_key.get_public_key(), self.value)
89 | return Leaf(self.id, encrypted_value)
90 |
91 | class Interior(TreeNode):
92 | """
93 | An interior node in a (binary) tree
94 | """
95 |
96 | def __init__(self, identifier, feature_name, cmp_val, if_true_child, if_false_child, default_child):
97 | """
98 | :param identifier: a unique value identifying this node within the tree
99 | :param feature_name: the name of the feature to compare
100 | :param cmp_val: the value to compare for the feature. All comparisons are "x < cmp_val".
101 | :param if_true_child: the node to go to if the comparision statement is true.
102 | :param if_false_child: the node to go to if the comparision statement is false.
103 | :param default_child: the node to go to if the feature is missing from the data. This MUST be
104 | either if_true_child or if_false_child
105 | """
106 |
107 | super().__init__(identifier)
108 | self.feature_name = feature_name
109 | self.cmp_val = cmp_val
110 |
111 | if (if_true_child != default_child and if_false_child != default_child):
112 | raise Exception("Default child must be either the 'true' child or the 'false' child")
113 |
114 | self.if_true_child = if_true_child
115 | self.if_false_child = if_false_child
116 | self.default_child = default_child
117 |
118 | def eval(self, x: PPQuery):
119 | """
120 | Evaluate the model on the given query.
121 |
122 | :param x: dictionary corresponding to the input
123 | :return: result of evaluating the model on x
124 | """
125 |
126 | if x is None:
127 | raise RuntimeError("None in eval")
128 |
129 | qd = x.query_dict
130 | if self.feature_name not in qd:
131 | print('Feature name ' + self.feature_name + ' is not available in query')
132 | print(qd)
133 | raise RuntimeError("Feature name not available in eval")
134 |
135 | if np.isnan(qd[self.feature_name]):
136 | return self.default_child.eval(x)
137 |
138 | if qd[self.feature_name] < self.cmp_val:
139 | return self.if_true_child.eval(x)
140 | else:
141 | return self.if_false_child.eval(x)
142 |
143 | def node_to_string(self, lvl):
144 | """
145 | Serialize this tree as a string at level `lvl`. Note that this
146 | serialization is carefully designed to match the xgboost.get_dump()
147 | so that the deserialization function works for both model types.
148 |
149 | :param lvl: The level in the tree of this node
150 | :return: A string representing this tree node
151 | """
152 |
153 | ans = ""
154 | for i in range(0, lvl):
155 | ans = ans + "\t"
156 |
157 | ans = "{}{}:[{}<{}] yes={},no={},missing={}\n".format(ans, str(self.id), str(self.feature_name),
158 | str(self.cmp_val),
159 | str(self.if_true_child.id), str(self.if_false_child.id),
160 | str(self.default_child.id))
161 |
162 | return ans + self.if_true_child.node_to_string(lvl + 1) + self.if_false_child.node_to_string(lvl + 1)
163 |
164 | def get_features(self):
165 | """
166 | :return: The set of features used by this model
167 | """
168 |
169 | feature_set = set()
170 | feature_set.add(self.feature_name)
171 | feature_set = feature_set.union(self.if_true_child.get_features())
172 | feature_set = feature_set.union(self.if_false_child.get_features())
173 | return feature_set
174 |
175 | def get_extreme_values(self):
176 | """
177 | :return: The minimum and maximum comparison values in the model
178 | """
179 |
180 | min1, max1 = self.if_true_child.get_extreme_values()
181 | min2, max2 = self.if_false_child.get_extreme_values()
182 | return min(min1, min2, self.cmp_val), max(max1, max2, self.cmp_val)
183 |
184 | def encrypt(self, pp_boost_key: PPModelKey, metadata: OPEMetadata, feature_encryption_dict):
185 | """
186 | Encrypt a plaintext XGBoost model
187 |
188 | :param pp_boost_key: The model encryption key
189 | :param metadata: OPE metadata
190 | :param feature_encryption_dict: dictionary from plaintext feature name to PRF'd feature name
191 | :return: a new PPModel corresponding to the encryption of `self`
192 | """
193 |
194 | num = metadata.affine_transform(self.cmp_val)
195 | encrypted_val = pp_boost_key.get_ope_encryptor().encrypt(num)
196 |
197 | if self.feature_name not in feature_encryption_dict:
198 | feature_encryption_dict[self.feature_name] = hmac_msg(pp_boost_key.get_prf_key(), self.feature_name)
199 | encrypted_feature = feature_encryption_dict[self.feature_name]
200 |
201 | encrypted_true_subtree = self.if_true_child.encrypt(pp_boost_key, metadata, feature_encryption_dict)
202 | encrypted_false_subtree = self.if_false_child.encrypt(pp_boost_key, metadata, feature_encryption_dict)
203 |
204 | if self.if_true_child == self.default_child:
205 | encrypted_default_subtree = encrypted_true_subtree
206 | else:
207 | encrypted_default_subtree = encrypted_false_subtree
208 |
209 | return Interior(self.id, encrypted_feature, encrypted_val, encrypted_true_subtree, encrypted_false_subtree, encrypted_default_subtree)
210 |
211 | def tree_to_string(t: TreeNode):
212 | """
213 | Serialize this tree as a string. Note that this
214 | serialization is carefully designed to match the xgboost.get_dump()
215 | so that the deserialization function works for both model types.
216 |
217 | :param t: the root of the tree
218 | :return: a string representing this tree node
219 | """
220 |
221 | return t.node_to_string(0)
222 |
223 |
224 | # Create a PPXGBoost model from a string serialization. PPXGBoost requires
225 | # granular access to model parameters, but the xgboost library doesn't
226 | # provide this level of visibility directly. Instead, we designed
227 | # serialization of PPXGBoost models so that it matches the way that
228 | # xgboost serializes models via `get_dump()`. See
229 | # https://xgboost.readthedocs.io/en/stable/python/python_api.html#xgboost.Booster.get_dump
230 | # for details. Thus this function can parse
231 | # xgboost trees serialized via `get_dump()` _or_ PPXGBoost trees serialized
232 | # via `tree_to_string()`.
233 | def parse_subtree(s, lvl):
234 | """
235 | Parse a subtree starting at a specific level.
236 |
237 | :param s: string representing the subtree
238 | :param lvl: level of this subtree in the full tree
239 | :return: a TreeNode representing this subtree
240 | """
241 |
242 | # An example tree serialization string is:
243 | #
244 | # '0:[XXX<3] yes=1,no=2,missing=1\n\t1:[Fare<13.6458502] yes=3,no=4,missing=3\n\t\t
245 | # 3:leaf=-0.00585523667\n\t\t4:leaf=0.0201724116\n\t2:leaf=-0.0114313215\n
246 | #
247 | # This represents the following tree structure:
248 | # 0:[XXX<3] yes=1,no=2,missing=1
249 | # 1:[xyz<13.6458502] yes=3,no=4,missing=3
250 | # 3:leaf=-0.00585523667
251 | # 4:leaf=0.0201724116
252 | # 2:leaf=-0.0114313215
253 |
254 | # Recall that serialization (and therefore deserialization) are based on the
255 | # xgboost library's serialization approach.
256 |
257 | # split the string into chunks where each represents a single tree_node
258 | # the first item in the list is the root for this tree
259 | current_node = re.split(r'\n', s)[0]
260 |
261 | # a regular expression for parsing a variety of numeric formats
262 | # -?: an optional leading '-' sign
263 | # (\d*\.\d+|\d+): zero or more digits followed by a decimal and one or more digits
264 | # _or_ one or more digits (an integer). Order appears to matter here!
265 | # If the integer portion is first, a float that contains a whole number
266 | # component will match to it instead of the float clause.
267 | # (e-?\d+)?: optional scientific notation suffix. The exponent has an optional
268 | # '-' sign followed by one or more digits
269 | number_regex = r'-?(\d*\.\d+|\d+)(e-?\d+)?'
270 |
271 | # a regex for parsing feature names
272 | # This reads all characters lazily until the delimiter for the feature name '<' is reached
273 | feature_name_regex = r'[^<]+'
274 |
275 | # a regular expression for parsing a leaf node, which has the pattern ':leaf='
276 | leaf_regex_str = r'(?P\d+):leaf=(?P' + number_regex + ')'
277 |
278 | leaf_node_regex = re.compile(leaf_regex_str)
279 |
280 | # a regex to parse an interior node, which has the pattern like '0:[XYZ ABC<3] yes=1,no=2,missing=1'
281 | interior_node_regex = re.compile(r'(?P\d+):\[(?P' + feature_name_regex + r')<(?P' + number_regex + r')] yes=(?P\d+),no=(?P\d+),missing=(?P\d+)')
282 |
283 | # convert a string to a numeric type
284 | # Unfortunately, we can't just use `float()` because
285 | # if the value is an integer in the string, it would
286 | # be serialized as a float (i.e., with a trailing '.0')
287 | # making the identity test fail
288 | def val_to_num(val):
289 | if val.isdigit():
290 | return int(val)
291 | else:
292 | return float(val)
293 |
294 | # match current node against the two patterns
295 | leaf_regex_match = leaf_node_regex.match(current_node)
296 | if leaf_regex_match is not None:
297 | return Leaf(int(leaf_regex_match.group('id')), val_to_num(leaf_regex_match.group('val')))
298 |
299 | interior_regex_match = interior_node_regex.match(current_node)
300 | if interior_regex_match is None:
301 | raise Exception("Invalid tree:\n" + current_node)
302 |
303 | # otherwise, we have successfully parsed an interior node
304 |
305 |
306 | # we've parsed the root, now find and parse the subtrees
307 | # subtrees are at level (lvl+1), which has a prefix with (lvl+1) tabs
308 | split_str = r'\n' + r'\t'*(lvl + 1)
309 |
310 | # Subtree matching extracts the left and right subtrees of current_node.
311 | # The '.+' matches current_node.
312 | # 'split_str' matches the subtree delimiter
313 | # '\d(.|\n)+' _ends_ the subtree delimiter (to avoid matching too many tabs for this level),
314 | # then matches one or more '.' (any char except \n) or \n
315 | # 'split_str' matches the second subtree delimiter
316 | # '\d(.|\n)+' _ends_ the subtree delimiter (to avoid matching too many tabs for this level),
317 | # then matches one or more '.' (any char except \n) or \n
318 | subtree_regex = re.compile(r'.+' + split_str + r'(?P\d(.|\n)+)' + split_str + r'(?P\d(.|\n)+)')
319 | subtree_match = subtree_regex.match(s)
320 |
321 | if subtree_match is None:
322 | raise Exception('invalid subtree structure\n' + repr(split_str) + '\n' + repr(s))
323 |
324 | # recurse to the next level.
325 | left_subtree = parse_subtree(subtree_match.group('left_subtree'), lvl + 1)
326 | right_subtree = parse_subtree(subtree_match.group('right_subtree'), lvl + 1)
327 |
328 | # create a dictionary that maps the subtree Id to the subtree object
329 | child_dict = {left_subtree.id: left_subtree, right_subtree.id: right_subtree}
330 |
331 | return Interior(int(interior_regex_match.group('id')),
332 | interior_regex_match.group('feature'),
333 | val_to_num(interior_regex_match.group('cmp_val')),
334 | child_dict[int(interior_regex_match.group('true'))],
335 | child_dict[int(interior_regex_match.group('false'))],
336 | child_dict[int(interior_regex_match.group('default'))])
337 |
338 |
339 | def parse_tree(tree_string):
340 | """
341 | Parse a tree from its string serialization
342 |
343 | :param tree_string: string representation of the tree
344 | :return: a TreeNode for the root of the tree
345 | """
346 |
347 | return parse_subtree(tree_string, 0)
348 |
--------------------------------------------------------------------------------
/data/titanic_test.csv:
--------------------------------------------------------------------------------
1 | PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
2 | 892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
3 | 893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
4 | 894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
5 | 895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S
6 | 896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S
7 | 897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S
8 | 898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q
9 | 899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S
10 | 900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C
11 | 901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S
12 | 902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S
13 | 903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S
14 | 904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S
15 | 905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S
16 | 906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S
17 | 907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C
18 | 908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q
19 | 909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C
20 | 910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S
21 | 911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C
22 | 912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C
23 | 913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S
24 | 914,1,"Flegenheim, Mrs. Alfred (Antoinette)",female,,0,0,PC 17598,31.6833,,S
25 | 915,1,"Williams, Mr. Richard Norris II",male,21,0,1,PC 17597,61.3792,,C
26 | 916,1,"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C
27 | 917,3,"Robins, Mr. Alexander A",male,50,1,0,A/5. 3337,14.5,,S
28 | 918,1,"Ostby, Miss. Helene Ragnhild",female,22,0,1,113509,61.9792,B36,C
29 | 919,3,"Daher, Mr. Shedid",male,22.5,0,0,2698,7.225,,C
30 | 920,1,"Brady, Mr. John Bertram",male,41,0,0,113054,30.5,A21,S
31 | 921,3,"Samaan, Mr. Elias",male,,2,0,2662,21.6792,,C
32 | 922,2,"Louch, Mr. Charles Alexander",male,50,1,0,SC/AH 3085,26,,S
33 | 923,2,"Jefferys, Mr. Clifford Thomas",male,24,2,0,C.A. 31029,31.5,,S
34 | 924,3,"Dean, Mrs. Bertram (Eva Georgetta Light)",female,33,1,2,C.A. 2315,20.575,,S
35 | 925,3,"Johnston, Mrs. Andrew G (Elizabeth Lily"" Watson)""",female,,1,2,W./C. 6607,23.45,,S
36 | 926,1,"Mock, Mr. Philipp Edmund",male,30,1,0,13236,57.75,C78,C
37 | 927,3,"Katavelas, Mr. Vassilios (Catavelas Vassilios"")""",male,18.5,0,0,2682,7.2292,,C
38 | 928,3,"Roth, Miss. Sarah A",female,,0,0,342712,8.05,,S
39 | 929,3,"Cacic, Miss. Manda",female,21,0,0,315087,8.6625,,S
40 | 930,3,"Sap, Mr. Julius",male,25,0,0,345768,9.5,,S
41 | 931,3,"Hee, Mr. Ling",male,,0,0,1601,56.4958,,S
42 | 932,3,"Karun, Mr. Franz",male,39,0,1,349256,13.4167,,C
43 | 933,1,"Franklin, Mr. Thomas Parham",male,,0,0,113778,26.55,D34,S
44 | 934,3,"Goldsmith, Mr. Nathan",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S
45 | 935,2,"Corbett, Mrs. Walter H (Irene Colvin)",female,30,0,0,237249,13,,S
46 | 936,1,"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)",female,45,1,0,11753,52.5542,D19,S
47 | 937,3,"Peltomaki, Mr. Nikolai Johannes",male,25,0,0,STON/O 2. 3101291,7.925,,S
48 | 938,1,"Chevre, Mr. Paul Romaine",male,45,0,0,PC 17594,29.7,A9,C
49 | 939,3,"Shaughnessy, Mr. Patrick",male,,0,0,370374,7.75,,Q
50 | 940,1,"Bucknell, Mrs. William Robert (Emma Eliza Ward)",female,60,0,0,11813,76.2917,D15,C
51 | 941,3,"Coutts, Mrs. William (Winnie Minnie"" Treanor)""",female,36,0,2,C.A. 37671,15.9,,S
52 | 942,1,"Smith, Mr. Lucien Philip",male,24,1,0,13695,60,C31,S
53 | 943,2,"Pulbaum, Mr. Franz",male,27,0,0,SC/PARIS 2168,15.0333,,C
54 | 944,2,"Hocking, Miss. Ellen Nellie""""",female,20,2,1,29105,23,,S
55 | 945,1,"Fortune, Miss. Ethel Flora",female,28,3,2,19950,263,C23 C25 C27,S
56 | 946,2,"Mangiavacchi, Mr. Serafino Emilio",male,,0,0,SC/A.3 2861,15.5792,,C
57 | 947,3,"Rice, Master. Albert",male,10,4,1,382652,29.125,,Q
58 | 948,3,"Cor, Mr. Bartol",male,35,0,0,349230,7.8958,,S
59 | 949,3,"Abelseth, Mr. Olaus Jorgensen",male,25,0,0,348122,7.65,F G63,S
60 | 950,3,"Davison, Mr. Thomas Henry",male,,1,0,386525,16.1,,S
61 | 951,1,"Chaudanson, Miss. Victorine",female,36,0,0,PC 17608,262.375,B61,C
62 | 952,3,"Dika, Mr. Mirko",male,17,0,0,349232,7.8958,,S
63 | 953,2,"McCrae, Mr. Arthur Gordon",male,32,0,0,237216,13.5,,S
64 | 954,3,"Bjorklund, Mr. Ernst Herbert",male,18,0,0,347090,7.75,,S
65 | 955,3,"Bradley, Miss. Bridget Delia",female,22,0,0,334914,7.725,,Q
66 | 956,1,"Ryerson, Master. John Borie",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C
67 | 957,2,"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)",female,,0,0,F.C.C. 13534,21,,S
68 | 958,3,"Burns, Miss. Mary Delia",female,18,0,0,330963,7.8792,,Q
69 | 959,1,"Moore, Mr. Clarence Bloomfield",male,47,0,0,113796,42.4,,S
70 | 960,1,"Tucker, Mr. Gilbert Milligan Jr",male,31,0,0,2543,28.5375,C53,C
71 | 961,1,"Fortune, Mrs. Mark (Mary McDougald)",female,60,1,4,19950,263,C23 C25 C27,S
72 | 962,3,"Mulvihill, Miss. Bertha E",female,24,0,0,382653,7.75,,Q
73 | 963,3,"Minkoff, Mr. Lazar",male,21,0,0,349211,7.8958,,S
74 | 964,3,"Nieminen, Miss. Manta Josefina",female,29,0,0,3101297,7.925,,S
75 | 965,1,"Ovies y Rodriguez, Mr. Servando",male,28.5,0,0,PC 17562,27.7208,D43,C
76 | 966,1,"Geiger, Miss. Amalie",female,35,0,0,113503,211.5,C130,C
77 | 967,1,"Keeping, Mr. Edwin",male,32.5,0,0,113503,211.5,C132,C
78 | 968,3,"Miles, Mr. Frank",male,,0,0,359306,8.05,,S
79 | 969,1,"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)",female,55,2,0,11770,25.7,C101,S
80 | 970,2,"Aldworth, Mr. Charles Augustus",male,30,0,0,248744,13,,S
81 | 971,3,"Doyle, Miss. Elizabeth",female,24,0,0,368702,7.75,,Q
82 | 972,3,"Boulos, Master. Akar",male,6,1,1,2678,15.2458,,C
83 | 973,1,"Straus, Mr. Isidor",male,67,1,0,PC 17483,221.7792,C55 C57,S
84 | 974,1,"Case, Mr. Howard Brown",male,49,0,0,19924,26,,S
85 | 975,3,"Demetri, Mr. Marinko",male,,0,0,349238,7.8958,,S
86 | 976,2,"Lamb, Mr. John Joseph",male,,0,0,240261,10.7083,,Q
87 | 977,3,"Khalil, Mr. Betros",male,,1,0,2660,14.4542,,C
88 | 978,3,"Barry, Miss. Julia",female,27,0,0,330844,7.8792,,Q
89 | 979,3,"Badman, Miss. Emily Louisa",female,18,0,0,A/4 31416,8.05,,S
90 | 980,3,"O'Donoghue, Ms. Bridget",female,,0,0,364856,7.75,,Q
91 | 981,2,"Wells, Master. Ralph Lester",male,2,1,1,29103,23,,S
92 | 982,3,"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)",female,22,1,0,347072,13.9,,S
93 | 983,3,"Pedersen, Mr. Olaf",male,,0,0,345498,7.775,,S
94 | 984,1,"Davidson, Mrs. Thornton (Orian Hays)",female,27,1,2,F.C. 12750,52,B71,S
95 | 985,3,"Guest, Mr. Robert",male,,0,0,376563,8.05,,S
96 | 986,1,"Birnbaum, Mr. Jakob",male,25,0,0,13905,26,,C
97 | 987,3,"Tenglin, Mr. Gunnar Isidor",male,25,0,0,350033,7.7958,,S
98 | 988,1,"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)",female,76,1,0,19877,78.85,C46,S
99 | 989,3,"Makinen, Mr. Kalle Edvard",male,29,0,0,STON/O 2. 3101268,7.925,,S
100 | 990,3,"Braf, Miss. Elin Ester Maria",female,20,0,0,347471,7.8542,,S
101 | 991,3,"Nancarrow, Mr. William Henry",male,33,0,0,A./5. 3338,8.05,,S
102 | 992,1,"Stengel, Mrs. Charles Emil Henry (Annie May Morris)",female,43,1,0,11778,55.4417,C116,C
103 | 993,2,"Weisz, Mr. Leopold",male,27,1,0,228414,26,,S
104 | 994,3,"Foley, Mr. William",male,,0,0,365235,7.75,,Q
105 | 995,3,"Johansson Palmquist, Mr. Oskar Leander",male,26,0,0,347070,7.775,,S
106 | 996,3,"Thomas, Mrs. Alexander (Thamine Thelma"")""",female,16,1,1,2625,8.5167,,C
107 | 997,3,"Holthen, Mr. Johan Martin",male,28,0,0,C 4001,22.525,,S
108 | 998,3,"Buckley, Mr. Daniel",male,21,0,0,330920,7.8208,,Q
109 | 999,3,"Ryan, Mr. Edward",male,,0,0,383162,7.75,,Q
110 | 1000,3,"Willer, Mr. Aaron (Abi Weller"")""",male,,0,0,3410,8.7125,,S
111 | 1001,2,"Swane, Mr. George",male,18.5,0,0,248734,13,F,S
112 | 1002,2,"Stanton, Mr. Samuel Ward",male,41,0,0,237734,15.0458,,C
113 | 1003,3,"Shine, Miss. Ellen Natalia",female,,0,0,330968,7.7792,,Q
114 | 1004,1,"Evans, Miss. Edith Corse",female,36,0,0,PC 17531,31.6792,A29,C
115 | 1005,3,"Buckley, Miss. Katherine",female,18.5,0,0,329944,7.2833,,Q
116 | 1006,1,"Straus, Mrs. Isidor (Rosalie Ida Blun)",female,63,1,0,PC 17483,221.7792,C55 C57,S
117 | 1007,3,"Chronopoulos, Mr. Demetrios",male,18,1,0,2680,14.4542,,C
118 | 1008,3,"Thomas, Mr. John",male,,0,0,2681,6.4375,,C
119 | 1009,3,"Sandstrom, Miss. Beatrice Irene",female,1,1,1,PP 9549,16.7,G6,S
120 | 1010,1,"Beattie, Mr. Thomson",male,36,0,0,13050,75.2417,C6,C
121 | 1011,2,"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)",female,29,1,0,SC/AH 29037,26,,S
122 | 1012,2,"Watt, Miss. Bertha J",female,12,0,0,C.A. 33595,15.75,,S
123 | 1013,3,"Kiernan, Mr. John",male,,1,0,367227,7.75,,Q
124 | 1014,1,"Schabert, Mrs. Paul (Emma Mock)",female,35,1,0,13236,57.75,C28,C
125 | 1015,3,"Carver, Mr. Alfred John",male,28,0,0,392095,7.25,,S
126 | 1016,3,"Kennedy, Mr. John",male,,0,0,368783,7.75,,Q
127 | 1017,3,"Cribb, Miss. Laura Alice",female,17,0,1,371362,16.1,,S
128 | 1018,3,"Brobeck, Mr. Karl Rudolf",male,22,0,0,350045,7.7958,,S
129 | 1019,3,"McCoy, Miss. Alicia",female,,2,0,367226,23.25,,Q
130 | 1020,2,"Bowenur, Mr. Solomon",male,42,0,0,211535,13,,S
131 | 1021,3,"Petersen, Mr. Marius",male,24,0,0,342441,8.05,,S
132 | 1022,3,"Spinner, Mr. Henry John",male,32,0,0,STON/OQ. 369943,8.05,,S
133 | 1023,1,"Gracie, Col. Archibald IV",male,53,0,0,113780,28.5,C51,C
134 | 1024,3,"Lefebre, Mrs. Frank (Frances)",female,,0,4,4133,25.4667,,S
135 | 1025,3,"Thomas, Mr. Charles P",male,,1,0,2621,6.4375,,C
136 | 1026,3,"Dintcheff, Mr. Valtcho",male,43,0,0,349226,7.8958,,S
137 | 1027,3,"Carlsson, Mr. Carl Robert",male,24,0,0,350409,7.8542,,S
138 | 1028,3,"Zakarian, Mr. Mapriededer",male,26.5,0,0,2656,7.225,,C
139 | 1029,2,"Schmidt, Mr. August",male,26,0,0,248659,13,,S
140 | 1030,3,"Drapkin, Miss. Jennie",female,23,0,0,SOTON/OQ 392083,8.05,,S
141 | 1031,3,"Goodwin, Mr. Charles Frederick",male,40,1,6,CA 2144,46.9,,S
142 | 1032,3,"Goodwin, Miss. Jessie Allis",female,10,5,2,CA 2144,46.9,,S
143 | 1033,1,"Daniels, Miss. Sarah",female,33,0,0,113781,151.55,,S
144 | 1034,1,"Ryerson, Mr. Arthur Larned",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C
145 | 1035,2,"Beauchamp, Mr. Henry James",male,28,0,0,244358,26,,S
146 | 1036,1,"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey"")""",male,42,0,0,17475,26.55,,S
147 | 1037,3,"Vander Planke, Mr. Julius",male,31,3,0,345763,18,,S
148 | 1038,1,"Hilliard, Mr. Herbert Henry",male,,0,0,17463,51.8625,E46,S
149 | 1039,3,"Davies, Mr. Evan",male,22,0,0,SC/A4 23568,8.05,,S
150 | 1040,1,"Crafton, Mr. John Bertram",male,,0,0,113791,26.55,,S
151 | 1041,2,"Lahtinen, Rev. William",male,30,1,1,250651,26,,S
152 | 1042,1,"Earnshaw, Mrs. Boulton (Olive Potter)",female,23,0,1,11767,83.1583,C54,C
153 | 1043,3,"Matinoff, Mr. Nicola",male,,0,0,349255,7.8958,,C
154 | 1044,3,"Storey, Mr. Thomas",male,60.5,0,0,3701,,,S
155 | 1045,3,"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)",female,36,0,2,350405,12.1833,,S
156 | 1046,3,"Asplund, Master. Filip Oscar",male,13,4,2,347077,31.3875,,S
157 | 1047,3,"Duquemin, Mr. Joseph",male,24,0,0,S.O./P.P. 752,7.55,,S
158 | 1048,1,"Bird, Miss. Ellen",female,29,0,0,PC 17483,221.7792,C97,S
159 | 1049,3,"Lundin, Miss. Olga Elida",female,23,0,0,347469,7.8542,,S
160 | 1050,1,"Borebank, Mr. John James",male,42,0,0,110489,26.55,D22,S
161 | 1051,3,"Peacock, Mrs. Benjamin (Edith Nile)",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S
162 | 1052,3,"Smyth, Miss. Julia",female,,0,0,335432,7.7333,,Q
163 | 1053,3,"Touma, Master. Georges Youssef",male,7,1,1,2650,15.2458,,C
164 | 1054,2,"Wright, Miss. Marion",female,26,0,0,220844,13.5,,S
165 | 1055,3,"Pearce, Mr. Ernest",male,,0,0,343271,7,,S
166 | 1056,2,"Peruschitz, Rev. Joseph Maria",male,41,0,0,237393,13,,S
167 | 1057,3,"Kink-Heilmann, Mrs. Anton (Luise Heilmann)",female,26,1,1,315153,22.025,,S
168 | 1058,1,"Brandeis, Mr. Emil",male,48,0,0,PC 17591,50.4958,B10,C
169 | 1059,3,"Ford, Mr. Edward Watson",male,18,2,2,W./C. 6608,34.375,,S
170 | 1060,1,"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)",female,,0,0,17770,27.7208,,C
171 | 1061,3,"Hellstrom, Miss. Hilda Maria",female,22,0,0,7548,8.9625,,S
172 | 1062,3,"Lithman, Mr. Simon",male,,0,0,S.O./P.P. 251,7.55,,S
173 | 1063,3,"Zakarian, Mr. Ortin",male,27,0,0,2670,7.225,,C
174 | 1064,3,"Dyker, Mr. Adolf Fredrik",male,23,1,0,347072,13.9,,S
175 | 1065,3,"Torfa, Mr. Assad",male,,0,0,2673,7.2292,,C
176 | 1066,3,"Asplund, Mr. Carl Oscar Vilhelm Gustafsson",male,40,1,5,347077,31.3875,,S
177 | 1067,2,"Brown, Miss. Edith Eileen",female,15,0,2,29750,39,,S
178 | 1068,2,"Sincock, Miss. Maude",female,20,0,0,C.A. 33112,36.75,,S
179 | 1069,1,"Stengel, Mr. Charles Emil Henry",male,54,1,0,11778,55.4417,C116,C
180 | 1070,2,"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)",female,36,0,3,230136,39,F4,S
181 | 1071,1,"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)",female,64,0,2,PC 17756,83.1583,E45,C
182 | 1072,2,"McCrie, Mr. James Matthew",male,30,0,0,233478,13,,S
183 | 1073,1,"Compton, Mr. Alexander Taylor Jr",male,37,1,1,PC 17756,83.1583,E52,C
184 | 1074,1,"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)",female,18,1,0,113773,53.1,D30,S
185 | 1075,3,"Lane, Mr. Patrick",male,,0,0,7935,7.75,,Q
186 | 1076,1,"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)",female,27,1,1,PC 17558,247.5208,B58 B60,C
187 | 1077,2,"Maybery, Mr. Frank Hubert",male,40,0,0,239059,16,,S
188 | 1078,2,"Phillips, Miss. Alice Frances Louisa",female,21,0,1,S.O./P.P. 2,21,,S
189 | 1079,3,"Davies, Mr. Joseph",male,17,2,0,A/4 48873,8.05,,S
190 | 1080,3,"Sage, Miss. Ada",female,,8,2,CA. 2343,69.55,,S
191 | 1081,2,"Veal, Mr. James",male,40,0,0,28221,13,,S
192 | 1082,2,"Angle, Mr. William A",male,34,1,0,226875,26,,S
193 | 1083,1,"Salomon, Mr. Abraham L",male,,0,0,111163,26,,S
194 | 1084,3,"van Billiard, Master. Walter John",male,11.5,1,1,A/5. 851,14.5,,S
195 | 1085,2,"Lingane, Mr. John",male,61,0,0,235509,12.35,,Q
196 | 1086,2,"Drew, Master. Marshall Brines",male,8,0,2,28220,32.5,,S
197 | 1087,3,"Karlsson, Mr. Julius Konrad Eugen",male,33,0,0,347465,7.8542,,S
198 | 1088,1,"Spedden, Master. Robert Douglas",male,6,0,2,16966,134.5,E34,C
199 | 1089,3,"Nilsson, Miss. Berta Olivia",female,18,0,0,347066,7.775,,S
200 | 1090,2,"Baimbrigge, Mr. Charles Robert",male,23,0,0,C.A. 31030,10.5,,S
201 | 1091,3,"Rasmussen, Mrs. (Lena Jacobsen Solvang)",female,,0,0,65305,8.1125,,S
202 | 1092,3,"Murphy, Miss. Nora",female,,0,0,36568,15.5,,Q
203 | 1093,3,"Danbom, Master. Gilbert Sigvard Emanuel",male,0.33,0,2,347080,14.4,,S
204 | 1094,1,"Astor, Col. John Jacob",male,47,1,0,PC 17757,227.525,C62 C64,C
205 | 1095,2,"Quick, Miss. Winifred Vera",female,8,1,1,26360,26,,S
206 | 1096,2,"Andrew, Mr. Frank Thomas",male,25,0,0,C.A. 34050,10.5,,S
207 | 1097,1,"Omont, Mr. Alfred Fernand",male,,0,0,F.C. 12998,25.7417,,C
208 | 1098,3,"McGowan, Miss. Katherine",female,35,0,0,9232,7.75,,Q
209 | 1099,2,"Collett, Mr. Sidney C Stuart",male,24,0,0,28034,10.5,,S
210 | 1100,1,"Rosenbaum, Miss. Edith Louise",female,33,0,0,PC 17613,27.7208,A11,C
211 | 1101,3,"Delalic, Mr. Redjo",male,25,0,0,349250,7.8958,,S
212 | 1102,3,"Andersen, Mr. Albert Karvin",male,32,0,0,C 4001,22.525,,S
213 | 1103,3,"Finoli, Mr. Luigi",male,,0,0,SOTON/O.Q. 3101308,7.05,,S
214 | 1104,2,"Deacon, Mr. Percy William",male,17,0,0,S.O.C. 14879,73.5,,S
215 | 1105,2,"Howard, Mrs. Benjamin (Ellen Truelove Arman)",female,60,1,0,24065,26,,S
216 | 1106,3,"Andersson, Miss. Ida Augusta Margareta",female,38,4,2,347091,7.775,,S
217 | 1107,1,"Head, Mr. Christopher",male,42,0,0,113038,42.5,B11,S
218 | 1108,3,"Mahon, Miss. Bridget Delia",female,,0,0,330924,7.8792,,Q
219 | 1109,1,"Wick, Mr. George Dennick",male,57,1,1,36928,164.8667,,S
220 | 1110,1,"Widener, Mrs. George Dunton (Eleanor Elkins)",female,50,1,1,113503,211.5,C80,C
221 | 1111,3,"Thomson, Mr. Alexander Morrison",male,,0,0,32302,8.05,,S
222 | 1112,2,"Duran y More, Miss. Florentina",female,30,1,0,SC/PARIS 2148,13.8583,,C
223 | 1113,3,"Reynolds, Mr. Harold J",male,21,0,0,342684,8.05,,S
224 | 1114,2,"Cook, Mrs. (Selena Rogers)",female,22,0,0,W./C. 14266,10.5,F33,S
225 | 1115,3,"Karlsson, Mr. Einar Gervasius",male,21,0,0,350053,7.7958,,S
226 | 1116,1,"Candee, Mrs. Edward (Helen Churchill Hungerford)",female,53,0,0,PC 17606,27.4458,,C
227 | 1117,3,"Moubarek, Mrs. George (Omine Amenia"" Alexander)""",female,,0,2,2661,15.2458,,C
228 | 1118,3,"Asplund, Mr. Johan Charles",male,23,0,0,350054,7.7958,,S
229 | 1119,3,"McNeill, Miss. Bridget",female,,0,0,370368,7.75,,Q
230 | 1120,3,"Everett, Mr. Thomas James",male,40.5,0,0,C.A. 6212,15.1,,S
231 | 1121,2,"Hocking, Mr. Samuel James Metcalfe",male,36,0,0,242963,13,,S
232 | 1122,2,"Sweet, Mr. George Frederick",male,14,0,0,220845,65,,S
233 | 1123,1,"Willard, Miss. Constance",female,21,0,0,113795,26.55,,S
234 | 1124,3,"Wiklund, Mr. Karl Johan",male,21,1,0,3101266,6.4958,,S
235 | 1125,3,"Linehan, Mr. Michael",male,,0,0,330971,7.8792,,Q
236 | 1126,1,"Cumings, Mr. John Bradley",male,39,1,0,PC 17599,71.2833,C85,C
237 | 1127,3,"Vendel, Mr. Olof Edvin",male,20,0,0,350416,7.8542,,S
238 | 1128,1,"Warren, Mr. Frank Manley",male,64,1,0,110813,75.25,D37,C
239 | 1129,3,"Baccos, Mr. Raffull",male,20,0,0,2679,7.225,,C
240 | 1130,2,"Hiltunen, Miss. Marta",female,18,1,1,250650,13,,S
241 | 1131,1,"Douglas, Mrs. Walter Donald (Mahala Dutton)",female,48,1,0,PC 17761,106.425,C86,C
242 | 1132,1,"Lindstrom, Mrs. Carl Johan (Sigrid Posse)",female,55,0,0,112377,27.7208,,C
243 | 1133,2,"Christy, Mrs. (Alice Frances)",female,45,0,2,237789,30,,S
244 | 1134,1,"Spedden, Mr. Frederic Oakley",male,45,1,1,16966,134.5,E34,C
245 | 1135,3,"Hyman, Mr. Abraham",male,,0,0,3470,7.8875,,S
246 | 1136,3,"Johnston, Master. William Arthur Willie""""",male,,1,2,W./C. 6607,23.45,,S
247 | 1137,1,"Kenyon, Mr. Frederick R",male,41,1,0,17464,51.8625,D21,S
248 | 1138,2,"Karnes, Mrs. J Frank (Claire Bennett)",female,22,0,0,F.C.C. 13534,21,,S
249 | 1139,2,"Drew, Mr. James Vivian",male,42,1,1,28220,32.5,,S
250 | 1140,2,"Hold, Mrs. Stephen (Annie Margaret Hill)",female,29,1,0,26707,26,,S
251 | 1141,3,"Khalil, Mrs. Betros (Zahie Maria"" Elias)""",female,,1,0,2660,14.4542,,C
252 | 1142,2,"West, Miss. Barbara J",female,0.92,1,2,C.A. 34651,27.75,,S
253 | 1143,3,"Abrahamsson, Mr. Abraham August Johannes",male,20,0,0,SOTON/O2 3101284,7.925,,S
254 | 1144,1,"Clark, Mr. Walter Miller",male,27,1,0,13508,136.7792,C89,C
255 | 1145,3,"Salander, Mr. Karl Johan",male,24,0,0,7266,9.325,,S
256 | 1146,3,"Wenzel, Mr. Linhart",male,32.5,0,0,345775,9.5,,S
257 | 1147,3,"MacKay, Mr. George William",male,,0,0,C.A. 42795,7.55,,S
258 | 1148,3,"Mahon, Mr. John",male,,0,0,AQ/4 3130,7.75,,Q
259 | 1149,3,"Niklasson, Mr. Samuel",male,28,0,0,363611,8.05,,S
260 | 1150,2,"Bentham, Miss. Lilian W",female,19,0,0,28404,13,,S
261 | 1151,3,"Midtsjo, Mr. Karl Albert",male,21,0,0,345501,7.775,,S
262 | 1152,3,"de Messemaeker, Mr. Guillaume Joseph",male,36.5,1,0,345572,17.4,,S
263 | 1153,3,"Nilsson, Mr. August Ferdinand",male,21,0,0,350410,7.8542,,S
264 | 1154,2,"Wells, Mrs. Arthur Henry (Addie"" Dart Trevaskis)""",female,29,0,2,29103,23,,S
265 | 1155,3,"Klasen, Miss. Gertrud Emilia",female,1,1,1,350405,12.1833,,S
266 | 1156,2,"Portaluppi, Mr. Emilio Ilario Giuseppe",male,30,0,0,C.A. 34644,12.7375,,C
267 | 1157,3,"Lyntakoff, Mr. Stanko",male,,0,0,349235,7.8958,,S
268 | 1158,1,"Chisholm, Mr. Roderick Robert Crispin",male,,0,0,112051,0,,S
269 | 1159,3,"Warren, Mr. Charles William",male,,0,0,C.A. 49867,7.55,,S
270 | 1160,3,"Howard, Miss. May Elizabeth",female,,0,0,A. 2. 39186,8.05,,S
271 | 1161,3,"Pokrnic, Mr. Mate",male,17,0,0,315095,8.6625,,S
272 | 1162,1,"McCaffry, Mr. Thomas Francis",male,46,0,0,13050,75.2417,C6,C
273 | 1163,3,"Fox, Mr. Patrick",male,,0,0,368573,7.75,,Q
274 | 1164,1,"Clark, Mrs. Walter Miller (Virginia McDowell)",female,26,1,0,13508,136.7792,C89,C
275 | 1165,3,"Lennon, Miss. Mary",female,,1,0,370371,15.5,,Q
276 | 1166,3,"Saade, Mr. Jean Nassr",male,,0,0,2676,7.225,,C
277 | 1167,2,"Bryhl, Miss. Dagmar Jenny Ingeborg ",female,20,1,0,236853,26,,S
278 | 1168,2,"Parker, Mr. Clifford Richard",male,28,0,0,SC 14888,10.5,,S
279 | 1169,2,"Faunthorpe, Mr. Harry",male,40,1,0,2926,26,,S
280 | 1170,2,"Ware, Mr. John James",male,30,1,0,CA 31352,21,,S
281 | 1171,2,"Oxenham, Mr. Percy Thomas",male,22,0,0,W./C. 14260,10.5,,S
282 | 1172,3,"Oreskovic, Miss. Jelka",female,23,0,0,315085,8.6625,,S
283 | 1173,3,"Peacock, Master. Alfred Edward",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S
284 | 1174,3,"Fleming, Miss. Honora",female,,0,0,364859,7.75,,Q
285 | 1175,3,"Touma, Miss. Maria Youssef",female,9,1,1,2650,15.2458,,C
286 | 1176,3,"Rosblom, Miss. Salli Helena",female,2,1,1,370129,20.2125,,S
287 | 1177,3,"Dennis, Mr. William",male,36,0,0,A/5 21175,7.25,,S
288 | 1178,3,"Franklin, Mr. Charles (Charles Fardon)",male,,0,0,SOTON/O.Q. 3101314,7.25,,S
289 | 1179,1,"Snyder, Mr. John Pillsbury",male,24,1,0,21228,82.2667,B45,S
290 | 1180,3,"Mardirosian, Mr. Sarkis",male,,0,0,2655,7.2292,F E46,C
291 | 1181,3,"Ford, Mr. Arthur",male,,0,0,A/5 1478,8.05,,S
292 | 1182,1,"Rheims, Mr. George Alexander Lucien",male,,0,0,PC 17607,39.6,,S
293 | 1183,3,"Daly, Miss. Margaret Marcella Maggie""""",female,30,0,0,382650,6.95,,Q
294 | 1184,3,"Nasr, Mr. Mustafa",male,,0,0,2652,7.2292,,C
295 | 1185,1,"Dodge, Dr. Washington",male,53,1,1,33638,81.8583,A34,S
296 | 1186,3,"Wittevrongel, Mr. Camille",male,36,0,0,345771,9.5,,S
297 | 1187,3,"Angheloff, Mr. Minko",male,26,0,0,349202,7.8958,,S
298 | 1188,2,"Laroche, Miss. Louise",female,1,1,2,SC/Paris 2123,41.5792,,C
299 | 1189,3,"Samaan, Mr. Hanna",male,,2,0,2662,21.6792,,C
300 | 1190,1,"Loring, Mr. Joseph Holland",male,30,0,0,113801,45.5,,S
301 | 1191,3,"Johansson, Mr. Nils",male,29,0,0,347467,7.8542,,S
302 | 1192,3,"Olsson, Mr. Oscar Wilhelm",male,32,0,0,347079,7.775,,S
303 | 1193,2,"Malachard, Mr. Noel",male,,0,0,237735,15.0458,D,C
304 | 1194,2,"Phillips, Mr. Escott Robert",male,43,0,1,S.O./P.P. 2,21,,S
305 | 1195,3,"Pokrnic, Mr. Tome",male,24,0,0,315092,8.6625,,S
306 | 1196,3,"McCarthy, Miss. Catherine Katie""""",female,,0,0,383123,7.75,,Q
307 | 1197,1,"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)",female,64,1,1,112901,26.55,B26,S
308 | 1198,1,"Allison, Mr. Hudson Joshua Creighton",male,30,1,2,113781,151.55,C22 C26,S
309 | 1199,3,"Aks, Master. Philip Frank",male,0.83,0,1,392091,9.35,,S
310 | 1200,1,"Hays, Mr. Charles Melville",male,55,1,1,12749,93.5,B69,S
311 | 1201,3,"Hansen, Mrs. Claus Peter (Jennie L Howard)",female,45,1,0,350026,14.1083,,S
312 | 1202,3,"Cacic, Mr. Jego Grga",male,18,0,0,315091,8.6625,,S
313 | 1203,3,"Vartanian, Mr. David",male,22,0,0,2658,7.225,,C
314 | 1204,3,"Sadowitz, Mr. Harry",male,,0,0,LP 1588,7.575,,S
315 | 1205,3,"Carr, Miss. Jeannie",female,37,0,0,368364,7.75,,Q
316 | 1206,1,"White, Mrs. John Stuart (Ella Holmes)",female,55,0,0,PC 17760,135.6333,C32,C
317 | 1207,3,"Hagardon, Miss. Kate",female,17,0,0,AQ/3. 30631,7.7333,,Q
318 | 1208,1,"Spencer, Mr. William Augustus",male,57,1,0,PC 17569,146.5208,B78,C
319 | 1209,2,"Rogers, Mr. Reginald Harry",male,19,0,0,28004,10.5,,S
320 | 1210,3,"Jonsson, Mr. Nils Hilding",male,27,0,0,350408,7.8542,,S
321 | 1211,2,"Jefferys, Mr. Ernest Wilfred",male,22,2,0,C.A. 31029,31.5,,S
322 | 1212,3,"Andersson, Mr. Johan Samuel",male,26,0,0,347075,7.775,,S
323 | 1213,3,"Krekorian, Mr. Neshan",male,25,0,0,2654,7.2292,F E57,C
324 | 1214,2,"Nesson, Mr. Israel",male,26,0,0,244368,13,F2,S
325 | 1215,1,"Rowe, Mr. Alfred G",male,33,0,0,113790,26.55,,S
326 | 1216,1,"Kreuchen, Miss. Emilie",female,39,0,0,24160,211.3375,,S
327 | 1217,3,"Assam, Mr. Ali",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S
328 | 1218,2,"Becker, Miss. Ruth Elizabeth",female,12,2,1,230136,39,F4,S
329 | 1219,1,"Rosenshine, Mr. George (Mr George Thorne"")""",male,46,0,0,PC 17585,79.2,,C
330 | 1220,2,"Clarke, Mr. Charles Valentine",male,29,1,0,2003,26,,S
331 | 1221,2,"Enander, Mr. Ingvar",male,21,0,0,236854,13,,S
332 | 1222,2,"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) ",female,48,0,2,C.A. 33112,36.75,,S
333 | 1223,1,"Dulles, Mr. William Crothers",male,39,0,0,PC 17580,29.7,A18,C
334 | 1224,3,"Thomas, Mr. Tannous",male,,0,0,2684,7.225,,C
335 | 1225,3,"Nakid, Mrs. Said (Waika Mary"" Mowad)""",female,19,1,1,2653,15.7417,,C
336 | 1226,3,"Cor, Mr. Ivan",male,27,0,0,349229,7.8958,,S
337 | 1227,1,"Maguire, Mr. John Edward",male,30,0,0,110469,26,C106,S
338 | 1228,2,"de Brito, Mr. Jose Joaquim",male,32,0,0,244360,13,,S
339 | 1229,3,"Elias, Mr. Joseph",male,39,0,2,2675,7.2292,,C
340 | 1230,2,"Denbury, Mr. Herbert",male,25,0,0,C.A. 31029,31.5,,S
341 | 1231,3,"Betros, Master. Seman",male,,0,0,2622,7.2292,,C
342 | 1232,2,"Fillbrook, Mr. Joseph Charles",male,18,0,0,C.A. 15185,10.5,,S
343 | 1233,3,"Lundstrom, Mr. Thure Edvin",male,32,0,0,350403,7.5792,,S
344 | 1234,3,"Sage, Mr. John George",male,,1,9,CA. 2343,69.55,,S
345 | 1235,1,"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C
346 | 1236,3,"van Billiard, Master. James William",male,,1,1,A/5. 851,14.5,,S
347 | 1237,3,"Abelseth, Miss. Karen Marie",female,16,0,0,348125,7.65,,S
348 | 1238,2,"Botsford, Mr. William Hull",male,26,0,0,237670,13,,S
349 | 1239,3,"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)",female,38,0,0,2688,7.2292,,C
350 | 1240,2,"Giles, Mr. Ralph",male,24,0,0,248726,13.5,,S
351 | 1241,2,"Walcroft, Miss. Nellie",female,31,0,0,F.C.C. 13528,21,,S
352 | 1242,1,"Greenfield, Mrs. Leo David (Blanche Strouse)",female,45,0,1,PC 17759,63.3583,D10 D12,C
353 | 1243,2,"Stokes, Mr. Philip Joseph",male,25,0,0,F.C.C. 13540,10.5,,S
354 | 1244,2,"Dibden, Mr. William",male,18,0,0,S.O.C. 14879,73.5,,S
355 | 1245,2,"Herman, Mr. Samuel",male,49,1,2,220845,65,,S
356 | 1246,3,"Dean, Miss. Elizabeth Gladys Millvina""""",female,0.17,1,2,C.A. 2315,20.575,,S
357 | 1247,1,"Julian, Mr. Henry Forbes",male,50,0,0,113044,26,E60,S
358 | 1248,1,"Brown, Mrs. John Murray (Caroline Lane Lamson)",female,59,2,0,11769,51.4792,C101,S
359 | 1249,3,"Lockyer, Mr. Edward",male,,0,0,1222,7.8792,,S
360 | 1250,3,"O'Keefe, Mr. Patrick",male,,0,0,368402,7.75,,Q
361 | 1251,3,"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)",female,30,1,0,349910,15.55,,S
362 | 1252,3,"Sage, Master. William Henry",male,14.5,8,2,CA. 2343,69.55,,S
363 | 1253,2,"Mallet, Mrs. Albert (Antoinette Magnin)",female,24,1,1,S.C./PARIS 2079,37.0042,,C
364 | 1254,2,"Ware, Mrs. John James (Florence Louise Long)",female,31,0,0,CA 31352,21,,S
365 | 1255,3,"Strilic, Mr. Ivan",male,27,0,0,315083,8.6625,,S
366 | 1256,1,"Harder, Mrs. George Achilles (Dorothy Annan)",female,25,1,0,11765,55.4417,E50,C
367 | 1257,3,"Sage, Mrs. John (Annie Bullen)",female,,1,9,CA. 2343,69.55,,S
368 | 1258,3,"Caram, Mr. Joseph",male,,1,0,2689,14.4583,,C
369 | 1259,3,"Riihivouri, Miss. Susanna Juhantytar Sanni""""",female,22,0,0,3101295,39.6875,,S
370 | 1260,1,"Gibson, Mrs. Leonard (Pauline C Boeson)",female,45,0,1,112378,59.4,,C
371 | 1261,2,"Pallas y Castello, Mr. Emilio",male,29,0,0,SC/PARIS 2147,13.8583,,C
372 | 1262,2,"Giles, Mr. Edgar",male,21,1,0,28133,11.5,,S
373 | 1263,1,"Wilson, Miss. Helen Alice",female,31,0,0,16966,134.5,E39 E41,C
374 | 1264,1,"Ismay, Mr. Joseph Bruce",male,49,0,0,112058,0,B52 B54 B56,S
375 | 1265,2,"Harbeck, Mr. William H",male,44,0,0,248746,13,,S
376 | 1266,1,"Dodge, Mrs. Washington (Ruth Vidaver)",female,54,1,1,33638,81.8583,A34,S
377 | 1267,1,"Bowen, Miss. Grace Scott",female,45,0,0,PC 17608,262.375,,C
378 | 1268,3,"Kink, Miss. Maria",female,22,2,0,315152,8.6625,,S
379 | 1269,2,"Cotterill, Mr. Henry Harry""""",male,21,0,0,29107,11.5,,S
380 | 1270,1,"Hipkins, Mr. William Edward",male,55,0,0,680,50,C39,S
381 | 1271,3,"Asplund, Master. Carl Edgar",male,5,4,2,347077,31.3875,,S
382 | 1272,3,"O'Connor, Mr. Patrick",male,,0,0,366713,7.75,,Q
383 | 1273,3,"Foley, Mr. Joseph",male,26,0,0,330910,7.8792,,Q
384 | 1274,3,"Risien, Mrs. Samuel (Emma)",female,,0,0,364498,14.5,,S
385 | 1275,3,"McNamee, Mrs. Neal (Eileen O'Leary)",female,19,1,0,376566,16.1,,S
386 | 1276,2,"Wheeler, Mr. Edwin Frederick""""",male,,0,0,SC/PARIS 2159,12.875,,S
387 | 1277,2,"Herman, Miss. Kate",female,24,1,2,220845,65,,S
388 | 1278,3,"Aronsson, Mr. Ernst Axel Algot",male,24,0,0,349911,7.775,,S
389 | 1279,2,"Ashby, Mr. John",male,57,0,0,244346,13,,S
390 | 1280,3,"Canavan, Mr. Patrick",male,21,0,0,364858,7.75,,Q
391 | 1281,3,"Palsson, Master. Paul Folke",male,6,3,1,349909,21.075,,S
392 | 1282,1,"Payne, Mr. Vivian Ponsonby",male,23,0,0,12749,93.5,B24,S
393 | 1283,1,"Lines, Mrs. Ernest H (Elizabeth Lindsey James)",female,51,0,1,PC 17592,39.4,D28,S
394 | 1284,3,"Abbott, Master. Eugene Joseph",male,13,0,2,C.A. 2673,20.25,,S
395 | 1285,2,"Gilbert, Mr. William",male,47,0,0,C.A. 30769,10.5,,S
396 | 1286,3,"Kink-Heilmann, Mr. Anton",male,29,3,1,315153,22.025,,S
397 | 1287,1,"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",female,18,1,0,13695,60,C31,S
398 | 1288,3,"Colbert, Mr. Patrick",male,24,0,0,371109,7.25,,Q
399 | 1289,1,"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)",female,48,1,1,13567,79.2,B41,C
400 | 1290,3,"Larsson-Rondberg, Mr. Edvard A",male,22,0,0,347065,7.775,,S
401 | 1291,3,"Conlon, Mr. Thomas Henry",male,31,0,0,21332,7.7333,,Q
402 | 1292,1,"Bonnell, Miss. Caroline",female,30,0,0,36928,164.8667,C7,S
403 | 1293,2,"Gale, Mr. Harry",male,38,1,0,28664,21,,S
404 | 1294,1,"Gibson, Miss. Dorothy Winifred",female,22,0,1,112378,59.4,,C
405 | 1295,1,"Carrau, Mr. Jose Pedro",male,17,0,0,113059,47.1,,S
406 | 1296,1,"Frauenthal, Mr. Isaac Gerald",male,43,1,0,17765,27.7208,D40,C
407 | 1297,2,"Nourney, Mr. Alfred (Baron von Drachstedt"")""",male,20,0,0,SC/PARIS 2166,13.8625,D38,C
408 | 1298,2,"Ware, Mr. William Jeffery",male,23,1,0,28666,10.5,,S
409 | 1299,1,"Widener, Mr. George Dunton",male,50,1,1,113503,211.5,C80,C
410 | 1300,3,"Riordan, Miss. Johanna Hannah""""",female,,0,0,334915,7.7208,,Q
411 | 1301,3,"Peacock, Miss. Treasteall",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S
412 | 1302,3,"Naughton, Miss. Hannah",female,,0,0,365237,7.75,,Q
413 | 1303,1,"Minahan, Mrs. William Edward (Lillian E Thorpe)",female,37,1,0,19928,90,C78,Q
414 | 1304,3,"Henriksson, Miss. Jenny Lovisa",female,28,0,0,347086,7.775,,S
415 | 1305,3,"Spector, Mr. Woolf",male,,0,0,A.5. 3236,8.05,,S
416 | 1306,1,"Oliva y Ocana, Dona. Fermina",female,39,0,0,PC 17758,108.9,C105,C
417 | 1307,3,"Saether, Mr. Simon Sivertsen",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S
418 | 1308,3,"Ware, Mr. Frederick",male,,0,0,359309,8.05,,S
419 | 1309,3,"Peter, Master. Michael J",male,,1,1,2668,22.3583,,C
420 |
--------------------------------------------------------------------------------
/data/titanic_train.csv:
--------------------------------------------------------------------------------
1 | PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
2 | 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
3 | 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
4 | 3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
5 | 4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
6 | 5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
7 | 6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q
8 | 7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S
9 | 8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S
10 | 9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S
11 | 10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C
12 | 11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S
13 | 12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S
14 | 13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S
15 | 14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S
16 | 15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S
17 | 16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S
18 | 17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q
19 | 18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S
20 | 19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S
21 | 20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C
22 | 21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S
23 | 22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S
24 | 23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q
25 | 24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S
26 | 25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S
27 | 26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S
28 | 27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C
29 | 28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S
30 | 29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q
31 | 30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S
32 | 31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C
33 | 32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C
34 | 33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q
35 | 34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S
36 | 35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C
37 | 36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S
38 | 37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C
39 | 38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S
40 | 39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S
41 | 40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C
42 | 41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S
43 | 42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S
44 | 43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C
45 | 44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C
46 | 45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q
47 | 46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S
48 | 47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q
49 | 48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q
50 | 49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C
51 | 50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S
52 | 51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S
53 | 52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S
54 | 53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C
55 | 54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S
56 | 55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C
57 | 56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S
58 | 57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S
59 | 58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C
60 | 59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S
61 | 60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S
62 | 61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C
63 | 62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28,
64 | 63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S
65 | 64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S
66 | 65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C
67 | 66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C
68 | 67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S
69 | 68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S
70 | 69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S
71 | 70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S
72 | 71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S
73 | 72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S
74 | 73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S
75 | 74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C
76 | 75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S
77 | 76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S
78 | 77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S
79 | 78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S
80 | 79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S
81 | 80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S
82 | 81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S
83 | 82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S
84 | 83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q
85 | 84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S
86 | 85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S
87 | 86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S
88 | 87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S
89 | 88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S
90 | 89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S
91 | 90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S
92 | 91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S
93 | 92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S
94 | 93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S
95 | 94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S
96 | 95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S
97 | 96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S
98 | 97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C
99 | 98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C
100 | 99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S
101 | 100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S
102 | 101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S
103 | 102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S
104 | 103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S
105 | 104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S
106 | 105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S
107 | 106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S
108 | 107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S
109 | 108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S
110 | 109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S
111 | 110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q
112 | 111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S
113 | 112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C
114 | 113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S
115 | 114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S
116 | 115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C
117 | 116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S
118 | 117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q
119 | 118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S
120 | 119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C
121 | 120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S
122 | 121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S
123 | 122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S
124 | 123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C
125 | 124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S
126 | 125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S
127 | 126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C
128 | 127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q
129 | 128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S
130 | 129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C
131 | 130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S
132 | 131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C
133 | 132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S
134 | 133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S
135 | 134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S
136 | 135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S
137 | 136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C
138 | 137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S
139 | 138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S
140 | 139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S
141 | 140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C
142 | 141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C
143 | 142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S
144 | 143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S
145 | 144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q
146 | 145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S
147 | 146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S
148 | 147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S
149 | 148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S
150 | 149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S
151 | 150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S
152 | 151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S
153 | 152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S
154 | 153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S
155 | 154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S
156 | 155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S
157 | 156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C
158 | 157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q
159 | 158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S
160 | 159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S
161 | 160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S
162 | 161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S
163 | 162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S
164 | 163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S
165 | 164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S
166 | 165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S
167 | 166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S
168 | 167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S
169 | 168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S
170 | 169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S
171 | 170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S
172 | 171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S
173 | 172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q
174 | 173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S
175 | 174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S
176 | 175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C
177 | 176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S
178 | 177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S
179 | 178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C
180 | 179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S
181 | 180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S
182 | 181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S
183 | 182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C
184 | 183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S
185 | 184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S
186 | 185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S
187 | 186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S
188 | 187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q
189 | 188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S
190 | 189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q
191 | 190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S
192 | 191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S
193 | 192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S
194 | 193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S
195 | 194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S
196 | 195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C
197 | 196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C
198 | 197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q
199 | 198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S
200 | 199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q
201 | 200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S
202 | 201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S
203 | 202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S
204 | 203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S
205 | 204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C
206 | 205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S
207 | 206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S
208 | 207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S
209 | 208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C
210 | 209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q
211 | 210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C
212 | 211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S
213 | 212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S
214 | 213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S
215 | 214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S
216 | 215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q
217 | 216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C
218 | 217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S
219 | 218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S
220 | 219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C
221 | 220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S
222 | 221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S
223 | 222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S
224 | 223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S
225 | 224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S
226 | 225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S
227 | 226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S
228 | 227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S
229 | 228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S
230 | 229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S
231 | 230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S
232 | 231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S
233 | 232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S
234 | 233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S
235 | 234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S
236 | 235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S
237 | 236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S
238 | 237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S
239 | 238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S
240 | 239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S
241 | 240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S
242 | 241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C
243 | 242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q
244 | 243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S
245 | 244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S
246 | 245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C
247 | 246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q
248 | 247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S
249 | 248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S
250 | 249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S
251 | 250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S
252 | 251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S
253 | 252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S
254 | 253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S
255 | 254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S
256 | 255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S
257 | 256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C
258 | 257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C
259 | 258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S
260 | 259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C
261 | 260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S
262 | 261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q
263 | 262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S
264 | 263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S
265 | 264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S
266 | 265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q
267 | 266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S
268 | 267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S
269 | 268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S
270 | 269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S
271 | 270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S
272 | 271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S
273 | 272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S
274 | 273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S
275 | 274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C
276 | 275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q
277 | 276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S
278 | 277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S
279 | 278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S
280 | 279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q
281 | 280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S
282 | 281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q
283 | 282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S
284 | 283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S
285 | 284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S
286 | 285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S
287 | 286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C
288 | 287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S
289 | 288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S
290 | 289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S
291 | 290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q
292 | 291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S
293 | 292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C
294 | 293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C
295 | 294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S
296 | 295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S
297 | 296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C
298 | 297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C
299 | 298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S
300 | 299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S
301 | 300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C
302 | 301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q
303 | 302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q
304 | 303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S
305 | 304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q
306 | 305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S
307 | 306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S
308 | 307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C
309 | 308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C
310 | 309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C
311 | 310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C
312 | 311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C
313 | 312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C
314 | 313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S
315 | 314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S
316 | 315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S
317 | 316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S
318 | 317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S
319 | 318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S
320 | 319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S
321 | 320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C
322 | 321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S
323 | 322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S
324 | 323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q
325 | 324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S
326 | 325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S
327 | 326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C
328 | 327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S
329 | 328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S
330 | 329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S
331 | 330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C
332 | 331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q
333 | 332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S
334 | 333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S
335 | 334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S
336 | 335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S
337 | 336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S
338 | 337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S
339 | 338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C
340 | 339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S
341 | 340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S
342 | 341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S
343 | 342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S
344 | 343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S
345 | 344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S
346 | 345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S
347 | 346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S
348 | 347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S
349 | 348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S
350 | 349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S
351 | 350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S
352 | 351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S
353 | 352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S
354 | 353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C
355 | 354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S
356 | 355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C
357 | 356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S
358 | 357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S
359 | 358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S
360 | 359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q
361 | 360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q
362 | 361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S
363 | 362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C
364 | 363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C
365 | 364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S
366 | 365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q
367 | 366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S
368 | 367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C
369 | 368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C
370 | 369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q
371 | 370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C
372 | 371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C
373 | 372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S
374 | 373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S
375 | 374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C
376 | 375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S
377 | 376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C
378 | 377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S
379 | 378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C
380 | 379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C
381 | 380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S
382 | 381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C
383 | 382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C
384 | 383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S
385 | 384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S
386 | 385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S
387 | 386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S
388 | 387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S
389 | 388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S
390 | 389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q
391 | 390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C
392 | 391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S
393 | 392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S
394 | 393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S
395 | 394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C
396 | 395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S
397 | 396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S
398 | 397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S
399 | 398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S
400 | 399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S
401 | 400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S
402 | 401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S
403 | 402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S
404 | 403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S
405 | 404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S
406 | 405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S
407 | 406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S
408 | 407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S
409 | 408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S
410 | 409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S
411 | 410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S
412 | 411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S
413 | 412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q
414 | 413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q
415 | 414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S
416 | 415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S
417 | 416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S
418 | 417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S
419 | 418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S
420 | 419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S
421 | 420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S
422 | 421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C
423 | 422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q
424 | 423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S
425 | 424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S
426 | 425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S
427 | 426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S
428 | 427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S
429 | 428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S
430 | 429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q
431 | 430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S
432 | 431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S
433 | 432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S
434 | 433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S
435 | 434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S
436 | 435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S
437 | 436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S
438 | 437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S
439 | 438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S
440 | 439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S
441 | 440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S
442 | 441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S
443 | 442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S
444 | 443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S
445 | 444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S
446 | 445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S
447 | 446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S
448 | 447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S
449 | 448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S
450 | 449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C
451 | 450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S
452 | 451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S
453 | 452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S
454 | 453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C
455 | 454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C
456 | 455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S
457 | 456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C
458 | 457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S
459 | 458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S
460 | 459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S
461 | 460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q
462 | 461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S
463 | 462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S
464 | 463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S
465 | 464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S
466 | 465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S
467 | 466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S
468 | 467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S
469 | 468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S
470 | 469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q
471 | 470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C
472 | 471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S
473 | 472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S
474 | 473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S
475 | 474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C
476 | 475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S
477 | 476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S
478 | 477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S
479 | 478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S
480 | 479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S
481 | 480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S
482 | 481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S
483 | 482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S
484 | 483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S
485 | 484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S
486 | 485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C
487 | 486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S
488 | 487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S
489 | 488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C
490 | 489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S
491 | 490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S
492 | 491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S
493 | 492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S
494 | 493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S
495 | 494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C
496 | 495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S
497 | 496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C
498 | 497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C
499 | 498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S
500 | 499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S
501 | 500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S
502 | 501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S
503 | 502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q
504 | 503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q
505 | 504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S
506 | 505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S
507 | 506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C
508 | 507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S
509 | 508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S
510 | 509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S
511 | 510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S
512 | 511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q
513 | 512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S
514 | 513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S
515 | 514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C
516 | 515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S
517 | 516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S
518 | 517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S
519 | 518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q
520 | 519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S
521 | 520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S
522 | 521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S
523 | 522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S
524 | 523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C
525 | 524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C
526 | 525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C
527 | 526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q
528 | 527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S
529 | 528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S
530 | 529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S
531 | 530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S
532 | 531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S
533 | 532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C
534 | 533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C
535 | 534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C
536 | 535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S
537 | 536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S
538 | 537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S
539 | 538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C
540 | 539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S
541 | 540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C
542 | 541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S
543 | 542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S
544 | 543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S
545 | 544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S
546 | 545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C
547 | 546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S
548 | 547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S
549 | 548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C
550 | 549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S
551 | 550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S
552 | 551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C
553 | 552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S
554 | 553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q
555 | 554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C
556 | 555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S
557 | 556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S
558 | 557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C
559 | 558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C
560 | 559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S
561 | 560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S
562 | 561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q
563 | 562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S
564 | 563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S
565 | 564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S
566 | 565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S
567 | 566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S
568 | 567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S
569 | 568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S
570 | 569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C
571 | 570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S
572 | 571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S
573 | 572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S
574 | 573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S
575 | 574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q
576 | 575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S
577 | 576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S
578 | 577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S
579 | 578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S
580 | 579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C
581 | 580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S
582 | 581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S
583 | 582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C
584 | 583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S
585 | 584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C
586 | 585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C
587 | 586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S
588 | 587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S
589 | 588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C
590 | 589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S
591 | 590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S
592 | 591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S
593 | 592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C
594 | 593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S
595 | 594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q
596 | 595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S
597 | 596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S
598 | 597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S
599 | 598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S
600 | 599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C
601 | 600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C
602 | 601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S
603 | 602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S
604 | 603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S
605 | 604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S
606 | 605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C
607 | 606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S
608 | 607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S
609 | 608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S
610 | 609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C
611 | 610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S
612 | 611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S
613 | 612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S
614 | 613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q
615 | 614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q
616 | 615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S
617 | 616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S
618 | 617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S
619 | 618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S
620 | 619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S
621 | 620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S
622 | 621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C
623 | 622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S
624 | 623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C
625 | 624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S
626 | 625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S
627 | 626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S
628 | 627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q
629 | 628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S
630 | 629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S
631 | 630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q
632 | 631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S
633 | 632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S
634 | 633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C
635 | 634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S
636 | 635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S
637 | 636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S
638 | 637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S
639 | 638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S
640 | 639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S
641 | 640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S
642 | 641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S
643 | 642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C
644 | 643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S
645 | 644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S
646 | 645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C
647 | 646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C
648 | 647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S
649 | 648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C
650 | 649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S
651 | 650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S
652 | 651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S
653 | 652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S
654 | 653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S
655 | 654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q
656 | 655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q
657 | 656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S
658 | 657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S
659 | 658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q
660 | 659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S
661 | 660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C
662 | 661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S
663 | 662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C
664 | 663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S
665 | 664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S
666 | 665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S
667 | 666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S
668 | 667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S
669 | 668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S
670 | 669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S
671 | 670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S
672 | 671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S
673 | 672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S
674 | 673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S
675 | 674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S
676 | 675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S
677 | 676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S
678 | 677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S
679 | 678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S
680 | 679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S
681 | 680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C
682 | 681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q
683 | 682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C
684 | 683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S
685 | 684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S
686 | 685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S
687 | 686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C
688 | 687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S
689 | 688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S
690 | 689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S
691 | 690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S
692 | 691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S
693 | 692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C
694 | 693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S
695 | 694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C
696 | 695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S
697 | 696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S
698 | 697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S
699 | 698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q
700 | 699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C
701 | 700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S
702 | 701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C
703 | 702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S
704 | 703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C
705 | 704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q
706 | 705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S
707 | 706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S
708 | 707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S
709 | 708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S
710 | 709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S
711 | 710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C
712 | 711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C
713 | 712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S
714 | 713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S
715 | 714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S
716 | 715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S
717 | 716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S
718 | 717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C
719 | 718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S
720 | 719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q
721 | 720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S
722 | 721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S
723 | 722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S
724 | 723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S
725 | 724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S
726 | 725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S
727 | 726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S
728 | 727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S
729 | 728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q
730 | 729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S
731 | 730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S
732 | 731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S
733 | 732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C
734 | 733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S
735 | 734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S
736 | 735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S
737 | 736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S
738 | 737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S
739 | 738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C
740 | 739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S
741 | 740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S
742 | 741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S
743 | 742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S
744 | 743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C
745 | 744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S
746 | 745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S
747 | 746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S
748 | 747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S
749 | 748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S
750 | 749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S
751 | 750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q
752 | 751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S
753 | 752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S
754 | 753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S
755 | 754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S
756 | 755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S
757 | 756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S
758 | 757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S
759 | 758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S
760 | 759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S
761 | 760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S
762 | 761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S
763 | 762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S
764 | 763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C
765 | 764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S
766 | 765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S
767 | 766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S
768 | 767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C
769 | 768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q
770 | 769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q
771 | 770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S
772 | 771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S
773 | 772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S
774 | 773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S
775 | 774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C
776 | 775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S
777 | 776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S
778 | 777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q
779 | 778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S
780 | 779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q
781 | 780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S
782 | 781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C
783 | 782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S
784 | 783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S
785 | 784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S
786 | 785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S
787 | 786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S
788 | 787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S
789 | 788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q
790 | 789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S
791 | 790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C
792 | 791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q
793 | 792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S
794 | 793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S
795 | 794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C
796 | 795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S
797 | 796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S
798 | 797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S
799 | 798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S
800 | 799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C
801 | 800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S
802 | 801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S
803 | 802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S
804 | 803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S
805 | 804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C
806 | 805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S
807 | 806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S
808 | 807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S
809 | 808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S
810 | 809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S
811 | 810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S
812 | 811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S
813 | 812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S
814 | 813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S
815 | 814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S
816 | 815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S
817 | 816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S
818 | 817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S
819 | 818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C
820 | 819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S
821 | 820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S
822 | 821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S
823 | 822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S
824 | 823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S
825 | 824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S
826 | 825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S
827 | 826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q
828 | 827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S
829 | 828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C
830 | 829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q
831 | 830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28,
832 | 831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C
833 | 832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S
834 | 833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C
835 | 834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S
836 | 835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S
837 | 836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C
838 | 837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S
839 | 838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S
840 | 839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S
841 | 840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C
842 | 841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S
843 | 842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S
844 | 843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C
845 | 844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C
846 | 845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S
847 | 846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S
848 | 847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S
849 | 848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C
850 | 849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S
851 | 850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C
852 | 851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S
853 | 852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S
854 | 853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C
855 | 854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S
856 | 855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S
857 | 856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S
858 | 857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S
859 | 858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S
860 | 859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C
861 | 860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C
862 | 861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S
863 | 862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S
864 | 863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S
865 | 864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S
866 | 865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S
867 | 866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S
868 | 867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C
869 | 868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S
870 | 869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S
871 | 870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S
872 | 871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S
873 | 872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S
874 | 873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S
875 | 874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S
876 | 875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C
877 | 876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C
878 | 877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S
879 | 878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S
880 | 879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S
881 | 880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C
882 | 881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S
883 | 882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S
884 | 883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S
885 | 884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S
886 | 885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S
887 | 886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q
888 | 887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S
889 | 888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S
890 | 889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S
891 | 890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C
892 | 891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q
893 |
--------------------------------------------------------------------------------