{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"Методы машинного обучения
\n",
"Семинар: деревья решений
"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.style.use('ggplot')\n",
"plt.rcParams['figure.figsize'] = (12,8)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Для тех у кого проблемы с graphviz (В основном касается Windows/)\n",
"\n",
"1) Установите graphviz через Anaconda Navigator - Environments\n",
"Not installed, выберите graphviz\n",
"\n",
"2) найдите куда скачался graphviz\n",
"C:\\Users\\\\Anaconda3\\Library\\bin\\graphviz\n",
"\n",
"3) скопируйте путь и добавьте его в переменную PATH\n",
"- Зайдите в Панель управления -> Система и Безопасность -> Система-> Продвинутые настройки системы - > Переменные окружения.\n",
"control panel -> system and security -> system -> advanced system settings - > environment variables.\n",
"\n",
"- Выделите переменную PATH и нажмите \"редактировать\"\n",
"- Добавьте новый путь к graphviz (который вы скопировали в буфер обмена)\n",
"4) перезагрузите компьютер"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Titanic Dataset"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.tree import export_graphviz\n",
"import subprocess"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Load titanic [dataset](https://cloud.mail.ru/public/N1Tn/25zEKkqge)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"VARIABLE DESCRIPTIONS:\n",
"survival Survival\n",
" (0 = No; 1 = Yes)\n",
"pclass Passenger Class\n",
" (1 = 1st; 2 = 2nd; 3 = 3rd)\n",
"name Name\n",
"sex Sex\n",
"age Age\n",
"sibsp Number of Siblings/Spouses Aboard\n",
"parch Number of Parents/Children Aboard\n",
"ticket Ticket Number\n",
"fare Passenger Fare\n",
"cabin Cabin\n",
"embarked Port of Embarkation\n",
" (C = Cherbourg; Q = Queenstown; S = Southampton)\n",
"\n",
"SPECIAL NOTES:\n",
"Pclass is a proxy for socio-economic status (SES)\n",
" 1st ~ Upper; 2nd ~ Middle; 3rd ~ Lower\n",
"\n",
"Age is in Years; Fractional if Age less than One (1)\n",
" If the Age is Estimated, it is in the form xx.5"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" PassengerId | \n",
" Survived | \n",
" Pclass | \n",
" Name | \n",
" Sex | \n",
" Age | \n",
" SibSp | \n",
" Parch | \n",
" Ticket | \n",
" Fare | \n",
" Cabin | \n",
" Embarked | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 3 | \n",
" Braund, Mr. Owen Harris | \n",
" male | \n",
" 22.0 | \n",
" 1 | \n",
" 0 | \n",
" A/5 21171 | \n",
" 7.2500 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" Cumings, Mrs. John Bradley (Florence Briggs Th... | \n",
" female | \n",
" 38.0 | \n",
" 1 | \n",
" 0 | \n",
" PC 17599 | \n",
" 71.2833 | \n",
" C85 | \n",
" C | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 3 | \n",
" Heikkinen, Miss. Laina | \n",
" female | \n",
" 26.0 | \n",
" 0 | \n",
" 0 | \n",
" STON/O2. 3101282 | \n",
" 7.9250 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 1 | \n",
" 1 | \n",
" Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n",
" female | \n",
" 35.0 | \n",
" 1 | \n",
" 0 | \n",
" 113803 | \n",
" 53.1000 | \n",
" C123 | \n",
" S | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 0 | \n",
" 3 | \n",
" Allen, Mr. William Henry | \n",
" male | \n",
" 35.0 | \n",
" 0 | \n",
" 0 | \n",
" 373450 | \n",
" 8.0500 | \n",
" NaN | \n",
" S | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 1 0 3 \n",
"1 2 1 1 \n",
"2 3 1 3 \n",
"3 4 1 1 \n",
"4 5 0 3 \n",
"\n",
" Name Sex Age SibSp \\\n",
"0 Braund, Mr. Owen Harris male 22.0 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
"2 Heikkinen, Miss. Laina female 26.0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
"4 Allen, Mr. William Henry male 35.0 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('./data/titanic.csv')\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Проанализируем данные\n",
" * Типы признаков\n",
" * Пропущенные значения?\n",
" * Пропорции классов"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 0.000000\n",
"Survived 0.000000\n",
"Pclass 0.000000\n",
"Name 0.000000\n",
"Sex 0.000000\n",
"Age 0.198653\n",
"SibSp 0.000000\n",
"Parch 0.000000\n",
"Ticket 0.000000\n",
"Fare 0.000000\n",
"Cabin 0.771044\n",
"Embarked 0.002245\n",
"dtype: float64"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().mean()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 549\n",
"1 342\n",
"Name: Survived, dtype: int64"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.Survived.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Предобработка данных\n",
" * выкидываем ненужные признаки\n",
" * готовимся к работе с пропусками\n",
" * подготовка категориальных признаков\n",
" * разбиваем на обучение и контроль"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 S\n",
"dtype: object"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.Embarked.mode()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"drop_cols = ['PassengerId', 'Name', 'Ticket', 'Cabin']\n",
"\n",
"df.loc[:, 'Age'] = df.Age.fillna(df.Age.mean())\n",
"df.loc[:, 'Embarked'] = df.Embarked.fillna(df.Embarked.mode()[0])\n",
"df = pd.get_dummies(df, columns=['Embarked'])\n",
"\n",
"df.loc[:, 'Sex'] = df.Sex.replace({'male': 1, 'female': 0})\n",
"\n",
"df_result = df.drop(drop_cols, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Survived | \n",
" Pclass | \n",
" Sex | \n",
" Age | \n",
" SibSp | \n",
" Parch | \n",
" Fare | \n",
" Embarked_C | \n",
" Embarked_Q | \n",
" Embarked_S | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 3 | \n",
" 1 | \n",
" 22.0 | \n",
" 1 | \n",
" 0 | \n",
" 7.2500 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 38.0 | \n",
" 1 | \n",
" 0 | \n",
" 71.2833 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 3 | \n",
" 0 | \n",
" 26.0 | \n",
" 0 | \n",
" 0 | \n",
" 7.9250 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 35.0 | \n",
" 1 | \n",
" 0 | \n",
" 53.1000 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" 3 | \n",
" 1 | \n",
" 35.0 | \n",
" 0 | \n",
" 0 | \n",
" 8.0500 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Survived Pclass Sex Age SibSp Parch Fare Embarked_C Embarked_Q \\\n",
"0 0 3 1 22.0 1 0 7.2500 0 0 \n",
"1 1 1 0 38.0 1 0 71.2833 1 0 \n",
"2 1 3 0 26.0 0 0 7.9250 0 0 \n",
"3 1 1 0 35.0 1 0 53.1000 0 0 \n",
"4 0 3 1 35.0 0 0 8.0500 0 0 \n",
"\n",
" Embarked_S \n",
"0 1 \n",
"1 0 \n",
"2 1 \n",
"3 1 \n",
"4 1 "
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_result.head()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"X = df_result.iloc[:, 1:].values\n",
"y = df_result.iloc[:, 0].values"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=123)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" * Обучим модель и визуализируем ее\n",
" * Посмотрим на важность признаков"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"def plot_tree(tree, feature_names=None, class_names=['0', '1']):\n",
" with open('tree.dot', 'w') as fout:\n",
" export_graphviz(tree, out_file=fout, filled=True, feature_names=feature_names, class_names=class_names)\n",
" command = [\"dot\", \"-Tpng\", \"tree.dot\", \"-o\", \"tree.png\"]\n",
" subprocess.check_call(command)\n",
" plt.imshow(plt.imread('tree.png'))\n",
" plt.axis(\"off\")\n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import DecisionTreeClassifier"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"model = DecisionTreeClassifier(max_depth=4)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=4,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.0, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
" splitter='best')"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"y_hat = model.predict_proba(X_valid)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.38541667, 0.61458333],\n",
" [0.86486486, 0.13513514],\n",
" [0.60465116, 0.39534884],\n",
" [0.60465116, 0.39534884],\n",
" [0.86486486, 0.13513514],\n",
" [0.93902439, 0.06097561],\n",
" [0.11111111, 0.88888889],\n",
" [0.11111111, 0.88888889],\n",
" [0.38541667, 0.61458333],\n",
" [0.38541667, 0.61458333]])"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_hat[:10]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import roc_auc_score, roc_curve"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"fpr, tpr, thresh = roc_curve(y_valid, y_hat[:, 1])"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'TPR')"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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oDnOATIAAAA+QLhOB82NtIUAAAD4AOHaY3Zvu7R3L20hAAAAPkC49lpzU+Ij4RoAACDjEa691n06o6EtBAAAIOMRrr3WFE98ZOcaAAAg4xGuvdbTFsLONQAAQMYjXHvMdreFKI9wDQAAkOkI117raQth5xoAACDjEa691hyXcnJkcnK9rgQAAACjRLj2WnNcGlfgdRUAAABIAsK1x2xTXBqX73UZAAAASALCtdea44zhAwAA8AnCtdea4ryZEQAAwCcI115rjsuwcw0AAOALhGsPWWullibaQgAAAHyCcO2l1hapq4u2EAAAAJ8YVbj+4IMPklVHMDV3HyDDKD4AAABfCB/shpaWFu3evVslJSUqKEiEwPfff1+PP/64Nm3apEceeSTlRfpWd7g2jOIDAADwhSHD9caNG3XnnXeqvb1d4XBY1157rd5880298MILmjNnju666y636vQnjj4HAADwlSHD9aOPPqrLLrtM55xzjtauXau7775bM2bM0F133aX8fHZbR8vSFgIAAOArQ/Zc79mzR1VVVcrJydHcuXPV2dmpq666imCdLM3sXAMAAPjJkOHaWrvvxlBIY8aMUW5ubsqLCoyetpA8/rICAADgB0O2hbS3t+vmm2/uvW5ra+t3LUm33npraioLgua4NHacTFaW15UAAAAgCYYM11deeWW/69mzZ6e0mMDh6HMAAABfGTJcz5o1S5LU1NREn3UK2JY4LSEAAAA+MmS4fuedd7RixQo1NDQoEoloyZIlOvroo10qLQDYuQYAAPCVId/Q+NBDD+lTn/qUVqxYobPOOksPPfSQW3UFQ3NchjF8AAAAvjFkuN65c6cWLFigI444QhdffDHHnScbO9cAAAC+MmS4dhxHoVDiluzsbHV2drpSVBDYri6ptVni6HMAAADfGLLneu/evVq5cmXvdXt7e79rSbrmmmtSU5nftTQlPtIWAgAA4BtDhusLLrig3/X555+f0mICpYnTGQEAAPxmyHB92GGH6ZOf/KRbtQRL99HnZhzhGgAAwC+G7Lm+//773aojeLrDtQjXAAAAvjFkuLbWulVH4FjaQgAAAHxnyLYQx3G0ZcuWIb/BiSeemNSCAqO5MfGRnWsAAADfGDJcd3R06N577z3gDrYxZsD0EAxTc5MUCklj87yuBAAAAEkyZLgeM2YM4TlVmuLSuPEyxnhd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zZo1S5J05plnasuWLbK8PzSjDGedTzzxROXm5kqSjjvuOEWjUS9KxSgMZ50lac2aNTrvvPOUnZ3tQZUYjeGs8bPPPqtzzz1X+fn5kqTCwkIvSsUoDGedjTFqaWmRJLW0tKi4uNiLUjEK06dP7/11OphXXnlF55xzjowxmjZtmpqbm1VfX+9ihUMjXB9ANBpVJBLpvY5EIgNCVd97srKylJeXp3g87mqdGJ3hrHNfa9eu1amnnupGaUii4azz9u3bVVtbqxkzZrhdHpJgOGu8a9cu1dTU6KabbtI//dM/afPmzW6XiVEazjpfeOGFeuGFF3TllVfqtttu08KFC90uEykWjUZVUlLSe32wP7vdRrg+gMF2oI0xh3wP0tuhrOHzzz+v9957T+edd16qy0KSHWydHcfRAw88oMsuu8zNspBEw/m17DiOampqdPPNN+u6667Tvffeq+bmZrdKRBIMZ53XrVunWbNm6d5779UNN9ygu+66S47juFUiXJDu+YtwfQCRSER1dXW913V1dQP+aanvPV1dXWppaRnynzGQfoazzpL0+uuv64knntCSJUtoGchAB1vntrY27dixQ7feequuvvpqbd26VT/4wQ/07rvvelEuRmA4v5YnTJig008/XeFwWJMmTVJZWZlqamrcLhWjMJx1Xrt2rc466yxJ0rRp09TR0cG/KvtMJBJRbW1t7/WB/uz2CuH6AMrLy1VTU6M9e/aos7NT69evV2VlZb97ZsyYoeeee05SYsLACSeckFZ/c8LBDWedt2/frvvvv19LliyhRzNDHWyd8/LytGrVKt199926++67ddxxx2nJkiVMC8kgw/m1fMYZZ2jLli2SpMbGRtXU1Gjy5MlelIsRGs46l5SU9K7zzp071dHRoYKCAi/KRYpUVlbq+eefl7VW77zzjvLy8tIqXHNC4xA2btyoBx54QI7jaPbs2brgggu0Zs0alZeXq7KyUnv37tXKlSu1fft25efna/HixfxGnYEOts7f//739cEHH6ioqEhS4jfu66+/3uOqcagOts593XLLLbr00ksJ1xnmYGtsrdWDDz6ozZs3KxQK6YILLtDZZ5/tddk4RAdb5507d+q+++5TW1ubJOmSSy7RKaec4nHVOBR33nmn3nzzTcXjcRUWFmr+/Pnq7OyUJM2dO1fWWq1atUqvvfaacnJytGjRorT6/ZpwDQAAACQJbSEAAABAkhCuAQAAgCQhXAMAAABJQrgGAAAAkoRwDQAAACQJ4RoAAABIkrDXBQAAkuPqq69WQ0ODQqF9+yY33nijbrrpJuXm5kqSCgoK9NnPflbz5s2TJM2fP7/3sby8PM2cOVOXXnppv+8BABg+wjUA+Mj111+vk08+ufd6z549kqSf/vSnysrK0jvvvKN//ud/1tFHH61TTz1VkvTDH/5QpaWl2r17t26++WYdfvjhqqqq8qR+AMh0bE0AQIBMmzZNU6ZM0QcffDDgsdLSUh1//PF6//333S8MAHyCcA0AAWGt1VtvvaUdO3Zo6tSpAx7/8MMP9dZbb6m0tNSD6gDAH2gLAQAf+eEPf6isrCxJ0vTp03XFFVdIkr72ta/JGKOioiItWLBAJ510Uu9zrr/+ejmOo/b2ds2cOVPnnnuuF6UDgC8QrgHAR7773e8O2nO9atWq3tC9v3/913/V5MmT9dJLL+lnP/uZ2tvblZ2d7Uq9AOA3tIUAAGSM0cyZMzVt2jQ9/vjjXpcDABmLcA0A6DVv3jxVV1eroaHB61IAICMRrgEAvY488khNnz5dv/71r70uBQAykrHWWq+LAAAAAPyAnWsAAAAgSQjXAAAAQJIQrgEAAIAkIVwDAAAASUK4BgAAAJKEcA0AAAAkCeEaAAAASBLCNQAAAJAk/x8quZoqf0txIgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(fpr, tpr)\n",
"plt.xlabel('FPR')\n",
"plt.ylabel('TPR')"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8749662618083671"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"roc_auc_score(y_valid, y_hat[:, 1])"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pclass 0.195365\n",
"Sex 0.577291\n",
"Age 0.095079\n",
"SibSp 0.072319\n",
"Parch 0.005876\n",
"Fare 0.054071\n",
"Embarked_C 0.000000\n",
"Embarked_Q 0.000000\n",
"Embarked_S 0.000000\n",
"dtype: float64"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.Series(index=df_result.columns[1:], data=model.feature_importances_)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_tree(model, feature_names=df_result.columns[1:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Speed Dating Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Предобработка данных"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('./data/speed-dating-experiment/Speed Dating Data.csv', encoding='latin1')"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8378, 195)"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [],
"source": [
"df = df.iloc[:, :97]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Рассмотрим нужные признаки по очереди"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### iid\n",
"unique subject number, group(wave id gender)\n",
"\n",
"Кажется это идентификатор"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"551"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iid.nunique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### id \n",
"\n",
"Subject number within wave\n",
"\n",
"Кажется это нам не нужно"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['id'], axis=1)\n",
"df = df.drop(['idg'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### gender\n",
"\n",
"* Female=0\n",
"* Male=1"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 277\n",
"0 274\n",
"Name: gender, dtype: int64"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates(subset=['iid']).gender.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### condtn:\n",
"* 1=limited choice\n",
"* 2=extensive choice\n",
"\n",
"???"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 386\n",
"1 165\n",
"Name: condtn, dtype: int64"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates(subset=['iid']).condtn.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['condtn'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### wave\n",
"\n",
"Пока оставим в таблице, но в качестве признака рассматривать не будем"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21])"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.wave.unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### round:\n",
"\n",
"number of people that met in wave\n",
"\n",
"Можно взять в качестве признака.."
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['round'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### position:\n",
"station number where met partner \n",
"\n",
"#### positin1\n",
"station number where started \n",
"\n",
"Выкидываем"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['position', 'positin1'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### order: \t\t\n",
"the number of date that night when met partner\n"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['order'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### partner: \t\n",
"partner’s id number the night of event\n",
"\n",
"Это можно удались\n",
"\n",
"#### pid: \t\t\n",
"partner’s iid number\n",
"А вот это важно\n"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['partner'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### match\t\t\n",
"* 1=yes, \n",
"* 0=no\n",
"\n",
"Наш таргет"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### int_corr:\t\n",
"correlation between participant’s and partner’s ratings of interests in \t\t\n",
"\n",
"#### samerace: \t\n",
"participant and the partner were the same race. 1= yes, 0=no\n",
"\n",
"Придумали за нас признаки)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### age_o:\t\t\n",
"age of partner\n",
"#### race_o:\t\t\n",
"race of partner\n",
"#### pf_o_att: \t\n",
"partner’s stated preference at Time 1 (attr1_1) for all 6 attributes\n",
"#### dec_o: \t\t\n",
"decision of partner the night of event\n",
"#### attr_o: \t\t\n",
"rating by partner the night of the event, for all 6 attributes\n",
"\n",
"Убираем"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['age_o', 'race_o', 'pf_o_att', \n",
" 'pf_o_sin', 'pf_o_int',\n",
" 'pf_o_fun', 'pf_o_amb', 'pf_o_sha',\n",
" 'dec_o', 'attr_o', 'sinc_o', 'intel_o', 'fun_o',\n",
" 'amb_o', 'shar_o', 'like_o', 'prob_o','met_o'], \n",
" axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### age\n",
"оставляем"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAHVCAYAAAADyWaQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAG9hJREFUeJzt3X9sXfV9//GXY9PSJIqxc0OYA4y4pJqgoaxLRErHkoW7TiodyreqIhXCxNqB2iAQZKqImASduqmWRnCUKoi1q0At0rpqWtyOdVvlWQlSIzRDQGNhzaCiv1uCY5MQCGX+8f2jwhofEiW5Pva1k8fjL+7NvT6f++Yj3yeHk3tbJiYmJgIAAEya1+wFAADAbCOSAQCgIJIBAKAgkgEAoCCSAQCgIJIBAKAgkgEAoCCSAQCgIJIBAKAgkgEAoNDW7AW85ec//3mzl9A0tVotQ0NDzV7GnGeO1TDHaphjdcyyGuZYDXOsRjPn2NXVdUqPcyYZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKbc1eAEy3sVuub9qxW7/y7aYdGwBonDPJAABQEMkAAFAQyQAAUBDJAABQEMkAAFAQyQAAUDjpR8A9+OCD2bdvX9rb27Nt27Ykyde//vU89dRTaWtry9KlS7N58+YsWLAgSbJr164MDAxk3rx5+ZM/+ZNceeWV0/sKAACgYic9k7xu3brcc889b7vviiuuyLZt23L//ffnN37jN7Jr164kyU9/+tPs3bs3DzzwQP78z/88X/3qVzM+Pj49KwcAgGly0ki+7LLLsnDhwrfd94EPfCCtra1Jkve9730ZHh5OkgwODubqq6/OOeeck/PPPz8XXHBBXnjhhWlYNgAATJ8pf+PewMBArr766iTJ8PBwVqxYMflnnZ2dkwFd6u/vT39/f5Kkp6cntVptqkuZs9ra2s7q11+VE83xpSas5S1z8d+r/VgNc6yOWVbDHKthjtWYC3OcUiT/4z/+Y1pbW3PNNdckSSYmJk75ufV6PfV6ffL20NDQVJYyp9VqtbP69VdlNs5xtq3nVMzGOc5F5lgds6yGOVbDHKvRzDl2dXWd0uMa/nSL3bt356mnnsodd9yRlpaWJMnixYtz6NChyccMDw+ns7Oz0UMAAEBTNBTJzzzzTL71rW/l7rvvzrvf/e7J+1etWpW9e/fmf//3f3Pw4MH84he/yKWXXlrZYgEAYCac9HKL7du357nnnsurr76az3zmM9m4cWN27dqV0dHRfOELX0iSrFixIrfeemsuuuiifOhDH8qWLVsyb968fPrTn868eT6KGQCAueWkkXznnXe+477169ef8PEf//jH8/GPf3xqqwIAgCZymhcAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKbc1eAGePsVuun9af/9K0/nQA4GziTDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAU2k72gAcffDD79u1Le3t7tm3bliQ5evRoent78/LLL2fJkiW56667snDhwkxMTOThhx/O008/nXe/+93ZvHlzuru7p/1FAABAlU56JnndunW555573nZfX19fVq5cmR07dmTlypXp6+tLkjz99NP55S9/mR07duTWW2/N3/7t307PqgEAYBqdNJIvu+yyLFy48G33DQ4OZu3atUmStWvXZnBwMEny5JNP5vd+7/fS0tKS973vfXnttdcyMjIyDcsGAIDpc9LLLY7n8OHD6ejoSJJ0dHTkyJEjSZLh4eHUarXJxy1evDjDw8OTj/2/+vv709/fnyTp6el52/PONm1tbTP6+l/6f1fP2LHOdnNxX8/0fjxTmWN1zLIa5lgNc6zGXJhjQ5F8IhMTE++4r6Wl5biPrdfrqdfrk7eHhoaqXMqcUqvVzurXfyabi/9e7cdqmGN1zLIa5lgNc6xGM+fY1dV1So9r6NMt2tvbJy+jGBkZyaJFi5L8+szx/33Bhw4dOu5ZZAAAmM0aiuRVq1Zlz549SZI9e/Zk9erVk/c//vjjmZiYyP/8z/9k/vz5IhkAgDnnpJdbbN++Pc8991xeffXVfOYzn8nGjRuzYcOG9Pb2ZmBgILVaLVu2bEmS/PZv/3b27duXO+64I+9617uyefPmaX8BAABQtZNG8p133nnc+++999533NfS0pI//dM/nfqqAACgiXzjHgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAURDIAABREMgAAFEQyAAAU2pq9ADiTjd1yfVOO2/qVbzfluABwpnAmGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACiIZAAAKIhkAAAoiGQAACm1TefJjjz2WgYGBtLS05KKLLsrmzZvzyiuvZPv27Tl69GiWL1+e22+/PW1tUzoMAADMqIbPJA8PD+df/uVf0tPTk23btmV8fDx79+7No48+muuuuy47duzIggULMjAwUOV6AQBg2k3pcovx8fG8+eabGRsby5tvvpnzzjsv+/fvz5o1a5Ik69aty+DgYCULBQCAmdLwdRCdnZ35oz/6o3z2s5/Nu971rnzgAx9Id3d35s+fn9bW1snHDA8PH/f5/f396e/vT5L09PSkVqs1upQ5r62tbUZf/0szdiSaZSr7aab345nKHKtjltUwx2qYYzXmwhwbjuSjR49mcHAwO3fuzPz58/PAAw/kmWeeOeXn1+v11Ov1ydtDQ0ONLmXOq9VqZ/Xrp3pT2U/2YzXMsTpmWQ1zrIY5VqOZc+zq6jqlxzUcyc8++2zOP//8LFq0KEly1VVX5cCBA3n99dczNjaW1tbWDA8Pp7Ozs9FDAABAUzR8TXKtVsvzzz+fX/3qV5mYmMizzz6bCy+8MJdffnmeeOKJJMnu3buzatWqyhYLAAAzoeEzyStWrMiaNWty9913p7W1NZdccknq9Xo++MEP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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.drop_duplicates(subset=['iid']).age.hist(bins=20)"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').age.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"df = df.dropna(subset=['age'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### field:\t\t\n",
"field of study \n",
"\n",
"#### field_cd: \t\n",
"field coded \n"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"==========\n",
"Field Code 1.0\n",
"['Law' 'law' 'LAW' 'Law and Social Work'\n",
" 'Law and English Literature (J.D./Ph.D.)' 'Intellectual Property Law'\n",
" 'Law/Business']\n",
"==========\n",
"Field Code 2.0\n",
"['Economics' 'Mathematics' 'Statistics' 'math' 'Mathematics, PhD' 'Stats'\n",
" 'math of finance' 'Math']\n",
"==========\n",
"Field Code 3.0\n",
"['Psychology' 'Speech Language Pathology' 'Speech Languahe Pathology'\n",
" 'Educational Psychology' 'Organizational Psychology' 'psychology'\n",
" 'Communications' 'Sociology' 'psychology and english' 'theory'\n",
" 'Health policy' 'Clinical Psychology' 'Sociology and Education'\n",
" 'sociology' 'Anthropology/Education' 'speech pathology'\n",
" 'Speech Pathology' 'Anthropology' 'School Psychology' 'anthropology'\n",
" 'Counseling Psychology' 'African-American Studies/History']\n",
"==========\n",
"Field Code 4.0\n",
"['Medicine' 'Art History/medicine'\n",
" 'Sociomedical Sciences- School of Public Health' 'Epidemiology'\n",
" 'GS Postbacc PreMed' 'medicine']\n",
"==========\n",
"Field Code 5.0\n",
"['Operations Research' 'Mechanical Engineering' 'Engineering'\n",
" 'Electrical Engineering' 'Operations Research (SEAS)'\n",
" 'Education Administration' 'Computer Science' 'Biomedical Engineering'\n",
" 'electrical engineering' 'engineering' 'Medical Informatics'\n",
" 'medical informatics' 'Electrical Engg.' 'Environmental Engineering'\n",
" 'Instructional Tech & Media' 'MA in Quantitative Methods'\n",
" 'Urban Planning' 'Financial Engineering' 'biomedical engineering'\n",
" 'biomedical informatics' 'ELECTRICAL ENGINEERING'\n",
" 'Biomedical engineering' 'Industrial Engineering'\n",
" 'Industrial Engineering/Operations Research'\n",
" 'Masters of Industrial Engineering' 'Biomedical Informatics']\n",
"==========\n",
"Field Code 6.0\n",
"['MFA Creative Writing' 'Classics' 'Journalism' 'English'\n",
" 'Comparative Literature' 'English and Comp Lit'\n",
" 'Communications in Education' 'Creative Writing'\n",
" 'Creative Writing - Nonfiction' 'Writing: Literary Nonfiction'\n",
" 'Creative Writing (Nonfiction)' 'NonFiction Writing' 'SOA -- writing'\n",
" 'journalism' 'Nonfiction writing']\n",
"==========\n",
"Field Code 7.0\n",
"['German Literature' 'Religion' 'philosophy' 'History of Religion'\n",
" 'Modern Chinese Literature' 'Philosophy' 'Religion, GSAS' 'History'\n",
" 'History (GSAS - PhD)' 'American Studies' 'Philosophy (Ph.D.)'\n",
" 'Philosophy and Physics' 'Art History' 'art history']\n",
"==========\n",
"Field Code 8.0\n",
"['Finance' 'Business' 'money' 'Applied Maths/Econs' 'Economics' 'Finanace'\n",
" 'Finance&Economics' 'Mathematical Finance' 'MBA'\n",
" 'Business & International Affairs' 'Marketing' 'Business (MBA)'\n",
" 'financial math' 'Business- MBA' 'Economics, English'\n",
" 'Economics, Sociology' 'Economics and Political Science' 'business'\n",
" 'Business, marketing' 'Business/ Finance/ Real Estate'\n",
" 'International Affairs/Finance' 'international finance and business'\n",
" 'International Business' 'International Finance, Economic Policy'\n",
" 'Business/Law' 'Business and International Affairs (MBA/MIA Dual Degree)'\n",
" 'QMSS' 'Public Administration' 'Master in Public Administration'\n",
" 'Business School' 'MBA / Master of International Affairs (SIPA)'\n",
" 'Finance/Economics' 'Business Administration' 'MBA Finance'\n",
" 'BUSINESS CONSULTING' 'business school' 'Business, Media'\n",
" 'Fundraising Management' 'Business (Finance & Marketing)' 'Consulting'\n",
" 'MBA - Private Equity / Real Estate' 'General management/finance']\n",
"==========\n",
"Field Code 9.0\n",
"['TC (Health Ed)' 'Elementary/Childhood Education (MA)'\n",
" 'International Educational Development' 'Art Education'\n",
" 'elementary education' 'MA Science Education' 'Social Studies Education'\n",
" 'MA Teaching Social Studies' 'Education Policy'\n",
" 'Education- Literacy Specialist' 'bilingual education' 'Education'\n",
" 'math education' 'TESOL' 'Elementary Education'\n",
" 'Cognitive Studies in Education' 'education'\n",
" 'Curriculum and Teaching/Giftedness' 'Instructional Media and Technology'\n",
" 'English Education' 'art education' 'Early Childhood Education'\n",
" 'Ed.D. in higher education policy at TC' 'EDUCATION' 'music education'\n",
" 'Music Education' 'Higher Ed. - M.A.' 'Neuroscience and Education'\n",
" 'Elementary Education - Preservice'\n",
" 'Education Leadership - Public School Administration'\n",
" 'Bilingual Education' 'teaching of English']\n",
"==========\n",
"Field Code 10.0\n",
"['chemistry' 'microbiology' 'Chemistry'\n",
" 'Climate-Earth and Environ. Science' 'marine geophysics'\n",
" 'Nutrition/Genetics' 'Neuroscience' 'physics (astrophysics)' 'Physics'\n",
" 'Biochemistry' 'biology' 'Cell Biology' 'Microbiology' 'climate change'\n",
" 'MA Biotechnology' 'Ecology' 'Computational Biochemsistry' 'Neurobiology'\n",
" 'biomedicine' 'Biology' 'Conservation biology' 'biotechnology'\n",
" 'Earth and Environmental Science' 'nutrition' 'Genetics' 'Nutritiron'\n",
" 'Molecular Biology' 'Genetics & Development' 'genetics'\n",
" 'medicine and biochemistry' 'Epidemiology' 'Nutrition'\n",
" 'Applied Physiology & Nutrition' 'Biomedical Engineering' 'physics'\n",
" 'Biotechnology' 'Neurosciences/Stem cells' 'Biology PhD'\n",
" 'biochemistry/genetics' 'epidemiology'\n",
" 'Biochemistry & Molecular Biophysics']\n",
"==========\n",
"Field Code 11.0\n",
"['social work' 'Social Work' 'Masters of Social Work' 'Social work'\n",
" 'International Affairs' 'Social Work/SIPA']\n",
"==========\n",
"Field Code 12.0\n",
"['Undergrad - GS']\n",
"==========\n",
"Field Code 13.0\n",
"['Masters in Public Administration' 'Masters of Social Work&Education'\n",
" 'political science' 'International Relations'\n",
" 'international affairs - economic development' 'Political Science'\n",
" 'American Studies (Masters)' 'International Affairs'\n",
" 'international affairs/international finance' 'International Development'\n",
" 'International Affairs and Public Health' 'International affairs'\n",
" 'International Affairs/Business' 'Master of International Affairs'\n",
" 'International Politics' 'SIPA / MIA'\n",
" 'International Security Policy - SIPA' 'Intrernational Affairs'\n",
" 'International Affairs - Economic Policy' 'SIPA - Energy' 'Public Policy'\n",
" 'Human Rights: Middle East' 'Human Rights' 'SIPA-International Affairs'\n",
" 'Public Administration']\n",
"==========\n",
"Field Code 14.0\n",
"['Film' 'MFA -Film' 'film']\n",
"==========\n",
"Field Code 15.0\n",
"['Arts Administration' 'Museum Anthropology'\n",
" 'Theatre Management & Producing' 'MFA Writing' 'MFA Poetry' 'Theater'\n",
" 'MFA Acting Program' 'Acting' 'Public Health']\n",
"==========\n",
"Field Code 16.0\n",
"['Polish' 'Japanese Literature' 'french']\n",
"==========\n",
"Field Code 17.0\n",
"['Architecture']\n",
"==========\n",
"Field Code 18.0\n",
"['working' 'GSAS' 'Climate Dynamics']\n"
]
}
],
"source": [
"for i, group in df.groupby('field_cd'):\n",
" print('=' * 10)\n",
" print('Field Code {}'.format(i))\n",
" print(group.field.unique())"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"19"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.field_cd.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'field_cd'] = df.loc[:, 'field_cd'].fillna(19)"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['field'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Надо же как-то закодировать field_cd!"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import OneHotEncoder"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [],
"source": [
"df = \\\n",
"pd.get_dummies(df, prefix='field_code', prefix_sep='=', \n",
" columns=['field_cd'])"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" iid | \n",
" gender | \n",
" wave | \n",
" pid | \n",
" match | \n",
" int_corr | \n",
" samerace | \n",
" age | \n",
" undergra | \n",
" mn_sat | \n",
" ... | \n",
" field_code=10.0 | \n",
" field_code=11.0 | \n",
" field_code=12.0 | \n",
" field_code=13.0 | \n",
" field_code=14.0 | \n",
" field_code=15.0 | \n",
" field_code=16.0 | \n",
" field_code=17.0 | \n",
" field_code=18.0 | \n",
" field_code=19.0 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 11.0 | \n",
" 0 | \n",
" 0.14 | \n",
" 0 | \n",
" 21.0 | \n",
" NaN | \n",
" NaN | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 12.0 | \n",
" 0 | \n",
" 0.54 | \n",
" 0 | \n",
" 21.0 | \n",
" NaN | \n",
" NaN | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 13.0 | \n",
" 1 | \n",
" 0.16 | \n",
" 1 | \n",
" 21.0 | \n",
" NaN | \n",
" NaN | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 14.0 | \n",
" 1 | \n",
" 0.61 | \n",
" 0 | \n",
" 21.0 | \n",
" NaN | \n",
" NaN | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 15.0 | \n",
" 1 | \n",
" 0.21 | \n",
" 0 | \n",
" 21.0 | \n",
" NaN | \n",
" NaN | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 88 columns
\n",
"
"
],
"text/plain": [
" iid gender wave pid match int_corr samerace age undergra mn_sat \\\n",
"0 1 0 1 11.0 0 0.14 0 21.0 NaN NaN \n",
"1 1 0 1 12.0 0 0.54 0 21.0 NaN NaN \n",
"2 1 0 1 13.0 1 0.16 1 21.0 NaN NaN \n",
"3 1 0 1 14.0 1 0.61 0 21.0 NaN NaN \n",
"4 1 0 1 15.0 1 0.21 0 21.0 NaN NaN \n",
"\n",
" ... field_code=10.0 field_code=11.0 field_code=12.0 \\\n",
"0 ... 0 0 0 \n",
"1 ... 0 0 0 \n",
"2 ... 0 0 0 \n",
"3 ... 0 0 0 \n",
"4 ... 0 0 0 \n",
"\n",
" field_code=13.0 field_code=14.0 field_code=15.0 field_code=16.0 \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" field_code=17.0 field_code=18.0 field_code=19.0 \n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
"[5 rows x 88 columns]"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### undergrd: \t\n",
"school attended for undergraduate degree\n",
"\n",
"Пока выкинем"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"UC Berkeley 107\n",
"Harvard 104\n",
"Columbia 95\n",
"Yale 86\n",
"NYU 78\n",
"Name: undergra, dtype: int64"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.undergra.value_counts().head()"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['undergra'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### mn_sat: \t\n",
"Median SAT score for the undergraduate institution where attended. \t\t\t"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1,400.00 403\n",
"1,430.00 262\n",
"1,290.00 190\n",
"1,450.00 163\n",
"1,340.00 146\n",
"Name: mn_sat, dtype: int64"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mn_sat.value_counts().head()"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'mn_sat'] = df.loc[:, 'mn_sat'].str.replace(',', '').astype(np.float)"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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IiJi5cqVH2h/SsOcJgdzmhzMaeIzo8nBnCaHcs1p1DE8Y8aM2Lt378Dne/fujbq6ujFZFAAAlMKoY/iYY46JnTt3xu7du6O3tzeeeOKJaGxsHMu1AQDAuKr67ne/+93R7FhZWRmHHnpo3HrrrfHoo4/G6aefHgsWLBjj5b3T3Llzx/X5GRvmNDmY0+RgThOfGU0O5jQ5lGNOFcVgF/8CAEAC7kAHAEBaYhgAgLQ+0O2Yx9ojjzwSjz32WBRFEUuWLImlS5dGT09PtLS0xJ49e2LmzJlx5ZVXRk1NTRRFEXfeeWc8/fTTMWXKlFi+fLnrgcbJbbfdFlu2bIna2tpYvXp1RMSo5rJhw4Z44IEHIiLi7LPPjkWLFpXrS/rQGWxGf/nLX+K3v/1t7NixI2644YY45phjBrZft25dtLW1RWVlZXzjG9+Ik08+OSLcYn28DTane+65JzZv3hzV1dUxa9asWL58eUybNi0izKlcBpvTfffdF5s2bYqKioqora2N5cuXR319vWNemQw2o/966KGH4t57743bb789pk+fbkZlNNic7r///njsscdi+vTpERFx7rnnxmc+85mIKOMxr5gg/v3vfxcrVqwoXn/99aK3t7f4/ve/X7z00kvFPffcU6xbt64oiqJYt25dcc899xRFURSbN28ufvCDHxT9/f3Fc889V3z7298u5/I/1LZt21a88MILxYoVKwYeG+lcuru7i0svvbTo7u5+x8eMjcFm9OKLLxY7duworrvuumL79u3vePyqq64q3nzzzWLXrl3FZZddVvT19RV9fX3FZZddVrz88svFW2+9VVx11VXFiy++WI4v50NrsDlt3bq16O3tLYri7Z+r//4smVP5DDanAwcODHz8+9//vvjZz35WFIVjXrkMNqOiKIo9e/YU119/fXHJJZcU+/btK4rCjMppsDn95je/KR588MF3bVvOY96EuUxix44dcdxxx8WUKVOiqqoqPvnJT8ZTTz0V7e3tsXDhwoiIWLhw4cAtnzdt2hRf+MIXoqKiIo4//vg4cOBAdHV1lfNL+NA64YQToqam5h2PjXQuW7dujZNOOilqamqipqYmTjrppNi6dWvJv5YPq8FmdNhhhw16J5/29vY45ZRT4qCDDoqPfexjceihh8b27dvdYr0EBpvTpz71qaiqqoqIiOOPPz46OzsjwpzKabA5TZ06deDjN954Y+AmU4555THYjCIi7r777jj//PPfcRMwMyqf95rTYMp5zJswMXz44YfH3//+9+ju7o433ngjnn766di7d2/s27dv4GYedXV1sX///oh4+3bQDQ0NA/vPmDFj4JcI42+kc/m/t++ur683rzJ5r1kMdot1Myqttra2gb8WNKeJ59e//nVccskl8ac//Sm++tWvRoRj3kSyadOmqK+vj6OOOuodj5vRxPOHP/whrrrqqrjtttuip6cnIsp7zJswMXzYYYfFV77ylbj++uvjhhtuiCOPPDIqK997ecUwbwdNaY1kLuZVHoPN6L0eN6PSeeCBB6KqqipOP/30iDCniejcc8+Nn/zkJ3HaaafFo48+GhGOeRPFG2+8EQ888MDA/6T8LzOaWM4888y49dZb4+abb466urr41a9+FRHlPeZNmBiOiFi8eHHcdNNN8b3vfS9qamri4x//eNTW1g5c/tDV1TVwwfWMGTOio6NjYF+3gy6tkc6lvr7+Hbfv7uzsNK8y+b+3Uu/s7Iz6+nq3WC+jDRs2xObNm+OKK64YOMib08R12mmnxV//+teIcMybKHbt2hW7d++Oq6++Oi699NLYu3dvXHPNNfHKK6+Y0QRzyCGHRGVlZVRWVsaSJUvihRdeiIjyHvMmVAzv27cvIiI6OjriqaeeilNPPTUaGxtj48aNERGxcePGmD9/fkRENDY2xuOPPx5FUcQ//vGPmDp1qm/iEhrpXE4++eR45plnoqenJ3p6euKZZ54Z+OtgSquxsTGeeOKJeOutt2L37t2xc+fOOPbYY91ivUy2bt0aDz74YFxzzTUxZcqUgcfNaWLZuXPnwMebNm0auB7fMW9iOOKII+L222+PtWvXxtq1a2PGjBlx0003xSGHHGJGE8z//vuup556Kg4//PCIKO8xb0LdgW7VqlXR3d0d1dXV8fWvfz3mzZsX3d3d0dLSEh0dHdHQ0BArVqwYeAuvO+64I5555pn4yEc+EsuXL3/HW0cxdtasWRPPPvtsdHd3R21tbZxzzjkxf/78Ec+lra0t1q1bFxFvv4XNGWecUc4v60NlsBnV1NTEL3/5y9i/f39MmzYtjjrqqPjOd74TEW//lfwf//jHqKysjAsvvDA+/elPR0TEli1b4u67747+/v4444wz4uyzzy7nl/WhM9ic1q1bF729vQP/yOS4446Liy++OCLMqVwGm9OWLVti586dUVFREQ0NDXHxxRcPvLWaY17pDTajxYsXD/z5pZdeGjfeeOPAW6uZUXkMNqdt27bFv/71r6ioqIiZM2fGxRdfPHAys1zHvAkVwwAAUEoT6jIJAAAoJTEMAEBaYhgAgLTEMAAAaYlhAADSEsMAAKQlhgEASOv/AfPPOmfRZC6uAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.drop_duplicates('iid').mn_sat.hist()"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"342"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').mn_sat.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"# Что будем делать?\n",
"df = df.drop(['mn_sat'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### tuition: \t\n",
"Tuition listed for each response to undergrad in Barron’s 25th Edition college profile book."
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"26,908.00 241\n",
"26,019.00 174\n",
"15,162.00 138\n",
"25,380.00 112\n",
"26,062.00 108\n",
"Name: tuition, dtype: int64"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tuition.value_counts().head()"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'tuition'] = df.loc[:, 'tuition'].str.replace(',', '').astype(np.float)"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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y5ble9/7Xn70ox8Nx1MBAMCQG5ZI3r59eyZPnpxJkyalqakpV111Vbq7u4fjqQAAYMgNy+kWPT09aWtrG7jd1taWl1566ahturq60tXVlSTp7OzMlClThmMpJ/b/nq7neQEAOGkj1YzDciS5qqr33NfQ0HDU7Y6OjnR2dqazs3M4lnBGue++++pewhnN/Otj9vUx+3qZf33Mvl4jOf9hieS2trbs3r174Pbu3bvT0tIyHE8FAABDblgi+eKLL85rr72WnTt35siRI9m4cWNmz549HE8FAABDrvGLX/ziF4f6Nx01alQmT56cv/iLv8i3v/3tXH311Zk7d+5QPw3vMm3atLqXcEYz//qYfX3Mvl7mXx+zr9dIzb+hOtYJxAAAcAZzxT0AACiIZAAAKAzbZak5NZ/97GdzzjnnZNSoUWlsbExnZ2f279+fZcuW5Y033siECRNyzz33pLm5OVVVZdWqVXn22Wdz9tlnZ9GiRQPn66xbty5PPvlkkuSGG27I/Pnza3xVp6+VK1dm8+bNGT9+fJYuXZokQzrvH/zgB1mxYkUOHTqUK664Irfddtt7vhbxTHWs2X/jG9/IP//zP2fcuHFJkptuuikf/vCHkySrV6/O2rVrM2rUqNx2222ZNWtWkmTLli1ZtWpV+vv7c/3112fBggVJkp07d2b58uXZv39/Lrrootx5551pavLRlyS7du3KihUr8uabb6ahoSEdHR356Ec/at8fIcebv/1/+B06dCh/8id/kiNHjqSvry9z587NwoULjzuvw4cP55FHHskPfvCDfOADH8jdd9+diRMnJjn594Tjz3/FihV54YUXMmbMmCTvtNCFF15Y32dPxWlp0aJF1Z49e46674knnqhWr15dVVVVrV69unriiSeqqqqqZ555pnrggQeq/v7+atu2bdUXvvCFqqqqat++fdVnP/vZat++fUf9mvfaunVr9fLLL1eLFy8euG8o533fffdV27Ztq/r7+6sHHnig2rx58wi/wtPXsWb/9a9/vXrqqafes+2rr75aff7zn68OHTpU7dixo/rc5z5X9fX1VX19fdXnPve56vXXX68OHz5cff7zn69effXVqqqqaunSpdV3v/vdqqqq6rHHHqu+853vjMwL+znQ09NTvfzyy1VVVdWBAwequ+66q3r11Vft+yPkePO3/w+//v7+6uDBg1VVVdXhw4erL3zhC9W2bduOO69vf/vb1WOPPVZVVVV997vfrR566KGqqgb3nnD8+T/yyCPVv/7rv75n+7o+e5xu8XOku7s78+bNS5LMmzdv4FLfTz/9dK655po0NDRkxowZeeutt9Lb25stW7bk8ssvT3Nzc5qbm3P55Zdny5Ytdb6E09all16a5ubmo+4bqnn39vbm4MGDmTFjRhoaGnLNNde4TPu7HGv2x9Pd3Z2rrroqo0ePzsSJEzN58uRs374927dvz+TJkzNp0qQ0NTXlqquuSnd3d6qqytatWwe+XWf+/Plm/y4tLS0DR2POPffcTJ06NT09Pfb9EXK8+R+P/X/oNDQ05JxzzkmS9PX1pa+vLw0NDced19NPPz1whHLu3Ln5j//4j1RVddLvCe843vyPp67PHj9zOY098MADSZLf/M3fTEdHR/bs2TNwUZaWlpbs3bs3yTuXAW9vbx94XFtbW3p6et5zefDW1taf+QHM0YZq3se6TLv34cS+853vZMOGDZk2bVp+7/d+L83Nzenp6cn06dMHtnn3Pl3O+KWXXsq+ffsyZsyYNDY2vmd7jrZz58688sorueSSS+z7NXj3/L///e/b/0dAf39/7r333rz++uv57d/+7UyaNOm483r3vtzY2JgxY8Zk3759J/2e8H/K+U+fPj3/9E//lL/5m7/J3/3d3+VXf/VX88lPfjKjR4+u7bNHJJ+mvvSlL6W1tTV79uzJn/3Zn/3M65RX7+My4Ce6n/fvZOd9rO352X7rt34rN954Y5Lk61//ev76r/86ixYtOu4sT+Y94b3efvvtLF26NLfeeuvAuYDHYt8fHuX87f8jY9SoUfnzP//zvPXWW3nwwQfzP//zP8fd9ngz9p4MXjn///7v/87NN9+c8847L0eOHMljjz2Wp556KjfeeGNtnz1OtzhNtba2JknGjx+fOXPmZPv27Rk/fnx6e3uTJL29vQP/qKOtrS27du0aeOxPLwPe2tp61OXBe3p6XB78JAzVvI91mfafvr8c23nnnZdRo0Zl1KhRuf766/Pyyy8nee8l73t6etLa2nrMGbe0tOQDH/hADhw4kL6+vqO25/8cOXIkS5cuzdVXX50rr7wyiX1/JB1r/vb/kTV27Nhceumleemll447r3fPuK+vLwcOHEhzc/NJvye810/nv2XLlrS0tKShoSGjR4/Otddem+3btyep77NHJJ+G3n777Rw8eHDg1//+7/+eCy64ILNnz8769euTJOvXr8+cOXOSJLNnz86GDRtSVVVefPHFjBkzJi0tLZk1a1aee+657N+/P/v3789zzz038K9uObGhmndLS0vOPffcvPjii6mqKhs2bHCZ9hP4aaAlyb/927/l/PPPT/LO7Ddu3JjDhw9n586dee2113LJJZfk4osvzmuvvZadO3fmyJEj2bhxY2bPnp2GhobMnDkzmzZtSvLOv4I2+/9TVVUeffTRTJ06NR//+McH7rfvj4zjzd/+P/z27t2bt956K8k737Tw/PPPZ+rUqced16/92q9l3bp1SZJNmzZl5syZaWhoOOn3hHccb/4/3fd/er73u/f9Oj57XHHvNLRjx448+OCDSd75P9bf+I3fyA033JB9+/Zl2bJl2bVrV9rb27N48eKBr2V6/PHH89xzz+Wss87KokWLcvHFFydJ1q5dm9WrVyd556tRrr322tpe1+ls+fLleeGFF7Jv376MHz8+CxcuzJw5c4Zs3i+//HJWrlyZQ4cOZdasWbn99tv96O1/HWv2W7duzX/913+loaEhEyZMyB133DFwFObJJ5/Mv/zLv2TUqFG59dZbc8UVVyRJNm/enL/6q79Kf39/rr322txwww1J3vnzVH6l0+jRo2t7vaeT73//+1myZEkuuOCCgf3xpptuyvTp0+37I+B48//e975n/x9mP/zhD7NixYr09/enqqp85CMfyY033njceR06dCiPPPJIXnnllTQ3N+fuu+/OpEmTkpz8e8Lx5/+nf/qnA/8G4pd/+Zdzxx135Jxzzqnts0ckAwBAwekWAABQEMkAAFAQyQAAUBDJAABQEMkAAFAQyQAAUBDJAABQ+P/xIq7mpcaFkQAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.drop_duplicates('iid').tuition.hist()"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"310"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').tuition.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"# Что будем делать?\n",
"df = df.drop(['tuition'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### race:\n",
"* Black/African American=1\n",
"* European/Caucasian-American=2\n",
"* Latino/Hispanic American=3\n",
"* Asian/Pacific Islander/Asian-American=4\n",
"* Native American=5\n",
"* Other=6\n"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"# Ну тут вы уже сами знаете как быть\n",
"df = pd.get_dummies(df, prefix='race', prefix_sep='=',\n",
" columns=['race'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### imprace:\n",
"How important is it to you (on a scale of 1-10) that a person you date be of the same racial/ethnic background?\n",
"\n",
"#### imprelig:\n",
" How important is it to you (on a scale of 1-10) that a person you date be of the same religious background?\n"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').imprace.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').imprelig.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [],
"source": [
"# Что делать?\n",
"\n",
"df = df.dropna(subset=['imprelig', 'imprace'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### from:\n",
"Where are you from originally (before coming to Columbia)? \n",
"\n",
"#### zipcode:\n",
"What was the zip code of the area where you grew up? \n",
"\n",
"Выкидываем"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['from', 'zipcode'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### income"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'income'] = df.loc[:, 'income'].str.replace(',', '').astype(np.float)"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.drop_duplicates('iid').loc[:, 'income'].hist()"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"261"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').loc[:, 'income'].isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['income'], axis=1)\n",
"# df.loc[:, 'income'] = df.loc[:, 'income'].fillna(-999)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### goal:\n",
" What is your primary goal in participating in this event? \n",
"\tSeemed like a fun night out=1\n",
"\tTo meet new people=2\n",
"\tTo get a date=3\n",
"\tLooking for a serious relationship=4\n",
"\tTo say I did it=5\n",
"\tOther=6\n",
"\n",
"#### date:\n",
" In general, how frequently do you go on dates? \n",
"\tSeveral times a week=1\n",
"\tTwice a week=2\n",
"\tOnce a week=3\n",
"\tTwice a month=4\n",
"\tOnce a month=5\n",
"\tSeveral times a year=6\n",
"\tAlmost never=7\n",
"\n",
"#### go out:\n",
" How often do you go out (not necessarily on dates)?\n",
"\tSeveral times a week=1\n",
"\tTwice a week=2\n",
"\tOnce a week=3\n",
"\tTwice a month=4\n",
"\tOnce a month=5\n",
"\tSeveral times a year=6\n",
"\tAlmost never=7\n",
"\n",
"Как бы вы предложили закодировать эти переменные?"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').goal.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [],
"source": [
"df = pd.get_dummies(df, prefix='goal', \n",
" prefix_sep='=', columns=['goal'])"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [],
"source": [
"df = df.dropna(subset=['date'])"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').go_out.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### career:\n",
"What is your intended career?\n",
"\n",
"#### career_c: \n",
"career coded \n",
"\n",
"Работаем аналогично field и field_cd"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"==========\n",
"Career Code 1.0\n",
"['lawyer/policy work' 'lawyer' 'Law' 'Corporate Lawyer' 'Lawyer'\n",
" 'Corporate attorney' 'law' 'Intellectual Property Attorney' 'LAWYER'\n",
" 'attorney' 'Lawyer or professional surfer' 'lawyer/gov.position'\n",
" 'Law or finance' 'IP Law' 'Academic (Law)' 'Private Equity' 'attorney?'\n",
" 'Corporate law' 'tax lawyer' 'Business/Law' 'Assistant District Attorney']\n",
"==========\n",
"Career Code 2.0\n",
"['Academia, Research, Banking, Life' 'academics or journalism' 'Professor'\n",
" 'Academic' 'academia' 'teacher' 'industrial scientist'\n",
" 'teaching and then...' 'Professor of Media Studies'\n",
" 'Education Administration' 'Academic or Research staff'\n",
" 'University Professor' 'Research Scientist'\n",
" 'research in industry or academia' 'Teacher/Professor'\n",
" 'no idea, maybe a professor' 'a research position' 'professor' 'teaching'\n",
" 'engineering professional' 'research' 'Neuroscientist/Professor'\n",
" 'Education' 'Professor and Government Official'\n",
" 'physicist, probably academia' 'college art teacher' 'academic'\n",
" 'Research scientist, professor' 'academics' 'academic research'\n",
" 'academician' 'professional student' 'education' 'Historian'\n",
" 'college professor' 'scientific research' 'Academic Physician'\n",
" 'Researcher' 'Professor or Consultant' 'History Professor'\n",
" 'Educational Policy' 'elementary school teacher' 'Research/Teaching'\n",
" 'researcher in sociology' 'scientist' 'Naturalist'\n",
" 'professor, poet/critic' 'researcher/academia' 'Art educator and Artist'\n",
" 'Teacher' 'Scientist' 'Scientist/educator'\n",
" 'scientific research for now but who knows' 'College Professor'\n",
" 'Professor or Lawyer' 'research position in pharmaceutical industry'\n",
" 'Academia' 'research/academia' 'Secondary Education Teacher'\n",
" 'High School Social Studies Teacher' 'Education Policy Analyst'\n",
" 'Literacy Organization head/ Director of Development for non-profit'\n",
" 'English Teacher' 'Program development / policy work'\n",
" 'professor of education' 'Educator' 'teaching/education'\n",
" 'professor in college' 'Academia; Research; Teaching'\n",
" 'curriculum developer' 'academic or consulting' 'Academia or UN'\n",
" 'I am a teacher.' 'Professor or journalist'\n",
" 'to get Ph.D and be a professor'\n",
" 'Early Childhood Ed. - College/univ. faculity'\n",
" 'medical examiner or researcher' 'University President'\n",
" 'EDUCATION ADMINISTRATION' 'music educator, performer'\n",
" 'Elementary Education Teaching' 'research - teaching' 'Research'\n",
" 'Elementary school teacher' 'Bilingual Elementary School Teacher'\n",
" 'Professor, or Engineer' 'Professor; Human Rights Director'\n",
" 'Clinic Trial' 'English teacher' 'writer/teacher' 'Professor...?'\n",
" 'acadeic' 'researcher' 'biology industry' 'Epidemiologist'\n",
" 'epidemiologist' 'teacher and performer' 'TEACHING' 'Academic/ Finance'\n",
" 'Science' 'Academic Work, Consultant']\n",
"==========\n",
"Career Code 3.0\n",
"['psychologist' 'Social Worker.... Clinician' 'Psychologist'\n",
" 'school psychologist' 'School Psychologist' 'Clinical Psychology'\n",
" 'Clinical Psychologist' 'clinical psychologist, researcher, professor'\n",
" 'School Counseling' 'Sex Therapist']\n",
"==========\n",
"Career Code 4.0\n",
"['Biostatistics' 'Medicine' 'pharmaceuticals' 'Cardiologist' 'Pediatrics'\n",
" 'medicine' 'pharmaceuticals and biotechnology' 'Physician Scientist'\n",
" 'health policy' 'Epidemiologist' 'nutrition and dental' 'Physician'\n",
" 'dietician' 'doctor and entrepreneur' 'Healthcare' 'Nutritionist'\n",
" 'Private practice Dietician' 'physician, informaticist' 'physician'\n",
" 'Medical Sciences' 'physician/healthcare' 'Doctor']\n",
"==========\n",
"Career Code 5.0\n",
"['Informatics' 'Engineer' 'Ph.D. Electrical Engineering'\n",
" 'Operations Research' 'Engineering' 'Mechanical Engineering'\n",
" 'Civil Engineer' 'Urban Planner' 'Planning' 'ASIC Engineer'\n",
" 'software engr, network engr' 'Research Engineer']\n",
"==========\n",
"Career Code 6.0\n",
"['Journalist' \"Clidren's TV\" 'Music production' 'comedienne' 'novelist'\n",
" 'Journalism' 'film' 'Writer' 'Porn Star' 'boxing champ'\n",
" 'Paper Back Writer'\n",
" 'Poet, Writer, Singer, Policy Maker with the UN and/or Indian Govt.'\n",
" 'Entertainment/Sports' 'WRITING' 'manage a museum or art gallery'\n",
" 'Entertainment/Media' 'Film/Television' 'Writing'\n",
" 'Museum Work (Curation?)' 'Music Industry' 'Artist' 'Art Management'\n",
" 'film directing' 'Screenwriter' 'Filmmaker' 'Writer/teacher'\n",
" 'Writing or Editorial' 'writer/editor'\n",
" 'producer at a non-profit regional theatre' 'writer' 'playing music'\n",
" 'writer/producer' 'film and radio' 'Film' 'Writer/Editor' 'Actress'\n",
" 'Acting']\n",
"==========\n",
"Career Code 7.0\n",
"['research/financial industry' 'Financial Services' 'ceo' 'CEO' 'Banking'\n",
" 'Capital Markets' 'Organizational Change Consultant' 'banker / academia'\n",
" 'banker' 'Entrepreneur' 'consulting' 'Private Equity Investing'\n",
" 'Investment Banking' 'Engineer or iBanker or consultant' 'Trading'\n",
" 'Economic research' 'Microfinancing Program Manager' 'Marketing'\n",
" 'Business - Investment Management' 'Finance' 'business'\n",
" 'Marketing, Advertising' 'Asset Management' 'investment banking' 'MBA'\n",
" 'Business' 'finance' 'Marketing and Media' 'Brand Management'\n",
" 'Management Consulting' 'management consulting'\n",
" 'financial service or fashion' 'International Business' 'Private Equity'\n",
" 'Investment Management' 'Development work' 'marketing / brand management'\n",
" 'Biotech/business' 'Country Analysis/Research/Credit Analysis'\n",
" 'Consulting' 'corporate finance'\n",
" 'CEO in For Profit Biomedical Organization' 'banking'\n",
" 'Conservation training and education' 'president' 'Management Consultant'\n",
" 'Trader' 'Wall Street Economist' 'enterpreneur' 'Industry CTO/CEO'\n",
" 'finance or engineering' 'Venture Capital/Consulting/Government'\n",
" \"Int'l Business\" 'Pharmaceuticals/Consulting' 'Investment banking'\n",
" 'International Development banker'\n",
" 'Corporate Finance, Asset Management/ Hedge Funds'\n",
" 'Real Estate Consulting' 'Director of Training and Development'\n",
" 'Marketing or Strategy and Business Development' 'Business Consulting'\n",
" 'CONSULTING' 'investment management' 'Finance Related'\n",
" 'Media Marketing/Entrepreneurship' 'Director of Admissions'\n",
" 'Consultin \\\\ Management'\n",
" 'Financial Mathematics-Investment Bank or Hedge Fund-Derivatives Quant Analyst'\n",
" 'Work in an investment bank' 'M&A Advisory' 'millionaire'\n",
" 'Fundraising for Non-Profits' 'Money Management' 'General Management'\n",
" 'Public School Principal' 'Media Management' 'Public Finance'\n",
" 'Business Management' 'private equity' 'Health care finance'\n",
" 'Entrepreneurship' 'Fixed Income Sales & Trading'\n",
" 'Consulting, later Arts or Non-Profit' 'Finance/Economics'\n",
" 'Investment Banker' 'consultant'\n",
" 'Business Management and Information Technology' 'self-made millionare'\n",
" 'To go into Finance' 'Private Equity - Leveraged Buy-Outs' 'Management'\n",
" 'General management/consulting']\n",
"==========\n",
"Career Code 8.0\n",
"['Real Estate' 'Real Estate/ Private Equity']\n",
"==========\n",
"Career Code 9.0\n",
"['Congresswoman, and comedian'\n",
" 'To create early childhood intervention programs'\n",
" 'health/nutrition oriented social worker' 'Social Worker'\n",
" 'Social work with children' 'Speech Language Pathologist'\n",
" 'Social Work Administration' 'social worker' 'Social Services/ Policy'\n",
" 'Clinical Social Worker' 'international development work' 'Nonprofit'\n",
" 'Child Rights' 'Development work on field in the middle of nowhere'\n",
" 'International Development' 'UN Civil Servant'\n",
" 'Humanitarian Affairs/Human Rights'\n",
" 'International affairs related career' 'public service'\n",
" 'Security Policy - Homeland Defense'\n",
" 'reorganizing society. no, I am not being flip.' 'Intl Development'\n",
" \"Diplomat / Int'l civil servant\" 'Diplomat/Business'\n",
" 'Economic Policy Advisor on Latin America' 'Energy Management' 'Diplomat'\n",
" 'Work at the UN' 'Foreign Service'\n",
" 'Exec. Director of social service non-profit']\n",
"==========\n",
"Career Code 10.0\n",
"['Undecided' \"I don't know\" 'What a question!' 'if only i knew'\n",
" \"don't know\" 'Not Sure' 'undecided' 'TBA' 'Am not sure' 'Who knows' '?'\n",
" 'not sure yet :)' 'Make money' 'still wondering' 'Not sure yet' 'unknown'\n",
" 'unsure' '??' 'dont know yet']\n",
"==========\n",
"Career Code 11.0\n",
"['Social Worker' 'Counseling Adolescents' 'Social work' 'Social Work'\n",
" 'Social Work Policy' 'Clinical Social Worker']\n",
"==========\n",
"Career Code 12.0\n",
"['speech pathologist' 'Speech Pathologist']\n",
"==========\n",
"Career Code 13.0\n",
"['GOVERNOR' 'Political Development in Africa' 'Lobbyist' 'politics'\n",
" 'School Leadership/Politics']\n",
"==========\n",
"Career Code 14.0\n",
"['Pro Beach Volleyball']\n",
"==========\n",
"Career Code 15.0\n",
"['Hero' 'Energy' 'Trade Specialist' 'professional career'\n",
" \"assistant master of the universe (otherwise it's too much work)\"]\n",
"==========\n",
"Career Code 16.0\n",
"['journalism' 'Writer/journalist']\n",
"==========\n",
"Career Code 17.0\n",
"['Architecture and design']\n"
]
}
],
"source": [
"for i, group in df.groupby('career_c'):\n",
" print('=' * 10)\n",
" print('Career Code {}'.format(i))\n",
" print(group.career.unique())"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"59"
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.career_c.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'career_c'] = df.loc[:, 'career_c'].fillna(18)"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['career'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [],
"source": [
"# Теперь это надо закодировать\n",
"df = pd.get_dummies(df, prefix='career', prefix_sep='=',\n",
" columns=['career_c'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How interested are you in the following activities, on a scale of 1-10?\n",
" \n",
" sports: Playing sports/ athletics\n",
" tvsports: Watching sports\n",
" excersice: Body building/exercising\n",
" dining: Dining out\n",
" museums: Museums/galleries\n",
" art: Art\n",
" hiking: Hiking/camping\n",
" gaming: Gaming\n",
" clubbing: Dancing/clubbing\n",
" reading: Reading\n",
" tv: Watching TV\n",
" theater: Theater\n",
" movies: Movies\n",
" concerts: Going to concerts\n",
" music: Music\n",
" shopping: Shopping\n",
" yoga: Yoga/meditation\n",
"\n",
"По большому счету с этими признаками можно придумать много чего.. Например у нас уже есть признак, который считает корреляцию между интересами пар. Пока мы все их выкинем"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sports 0\n",
"tvsports 0\n",
"exercise 0\n",
"dining 0\n",
"museums 0\n",
"art 0\n",
"hiking 0\n",
"gaming 0\n",
"clubbing 0\n",
"reading 0\n",
"tv 0\n",
"theater 0\n",
"movies 0\n",
"concerts 0\n",
"music 0\n",
"shopping 0\n",
"yoga 0\n",
"dtype: int64"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[:, ['sports','tvsports','exercise','dining','museums','art','hiking','gaming',\n",
" 'clubbing','reading','tv','theater','movies','concerts','music','shopping','yoga']\n",
" ].isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['sports','tvsports','exercise','dining','museums','art','hiking','gaming',\n",
" 'clubbing','reading','tv','theater','movies','concerts','music','shopping','yoga'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### exphappy:\n",
"Overall, on a scale of 1-10, how happy do you expect to be with the people you meet \n",
"during the speed-dating event?\n",
"\n",
"#### expnum: \n",
"Out of the 20 people you will meet, how many do you expect will be interested in dating you? \n"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').exphappy.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"416"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.drop_duplicates('iid').expnum.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['expnum'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Attr1\n",
"\n",
"We want to know what you look for in the opposite sex. \n",
"Waves 6-9: Please rate the importance of the following attributes in a potential date on a scale of 1-10 (1=not at all important, 10=extremely important):\n",
"Waves 1-5, 10-21: You have 100 points to distribute among the following attributes -- give more points to those attributes that are more important in a potential date, and fewer points to those attributes that are less important in a potential date. Total points must equal 100.\n",
"\n",
"attr1_1 \n",
"Attractive\n",
"\n",
"sinc1_1\n",
"Sincere\n",
"\n",
"intel1_1\n",
"Intelligent\n",
"\n",
"fun1_1\n",
"Fun\n",
"\n",
"amb1_1\n",
"Ambitious\n",
"\n",
"shar1_1\n",
"Has shared interests/hobbies\n"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [],
"source": [
"feat = ['iid', 'wave', 'attr1_1', 'sinc1_1', 'intel1_1', 'fun1_1', 'amb1_1', 'shar1_1']"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [],
"source": [
"temp = df.drop_duplicates(subset=['iid', 'wave']).loc[:, feat]"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [],
"source": [
"temp.loc[:, 'totalsum'] = temp.iloc[:, 2:].sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [],
"source": [
"idx = ((temp.wave < 6) | (temp.wave > 9)) & (temp.totalsum < 99)"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" iid | \n",
" wave | \n",
" attr1_1 | \n",
" sinc1_1 | \n",
" intel1_1 | \n",
" fun1_1 | \n",
" amb1_1 | \n",
" shar1_1 | \n",
" totalsum | \n",
"
\n",
" \n",
" \n",
" \n",
" 918 | \n",
" 67 | \n",
" 3 | \n",
" 20.0 | \n",
" 15.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 5.0 | \n",
" 10.0 | \n",
" 90.0 | \n",
"
\n",
" \n",
" 1530 | \n",
" 105 | \n",
" 4 | \n",
" 30.0 | \n",
" 15.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 0.0 | \n",
" 5.0 | \n",
" 90.0 | \n",
"
\n",
" \n",
" 7221 | \n",
" 489 | \n",
" 19 | \n",
" 20.0 | \n",
" 10.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 0.0 | \n",
" 90.0 | \n",
"
\n",
" \n",
" 7586 | \n",
" 517 | \n",
" 21 | \n",
" 15.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 20.0 | \n",
" 5.0 | \n",
" 10.0 | \n",
" 90.0 | \n",
"
\n",
" \n",
" 7784 | \n",
" 526 | \n",
" 21 | \n",
" 10.0 | \n",
" 10.0 | \n",
" 30.0 | \n",
" 20.0 | \n",
" 10.0 | \n",
" 15.0 | \n",
" 95.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" iid wave attr1_1 sinc1_1 intel1_1 fun1_1 amb1_1 shar1_1 totalsum\n",
"918 67 3 20.0 15.0 20.0 20.0 5.0 10.0 90.0\n",
"1530 105 4 30.0 15.0 20.0 20.0 0.0 5.0 90.0\n",
"7221 489 19 20.0 10.0 20.0 20.0 20.0 0.0 90.0\n",
"7586 517 21 15.0 20.0 20.0 20.0 5.0 10.0 90.0\n",
"7784 526 21 10.0 10.0 30.0 20.0 10.0 15.0 95.0"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp.loc[idx, ]"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"idx = ((temp.wave >= 6) & (temp.wave <= 9))"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [],
"source": [
"# temp.loc[idx, ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ну понятно, надо чутка подредактировать исходные признаки и в бой"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'temp_totalsum'] = df.loc[:, ['attr1_1', 'sinc1_1', 'intel1_1', 'fun1_1', 'amb1_1', 'shar1_1']].sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, ['attr1_1', 'sinc1_1', 'intel1_1', 'fun1_1', 'amb1_1', 'shar1_1']] = \\\n",
"(df.loc[:, ['attr1_1', 'sinc1_1', 'intel1_1', 'fun1_1', 'amb1_1', 'shar1_1']].T/df.loc[:, 'temp_totalsum'].T).T * 100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Проведите аналогичную работу для признаков `attr2`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Attr2"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [],
"source": [
"feat = ['iid', 'wave', 'attr2_1', 'sinc2_1', 'intel2_1', 'fun2_1', 'amb2_1', 'shar2_1']"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [],
"source": [
"temp = df.drop_duplicates(subset=['iid', 'wave']).loc[:, feat]"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [],
"source": [
"temp.loc[:, 'totalsum'] = temp.iloc[:, 2:].sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [],
"source": [
"idx = ((temp.wave < 6) | (temp.wave > 9)) & (temp.totalsum < 90) & (temp.totalsum != 0)"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" iid | \n",
" wave | \n",
" attr2_1 | \n",
" sinc2_1 | \n",
" intel2_1 | \n",
" fun2_1 | \n",
" amb2_1 | \n",
" shar2_1 | \n",
" totalsum | \n",
"
\n",
" \n",
" \n",
" \n",
" 4816 | \n",
" 320 | \n",
" 12 | \n",
" 20.0 | \n",
" 10.0 | \n",
" 10.0 | \n",
" 10.0 | \n",
" 20.0 | \n",
" 10.0 | \n",
" 80.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" iid wave attr2_1 sinc2_1 intel2_1 fun2_1 amb2_1 shar2_1 totalsum\n",
"4816 320 12 20.0 10.0 10.0 10.0 20.0 10.0 80.0"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp.loc[idx, ]"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"idx = ((temp.wave >= 6) & (temp.wave <= 9))"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [],
"source": [
"# temp.loc[idx, ]"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, 'temp_totalsum'] = df.loc[:, ['attr2_1', 'sinc2_1', 'intel2_1', 'fun2_1', 'amb2_1', 'shar2_1']].sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {},
"outputs": [],
"source": [
"df.loc[:, ['attr2_1', 'sinc2_1', 'intel2_1', 'fun2_1', 'amb2_1', 'shar2_1']] = \\\n",
"(df.loc[:, ['attr2_1', 'sinc2_1', 'intel2_1', 'fun2_1', 'amb2_1', 'shar2_1']].T/df.loc[:, 'temp_totalsum'].T).T * 100"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['temp_totalsum'], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Признаки `attr4` и `attr5` пока выбросим"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"for i in [4, 5]:\n",
" feat = ['attr{}_1'.format(i), 'sinc{}_1'.format(i), \n",
" 'intel{}_1'.format(i), 'fun{}_1'.format(i), \n",
" 'amb{}_1'.format(i), 'shar{}_1'.format(i)]\n",
" \n",
" if i != 4:\n",
" feat.remove('shar{}_1'.format(i))\n",
" \n",
" df = df.drop(feat, axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Теперь создалим таблицу с мужчинами, таблицу с женщинами с сджоиним их"
]
},
{
"cell_type": "code",
"execution_count": 158,
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['wave'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8249, 77)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [],
"source": [
"df_male = df.query('gender == 1').drop_duplicates(subset=['iid', 'pid'])\\\n",
" .drop(['gender'], axis=1)\\\n",
" .dropna()\n",
"df_female = df.query('gender == 0').drop_duplicates(subset=['iid'])\\\n",
" .drop(['gender', 'match', 'int_corr', 'samerace'], axis=1)\\\n",
" .dropna()\n",
" \n",
"df_female.columns = df_female.columns + '_f'"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [],
"source": [
"df_pair = df_male.join(df_female.set_index('iid_f'), \n",
" on='pid', how='inner')"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3999, 148)"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_pair.shape"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 3345\n",
"1 654\n",
"Name: match, dtype: int64"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_pair.match.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {},
"outputs": [],
"source": [
"label_col = 'match'"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {},
"outputs": [],
"source": [
"df_pair = df_pair.drop(['iid', 'pid'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [],
"source": [
"X = df_pair.loc[:, df_pair.columns != label_col].values\n",
"y = df_pair.loc[:, df_pair.columns == label_col].values.flatten()"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 1, 1, 1, 0, 0, 0, 1, 0])"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y[:10]"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.14, 0. , 27. , ..., 0. , 0. , 1. ],\n",
" [ 0.54, 0. , 22. , ..., 0. , 0. , 1. ],\n",
" [ 0.16, 1. , 22. , ..., 0. , 0. , 1. ],\n",
" ...,\n",
" [ 0.5 , 0. , 27. , ..., 0. , 0. , 1. ],\n",
" [ 0.28, 0. , 28. , ..., 0. , 0. , 1. ],\n",
" [-0.36, 0. , 24. , ..., 0. , 0. , 1. ]])"
]
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X[:10]"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3999, 145)"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.shape"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,\n",
" random_state=123)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Задание\n",
"\n",
"Сфокусируемся на одном гиперпараметре деревьев решений - максимальной глубине.\n",
"\n",
"Подберите наилучшую глубину `d` дерева с помошью \n",
"* Усредненной оценки качества roc-auc на кросс-валидации при различных `d`"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.tree import DecisionTreeClassifier\n",
"\n",
"try:\n",
" from sklearn.model_selection import cross_val_score\n",
"except ImportError:\n",
" from sklearn.cross_validation import cross_val_score\n",
"\n",
"try:\n",
" from sklearn.model_selection import validation_curve\n",
"except ImportError:\n",
" from sklearn.learning_curve import validation_curve"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight='balanced', criterion='gini', max_depth=2,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.0, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
" splitter='best')"
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = DecisionTreeClassifier(max_depth=2, class_weight='balanced')\n",
"model.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [],
"source": [
"y_hat = model.predict(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 1, ..., 0, 1, 1])"
]
},
"execution_count": 175,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_hat"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [],
"source": [
"y_hat_proba = model.predict_proba(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.55207836, 0.44792164],\n",
" [0.55207836, 0.44792164],\n",
" [0.39504568, 0.60495432],\n",
" [0.39504568, 0.60495432],\n",
" [0.55207836, 0.44792164],\n",
" [0.39504568, 0.60495432],\n",
" [0.39504568, 0.60495432],\n",
" [0.39504568, 0.60495432],\n",
" [0.39504568, 0.60495432],\n",
" [0.55207836, 0.44792164]])"
]
},
"execution_count": 177,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_hat_proba[:10]"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {},
"outputs": [],
"source": [
"scores = []\n",
"cv = \n",
"for d in range(1, 20):\n",
" model = DecisionTreeClassifier(max_depth=d, class_weight='balanced')\n",
" scores.append(\n",
" cross_val_score(model, X_train, y_train, scoring='roc_auc', \n",
" cv=5, n_jobs=-1).mean()\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 185,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"